Кратко
- Контрольная сумма TCP охватывает заголовок и данные TCP, а также концептуальный псевдозаголовок, составленный из сведений IP.
- Псевдозаголовок не передаётся как байты TCP: отправитель и получатель восстанавливают его независимо.
- Он помогает обнаруживать ошибки и некоторые случаи ошибочной доставки, но не является аутентификацией или доказательством маршрута.
Сегмент TCP визуально начинается с номеров портов, однако его контрольная сумма зависит и от контекста IP. Отправитель добавляет к расчёту адреса источника и назначения, идентификатор протокола и длину TCP. Получатель восстанавливает те же значения перед проверкой.
Для IPv4 RFC 793 описывает 96-битный псевдозаголовок: два адреса, нулевой байт, номер протокола IP и вычисленную длину TCP. Эти данные уже находятся в контексте IP, поэтому TCP не копирует их в сегмент. Они передаются через границу между протоколами.
Так решается конкретная проблема с доказательством целостности. Сумма только по байтам TCP могла бы остаться прежней после изменения адресов или идентификатора протокола окружающего пакета. Включение выбранных сведений IP позволяет заметить некоторые повреждения и доставки в иной контекст.
Расчёт использует сложение 16-битных слов с дополнением до единицы, а затем берётся дополнение до единицы полученной суммы. Во время расчёта поле контрольной суммы считается нулевым. При нечётном числе покрываемых октетов справа добавляется нулевой октет только для формирования последнего слова; он не передаётся. Длина TCP включает заголовок и данные TCP, но исключает двенадцать концептуальных октетов IPv4-псевдозаголовка.
RFC 9293 сохраняет этот механизм: отправитель обязан сформировать контрольную сумму, а получатель обязан её проверить. Любой нижележащий протокол, используемый с TCP, должен предоставлять адреса, идентичность протокола и способ определить длину TCP.
В IPv6 псевдозаголовок имеет длину 320 бит. В него входят адреса IPv6, длина пакета верхнего уровня, три нулевых байта и значение Next Header, обозначающее TCP. Если между IPv6 и TCP находятся расширенные заголовки, используется значение, идентифицирующее TCP в конце цепочки, а не обязательно ближайшее значение фиксированного заголовка IPv6. При исходной маршрутизации применяются исходный адрес и конечное назначение, а не промежуточные адреса.
Совпавшая сумма показывает лишь совместимость восстановленных покрываемых слов. Она не подтверждает личность отправителя, полномочия или пройденный путь и не мешает злоумышленнику изменить трафик и пересчитать значение. Псевдозаголовок — это соглашение между уровнями, а не скрытая часть передаваемого пакета.
Источники
Обзор для участников
Читать полный обзор тенденции
Участники читают полный обзор с примечаниями к источникам за каждым выводом.
Стратегическое сообщество
Ежедневный брифинг на вашем языке, основанный на изменениях, которые мы проверили.
Вступить за USD 20 в месяцОтменить можно в любое время.
Подать заявку в Альянс лидеров
Участники также получают всю библиотеку исследований, ежедневную сводку по сетям, за которыми следят, и закрытый форум.






