ICMP / checksum de Internet se o pacote for inteiramente constituído por zeros

1

No momento, estamos investigando um comportamento estranho de diferentes dispositivos: se enviarmos pacotes ICMP "vazios" (isto é, ICMP-SEQ e ICMP-ID são 0x0000 e não há carga útil ICMP), por exemplo, usando

nping --icmp --icmp-seq=0 --icmp-id=0 8.8.8.8

então sistemas diferentes respondem de maneira diferente:

  • um roteador Asus, o Windows 7 PC, o Fritz! Box, o Kali Linux box, todos respondem com o checksum 0xFFFF , que está correto de acordo com o wireshark
  • No entanto, 8.8.8.8 e heise.de (193.99.144.80) respondem com 0x0000 , que está marcado como errado por wireshark.

Tenho certeza de que também vi 0xFFFF de 8.8.8.8, mas atualmente não consigo reproduzir isso.

ENTÃO, minhas perguntas:

  • Qual é a soma de verificação de Internet correta para um pacote que consiste apenas de zeros
  • Este comportamento é diferente se o pacote for retransmitido via NAT (ou seja, retransmitido através do nosso roteador)?

Nota: Este pacote ICMP é válido de acordo com o RFC 792

PS: Espero que serverfault seja o fórum correto para perguntar. Se não, peço desculpas antecipadamente;)

    
por Adrian W. 23.02.2017 / 14:52

1 resposta

0

Depois de pesquisar com tcpdump , nping e nmap por cerca de três horas, consegui determinar o seguinte: O Windows calcula a soma de verificação corretamente e, basicamente, ninguém faz isso. Quando você tem um pacote que é todo 0, você deve obter uma soma de verificação de 0xffff ( source ), mas todas as máquinas linux / BSD Eu pinged retornou uma soma de verificação de 0x0000. Acho que isso se resume a um erro em como a soma de verificação está sendo calculada em muitos servidores.

    
por 24.01.2018 / 07:11

Tags