加入多播组时,IP_MULTICAST_TTL 在接收数据报时有何作用?
Multicast in Python接收端的 TTL 为 32(IP_MULTICAST_LOOP 为 1)的答案之一,但我很难弄清楚原因。
我正在阅读Multicast Programming我不明白为什么接收器需要TTL和LOOP。
当你收到多播时,我以为你只是告诉内核加入多播组 然后它将绑定(bind)数据发送到的端口。
作为接收者,接收组播时是否也将数据发送出去?这就是接收时设置IP_MULTICAST_TTL和IP_MULTICAST_LOOP的原因吗?您可以通过加入多播组来影响网络吗?
谢谢
最佳答案
它本身不会阻止您接收多播消息,但可能会影响您加入多播组时发出的 IGMP 消息的到达范围(通过使用 IP_ADD_MEMBERSHIP 标志调用 setsockopt 来发送该消息) )。
因此,如果有上游路由器正在加入多播网络,如果 TTL 太低,它可能无法收到您的加入请求。如果中间路由器不知道您已加入该组,则后续传入您加入的地址的多播消息可能不会路由给您。
如果您不发送任何内容,则 LOOP 选项不相关。
关于python - 接收组播: Does TTL matter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24876470/