As transmissões direcionadas para outra sub-rede IP são recebidas até o encerramento do soquete - por quê?

2

Meus dois hosts residem no mesmo segmento de Ethernet. O host A é 10.1.0.1/16 , o host B é 10.1.0.2/16 . Um envia broadcasts UDP direcionados para 10.1.255.255 e um soquete de escuta UDP vinculado a INADDR_ANY em B os recebe.

Depois de alterar a configuração de IP em A para 10.0.0.1/16 para que ela pertença a uma sub-rede IP diferente e comece a transmitir para 10.0.255.255 , o mesmo soquete em B ainda recebe esta transmissão.

Se eu reiniciar o aplicativo de escuta em B , essas transmissões para uma sub-rede "errada" não serão mais recebidas pelo soquete .

Pergunta: por que a pilha de rede de B não elimina o pacote, que não é unicast para B nem uma transmissão para a sub-rede de B , até o encerramento do soquete?

Eu sei que o RFC1122 diz :

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

Eu entendo que o aplicativo em transmissões A enviando direcionado com a intenção de transmitir para a própria sub-rede não segue a cláusula "should". Mas a minha pergunta é por que B não os elimina enquanto o soquete UDP estiver ativo.

Eu observei esse comportamento nos kernels 4.4 e 3.13 do Linux.

    
por Konstantin Shemyak 13.08.2017 / 11:56

0 respostas