2011-02-06 3 views
2

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

+0

Удаление тега 'c' и добавление тега' network', поскольку в этом вопросе нет кода C. =) – mpontillo

ответ

9

Его следует рассчитать как HEADER + DATA. При выполнении вычисления пусть контрольная сумма будет равна нулю, а затем заменит ее.

Цитирование стр.14 (Echo или Echo Reply Message) из RFC 792:

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

+0

ссылки пожалуйста –

+0

@Matt Joiner: обновлен, чтобы включить ссылку. – jweyrich

+0

@ пользователь604857: добро пожаловать. Я рад, что это помогло. – jweyrich

 Смежные вопросы

  • Нет связанных вопросов^_^