python - 接收组播: Does TTL matter?

标签 python sockets udp multicast ttl

加入多播组时,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/

相关文章:

node.js - 将 Socket.io 流连接到 Node repl 流

kubernetes - cloudflared 出现 "failed to sufficiently increase receive buffer size"错误

python - 为什么我可以将实例方法传递给 multiprocessing.Process,而不是 multiprocessing.Pool?

python - 如何在 Keras 中创建自定义回调?

python - 将输入列表中的字典元素附加到元组列表

sockets - GIO 套接字服务器/客户端示例

google-chrome - Websocket 连接错误 资源不足

linux - 在哪里可以找到 UDP 的 Linux 实现的源代码?

c# - 在 C# 中关闭/解除绑定(bind) UDP 套接字

python - 导入错误:DLL failed when using scrapy in command prompt