Направленные широковещательные рассылки, отличные от собственной IP-подсети, принимаются до отключения сокета - почему?

Мои два хоста находятся в одном и том же сегменте Ethernet. Хост А является 10.1.0.1/16 хост B 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 тот же сокет на B все еще получает эту трансляцию.

Если я перезапущу прослушивающее приложение на B, эти трансляции в "неправильную" подсеть больше не будут приниматься сокетом.

Вопрос: почему сетевой стек B не сбрасывает пакет, который не является ни одноадресной передачей B, ни широковещательной рассылкой подсети B, пока не будет отключен сокет?

Я знаю, что RFC1122 говорит:

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

Я понимаю, что заявка на отправку направленных трансляций с намерением транслировать в собственную подсеть не соответствует условию "должен". Но мой вопрос заключается в том, почему B не удаляет их, пока работает сокет UDP.

Я наблюдал такое поведение на ядрах Linux 4.4 и 3.13.

0 ответов

Другие вопросы по тегам