加入多播组时,IP_MULTICAST_TTL在 receiving datagrams时有什么影响?
Multicast in Python的答案之一是接收端的TTL为32(而IP_MULTICAST_LOOP为1),但我很难搞清楚原因 .
我正在阅读Multicast Programming,我不明白为什么 receiver 需要TTL和LOOP .
当您收到多播时,我认为您只是告诉内核加入多播组,然后它将绑定发送数据的端口 .
作为接收者,您是否也在接收多播时发送数据?这是接收时设置IP_MULTICAST_TTL和IP_MULTICAST_LOOP的原因吗?您是否可以通过加入多播组来影响网络?
谢谢
1 回答
它不会阻止您本身接收多播消息,但它可能会影响您加入mcast组时发送的IGMP消息的范围(由于使用IP_ADD_MEMBERSHIP标志调用setsockopt而发送) .
因此,如果有一个参与多播网络的上游路由器,如果TTL太低,它可能不会收到您的加入请求 . 如果中间路由器不知道您已加入该组,则后续传入的组播消息可能无法路由到您的联接地址 .
如果您不发送任何内容,则LOOP选项无关紧要 .