我的两台主机位于同一以太网段。主机A是10.1.0.1/16
,主持人乙是10.1.0.2/16
。A发送定向 UDP 广播,10.1.255.255
并将 UDP 侦听套接字绑定INADDR_ANY
到乙接收他们。
在我更改 IP 配置后A使其10.0.0.1/16
属于不同的 IP 子网并开始向10.0.255.255
同一套接字广播乙 仍然收到這次監視。
如果我重新启动监听应用程序乙,这些广播到“错误”子网是套接字不再接收。
问题:为什么乙不丢弃数据包,该数据包既不是单播数据包,乙也不是广播到子网乙,直到套接字关闭?
我知道 RFC1122说:
Hosts SHOULD use the Limited Broadcast address to broadcast to a connected network.
我理解A发送导演广播的目的是广播到自己的子网,这不符合“应该”条款。但我的问题是为什么乙只要 UDP 套接字还处于活动状态,就不会丢弃它们。
我在 Linux 内核 4.4 和 3.13 上观察到了这种行为。