什么是多播端口号?

4
我在使用C# .NET框架的Socket类将套接字绑定到多播IP地址时遇到了一些问题。在微软的文档(见下面的链接)中,他们警告说:“如果您打算接收多播数据报,则必须使用多播端口号调用Bind方法。”我不认为端口号是多播/单播/广播特定的。你知道微软这句话的意思吗?

https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.bind(v=vs.110).aspx


多播必须使用UDP,而UDP使用端口号作为它的地址。即使是在多播的情况下,一个进程也会绑定到特定的UDP端口号上。 - Ron Maupin
2个回答

3
多播地址包括特定的IP地址和端口号。这与我们传统上认为的机器(客户端或服务器)的IP地址不同,后者是单播协议的一部分。
在IPv4中,多播地址为224.n.n.n至239.n.n.n。
基本上,地址的前4位是1110。
其中有特定的子范围,用于定义目的。
您需要选择一个没有其他应用程序使用的地址和端口。您可能希望使用239.n.n.n范围内的地址,因为该范围保留用于“行政范围”,这基本上意味着“留在我的网络上”(尽管网络工程师可能会对此描述感到不安)。
以下是一个示例,显示客户端和服务器的连接: http://www.jarloo.com/c-udp-multicasting-tutorial/ (代码格式在中间失败,服务器的结尾和客户端的开头合并在一起,其中一些内容应该是文本,但您可以解决这个问题)。

他们都连接到同一个IP地址和端口。

此页面有一个图示,其中前四位为1110,链接到IPv6多播讨论:http://www.tcpipguide.com/free/t_IPMulticastAddressing.htm(还有关于单播的大量信息,这是大多数互联网流量的形式)。

当然,维基百科也有一些讨论。
https://en.wikipedia.org/wiki/Multicast_address


我理解什么是多播地址,但是微软所说的“多播端口号”是什么意思?他们似乎在暗示只有某些端口号可以用于多播地址。 - Ryan
@Ryan,端口号是第四层协议的地址,与多播(IP,第三层)地址实际上没有关系。如果您用于多播的第四层协议是UDP(常用),则UDP需要一个端口号。UDP不知道您是在使用单播、广播还是多播。 - Ron Maupin
3
我明白了,但是微软所说的“多播端口号”是什么意思呢? - Ryan

-1
如果多播连接支持UDP,则多播端口应设置为4003。 我能想到“多播端口”区别的唯一原因是,如果打开了某种协议的套接字连接而不是UDP或TCP,则需要针对同一远程主机进行TCP / UDP多播连接。

1
多播使用UDP,但不能使用TCP,因为TCP在恰好两个主机之间创建连接,而多播将流量发送到多个主机。多播使用UDP,因为UDP是无连接的。 - Ron Maupin
@RonMaupin 您是正确的,我忘记了,我会编辑我的答案。谢谢! - yamex5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接