Por que o ping recebe outro pacote de comandos ping?

3

Estou aprendendo sobre a implementação do ping em C. O problema é que eu estava usando um soquete bruto para receber o pacote. Para todos os pacotes, temos um valor de identificação em ICMP header .

Eu estava executando o ping em vários terminais.

Por exemplo, eu estava executando três ping google.com em três terminais.

Para o primeiro ping, o valor de identificação é 23456, o segundo valor de identificação do ping é 34564 e o terceiro valor de identificação do ping é 98763.

Meu problema é que o segundo ping tem que receber a identificação com o pacote 34564, mas ele recebe o valor de identificação como 23456.

Para cada ping, o novo soquete bruto está criando. Mas recebe outro pacote de ping.

Alguém por favor pode me explicar, por que ele recebe outro pacote de ping?

    
por Rahul 05.05.2016 / 06:19

1 resposta

3

Basicamente, o socket bruto irá capturar todos os pacotes ICMP. O número interno que você cita é exatamente para identificar os pacotes do processo atual. Não há nenhum número de porta no ICMP para permitir a demultiplexação por soquete pela pilha de protocolos.

Para responder ao seu comentário, se o pacote foi recebido, não foi perdido, tem? Todos os sockets configurados como o ping obtêm cópias de todos os pacotes correspondentes, de modo que todos os pings em execução obtêm cópias de todos os pacotes ICMP recebidos.

    
por 05.05.2016 / 12:44

Tags