Gerichtete Broadcasts an andere als das eigene IP-Subnetz werden bis zum Herunterfahren des Sockets empfangen – warum?

Gerichtete Broadcasts an andere als das eigene IP-Subnetz werden bis zum Herunterfahren des Sockets empfangen – warum?

Meine beiden Hosts befinden sich im selben Ethernet-Segment. HostAist 10.1.0.1/16, GastgeberBIst 10.1.0.2/16.Asendet gezielte UDP-Broadcasts an 10.1.255.255und einen an gebundenen UDP-Listening-Socket INADDR_ANYanBempfängt sie.

Nachdem ich die IP-Konfiguration geändert habe aufAso 10.0.0.1/16dass es zu einem anderen IP-Subnetz gehört und beginnt zu senden 10.0.255.255, an denselben Socket aufB erhält nochdiese Sendung.

Wenn ich die Abhöranwendung neu starte aufB, diese Broadcasts an ein "falsches" Subnetz sindwird vom Socket nicht mehr empfangen.

Frage: Warum der Netzwerk-Stack vonBverwirft das Paket nicht, es ist weder ein Unicast anBnoch ein Broadcast an das Subnetz vonB, bis zum Herunterfahren des Sockets?

Ich weiß, dass RFC1122sagt:

Hosts SHOULD use the Limited Broadcast address to broadcast to a connected network.

Ich verstehe, dass die Anwendung aufAVersendunggerichtetBroadcasts mit der Absicht, in das eigene Subnetz zu senden, folgen nicht der "sollte"-Klausel. Aber meine Frage ist, warumBverwirft sie nicht, solange der UDP-Socket aktiv ist.

Ich habe dieses Verhalten bei den Linux-Kerneln 4.4 und 3.13 beobachtet.

verwandte Informationen