As transmissões direcionadas para outra sub-rede IP que não a própria são recebidas até o desligamento do soquete - por quê?

As transmissões direcionadas para outra sub-rede IP que não a própria são recebidas até o desligamento do soquete - por quê?

Meus dois hosts residem no mesmo segmento Ethernet. HospedarAé 10.1.0.1/16, anfitriãoBé 10.1.0.2/16.Aenvia transmissões UDP direcionadas para 10.1.255.255um soquete de escuta UDP vinculado INADDR_ANYaBos recebe.

Depois de alterar a configuração de IP emApara 10.0.0.1/16que ele pertença a uma sub-rede IP diferente e comece a transmitir para 10.0.255.255esse mesmo soquete emB ainda recebeesta transmissão.

Se eu reiniciar o aplicativo de escuta emB, essas transmissões para uma sub-rede "errada" sãonão é mais recebido pelo soquete.

Pergunta: por que a pilha de redes deBnão descarta o pacote, que não é unicast paraBnem uma transmissão para a sub-rede deB, até o desligamento do soquete?

Eu sei que RFC1122diz:

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

Entendo que o aplicativo emAenviandodirigidotransmissões com a intenção de transmitir para a própria sub-rede não seguem a cláusula "deveria". Mas minha pergunta é por queBnão os descarta enquanto o soquete UDP estiver ativo.

Observei esse comportamento nos kernels Linux 4.4 e 3.13.

informação relacionada