Как часть домашнего задания, я должен написать программу C в Linux, которая генерирует ответы ICMP на запросы ICMP Echo с использованием сырых сокетов. Должны ли данные в пакете ICMP также включаться в контрольную сумму? Или я должен рассчитать контрольную сумму только для заголовка?Имеет ли контрольная сумма заголовка ICMP данные?
2
A
ответ
9
Его следует рассчитать как HEADER + DATA. При выполнении вычисления пусть контрольная сумма будет равна нулю, а затем заменит ее.
Цитирование стр.14 (Echo или Echo Reply Message) из RFC 792:
Контрольная сумма представляет собой 16-битовые поразрядные свою дополнения суммы сообщения ICMP, начиная с типом ICMP. Для вычисления контрольной суммы поле контрольной суммы должно быть равно нулю. Если общая длина нечетна, полученные данные дополняются октетом нулей для вычисления контрольной суммы. Эта контрольная сумма может быть заменена в будущем .
Удаление тега 'c' и добавление тега' network', поскольку в этом вопросе нет кода C. =) – mpontillo