Включает ли контрольная сумма заголовка ICMP данные? - PullRequest
2 голосов
/ 06 февраля 2011

Как часть домашнего задания, я должен написать программу на C на Linux, которая генерирует ICMP-ответы на ICMP-эхо-запросы с использованием необработанных сокетов. Должны ли данные в пакете ICMP быть включены в контрольную сумму? Или я должен вычислить контрольную сумму только для заголовка?

1 Ответ

10 голосов
/ 06 февраля 2011

Он должен быть рассчитан из заголовка + данные.При выполнении вычисления, пусть контрольная сумма будет нулевой, а затем замените ее.

Цитирование страницы 14 (ответное эхо или ответное эхо) из RFC 792 :

Контрольная сумма является 16-битным дополнением к сумме дополнения сообщения ICMP, начиная с типа ICMP.Для вычисления контрольной суммы поле контрольной суммы должно быть нулевым.Если общая длина нечетна, полученные данные дополняются одним октетом нулей для вычисления контрольной суммы.Эта контрольная сумма может быть заменена в будущем.

...