接收组播:TTL是否重要?

时间:2014-07-21 23:22:14

标签: python sockets udp multicast ttl

加入多播组时,当接收数据报时,IP_MULTICAST_TTL会有什么影响?

Multicast in Python的答案之一是接收端的TTL为32(而IP_MULTICAST_LOOP为1),但我很难搞清楚原因。

我正在阅读Multicast Programming,我不明白为什么TTL和LOOP对于接收器是必要的。

当您收到多播时,我认为您只是告诉内核加入多播组 然后它将绑定正在发送数据的端口。

作为接收者,您是否也在接收多播时发送数据?这是接收时设置IP_MULTICAST_TTL和IP_MULTICAST_LOOP的原因吗?您是否可以通过加入多播组来影响网络?

由于

1 个答案:

答案 0 :(得分:1)

它不会阻止您本身接收多播消息,但它可能会影响您加入mcast组时发送的IGMP消息的范围(由于使用IP_ADD_MEMBERSHIP标志调用setsockopt而发送的消息) )。

因此,如果有一个参与多播网络的上游路由器,如果TTL太低,它可能不会收到您的加入请求。如果中间路由器不知道您已加入该组,则可能无法将后续传入的组播消息路由到您的联接地址。

如果您不发送任何内容,则LOOP选项无关紧要。