
내 두 호스트는 동일한 이더넷 세그먼트에 있습니다. 주인ㅏ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.
나는 신청서가ㅏ배상감독자체 서브넷으로 브로드캐스트하려는 의도로 브로드캐스트하는 경우 "should" 절을 따르지 않습니다. 하지만 내 질문은 왜비UDP 소켓이 살아 있는 한 삭제되지 않습니다.
Linux 커널 4.4 및 3.13에서 이 동작을 관찰했습니다.