【问题标题】:What is a multicast port number?什么是组播端口号?
【发布时间】:2017-06-23 23:47:49
【问题描述】:

在尝试将套接字绑定到多播 IP 地址时,我在使用 C# .NET 框架套接字类时遇到了一些问题。在 Microsoft 的 Bind() 方法文档(见下面的链接)中,他们警告说“如果您打算接收多播数据报,则必须使用多播端口号调用 Bind 方法。”

我不认为端口号是特定于多播/单播/广播的。你知道微软的意思吗?

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

【问题讨论】:

  • 组播必须使用 UDP,而 UDP 使用端口号作为其地址。一个进程将绑定到一个特定的 UDP 端口号,即使对于多播也是如此。

标签: c# sockets networking


【解决方案1】:

多播地址包含特定的 IP。地址和端口号。这不是我们传统上对 i.p. 的看法。机器(客户端或服务器)的地址,它是单播协议的一部分。

在 IPV4 术语中,多播地址是 224.n.n.n 到 239.n.n.n

基本上地址的前4位是1110

其中有特定的子范围用于定义的目的。

您基本上选择了没有其他应用程序使用的地址和端口。您可能希望使用 239.nnn 范围内的地址,因为它是为“管理范围”保留的 - 这基本上是“留在我的网络上”(尽管网络工程师可能会适合这种描述)。

这是一个示例,它显示了客户端和服务器的连接: 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,端口号是第4层协议的地址,与组播(IP,第3层)地址无关。如果您用于多播的第 4 层协议是 UDP(通用),那么 UDP 需要一个端口号。 UDP 不知道您使用的是单播、广播还是多播。
  • 我就是这么想的。但微软所说的“多播端口号”是什么意思?
【解决方案2】:

如果多播连接支持 UDP,则多播端口应设置为 4003。 我能想到“多播端口”区别的唯一原因是,如果为 UDP 或 TCP 以外的某些协议打开了套接字连接,但同一远程主机需要 TCP/UDP 多播连接。

【讨论】:

  • 多播使用 UDP,但它不能使用 TCP,因为 TCP 在两个主机之间创建连接,而多播将流量发送到多个主机。多播使用 UDP,因为 UDP 是无连接的。
  • @RonMaupin 你是对的,我忘记了,我会编辑我的答案。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-29
  • 2012-01-15
  • 2020-10-12
  • 2011-09-10
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多