
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.255
und einen an gebundenen UDP-Listening-Socket INADDR_ANY
anBempfängt sie.
Nachdem ich die IP-Konfiguration geändert habe aufAso 10.0.0.1/16
dass 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.