Мои два хоста находятся в одном и том же сегменте Ethernet. хозяин является 10.1.0.1/16
хост В является 10.1.0.2/16
, отправляет направленные UDP-трансляции на 10.1.255.255
и сокет прослушивания UDP, связанный с INADDR_ANY
на В получает их.
После того, как я меняю конфигурацию IP на в 10.0.0.1/16
так что он принадлежит другой подсети IP и начинает вещание на 10.0.255.255
та же розетка на В все еще получает эта трансляция.
Если я перезапущу приложение прослушивания на В эти трансляции в «неправильную» подсеть больше не принимается сокетом ,
Вопрос: почему сетевой стек В не отбрасывает пакет, который не является ни одноадресным В ни трансляция в подсеть В До отключения розетки?
Я знаю, что RFC1122 говорит :
Hosts SHOULD use the Limited Broadcast address to broadcast to a connected network.
Я понимаю, что приложение на отправка направленный широковещательная рассылка с намерением вещать в собственную подсеть не следует условию «должен». Но мой вопрос почему В не удаляет их, пока работает сокет UDP.
Я наблюдал такое поведение на ядрах Linux 4.4 и 3.13.
источник