在套接字關閉之前,會接收到自己的 IP 子網路以外的定向廣播 - 為什麼?

在套接字關閉之前,會接收到自己的 IP 子網路以外的定向廣播 - 為什麼?

我的兩台主機位於同一乙太網路段。主持人A10.1.0.1/16, 主機10.1.0.2/16A發送定向 UDP 廣播並綁定到10.1.255.255UDP 偵聽套接字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 上觀察到了這種行為。

相關內容