Кратко
- Контрольная сумма 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. При исходной маршрутизации применяются исходный адрес и конечное назначение, а не промежуточные адреса.
Совпавшая сумма показывает лишь совместимость восстановленных покрываемых слов. Она не подтверждает личность отправителя, полномочия или пройденный путь и не мешает злоумышленнику изменить трафик и пересчитать значение. Псевдозаголовок — это соглашение между уровнями, а не скрытая часть передаваемого пакета.
Источники
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
