Назад | Перейти на главную страницу

Контрольная сумма ICMP / Internet, если пакет полностью состоит из нулей

В настоящее время мы исследуем странное поведение различных устройств: если мы отправляем «пустые» пакеты ICMP (то есть ICMP-SEQ и ICMP-ID равны 0x0000, а полезная нагрузка ICMP отсутствует), например, используя

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

тогда разные системы отвечают по-разному:

Я почти уверен, что видел 0xFFFF из 8.8.8.8, но в настоящее время не могу воспроизвести это.

Итак, мои вопросы:

Примечание. Этот пакет ICMP действителен в соответствии с RFC 792.

PS: Я надеюсь, что serverfault - правильный форум. Если нет, то заранее прошу прощения;)

Покопавшись с tcpdump, nping и nmap Примерно за три часа мне удалось определить следующее: Windows правильно вычисляет контрольную сумму, и в основном никто этого не делает. Когда у вас есть пакет, состоящий только из 0, вы должны получить контрольную сумму 0xffff (источник), но каждая машина linux / BSD, которую я проверял, вернула контрольную сумму 0x0000. Я думаю, это просто связано с ошибкой в ​​том, как вычисляется контрольная сумма на многих серверах.