我正在电脑上尝试发送方和接收方多播 c# 程序。如何检查我的路由器是否阻止多播?即组成员是否从 224.0.0.1 接收数据包。
答案1
IPv4 路由器必需的不要将多播转发到 224.0.0.1。这是“所有主机”多播地址。该地址不是可路由的多播地址。请参阅RFC 3171,“IANA IPv4 多播地址分配指南”。不允许脱离当前数据链路层(第 2 层)网络。否则,在 ping 它时,您实际上是在 ping 整个互联网上所有支持 IPv4 的主机,并立即使用所有 ping 回复对自己进行 DDOS 攻击。:-)
在开发应用程序时,我认为您可能希望使用“管理范围的 IP 多播”地址 (239/8)。请参阅RFC 2365。读者须知:我当然不是 IPv4 多播路由方面的专家。
如果您使用的是外行术语而不是精确的网络术语,并且您称之为“路由器”的网络设备实际上只是以太网桥/交换机而不是 IPv4 路由器,那么它确实会在端口之间转发它,因为这就是以太网桥/交换机需要做的事情。因为在以太网层,目标 MAC 地址将设置多播位。
如果您正在处理 802.11 (Wi-Fi),请注意 802.11 是一种数据链路层协议,基本上是无线以太网。将无线以太网连接到有线以太网的设备在技术上称为“接入点”或 AP。AP 可以是有线和无线以太网之间的简单链路层桥接器。因此,一些人们通俗地称为“无线路由器”的设备可能实际上只是一个桥接 AP,而不是路由器,具体取决于您的设置方式。
但是如果你有一个配置为 IPv4 NAT 网关的“无线路由器”,那么可以将其视为路由器,因为 NAT 网关几乎可以完成简单 IPv4 路由器可以做的所有事情,加它采用一些高层技巧,使来自 LAN 端、私有子网主机的流量看起来好像是来自网关的一个 WAN 端、可公开路由的 IP 地址。但即使它是 NAT 网关,它也不应该从 LAN 到 WAN 或 WAN 到 LAN 转发 224.0.0.1 的数据包。
答案2
硬件问题:
检查品牌、型号和文档,确保硬件支持多播。假设这不是硬件问题,请检查接入点/交换机/网关/“流量传递闪烁框”的配置...
诊断:
作为 C# 用户,您可能需要将我的 Mac/Unix 命令/响应转换到 Windows 环境......
> ifconfig
当我从我家跑步时,我得到:
... en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ...
这是有道理的,因为我在家里通过无线连接使用 zeroconf、mDNS、Bonjour 服务等。当我在共享办公空间执行相同操作时,zeroconf 功能都不起作用,我还注意到该ifconfig
命令排除了多播标志。
... en1: flags=963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX> mtu 1500 ....
对于网关管理员
登录接入点并尝试启用多播。如果您使用的是面向消费者的“路由器”,您可能需要深入了解高级选项卡(时代华纳的 PDF 示例。请务必搜索“mulitcast”)