我正在使用this code来试验多播。
我在局域网中的另一台PC上运行wireshark,我正在尝试查看通过网络发送的数据包。
如果将数据包发送到IP地址224.0.0.1
,则会正确接收这些数据包,如果我将数据包发送到地址239.255.255.250
则不会。
我在路由表中有这个条目
224.0.0.0/4 dev eth0.100 src 192.0.0.1
我知道192.0.0.1看起来很奇怪,但它是正确的接口地址
你知道为什么没有发送数据包吗?
答案 0 :(得分:0)
您尝试捕获多播流量的PC很可能启用了多播过滤,但未启用239.255.255.250组的接收。
任何通信多播的主机设备都会加入224.0.0.1(所有主机组),因此发送到该组的数据包会通过过滤器,但不会发送到239.255.255.250的数据包。
多播过滤通常在网络接口中实现,并且未通过过滤器的接收帧将被丢弃在硬件中,而不是传递给内核驱动程序。如果帧没有传递给内核,那么Wireshark无法捕获它们。
您可以使用 netstat 验证每个接口的活动多播组。我假设你使用的是Linux系统,因为你用“Linux”标记了这个问题
netstat -g
当套接字启用IP_ADD_MEMBERSHIP套接字选项时,将加入多播组。要在捕获设备上加入组,您需要一个程序来创建套接字并使用IP_ADD_MEMBERSHIP套接字选项加入组播组
答案 1 :(得分:0)
在switched LAN
的案例中添加Joel Cunningham的回答:
239.255.255.250
没有收听多播,因此没有发送IGMP
个联接。因此,交换机不会将这些组播帧传播到您拥有wireshark(1)
运行PC的端口。
同样,226.0.0.1
为well known
,并且始终由所有主机加入。