Каково значение псевдо заголовка, используемого в UDP / TCP - PullRequest
14 голосов
/ 11 декабря 2008

Почему псевдо заголовок добавляется к дейтаграмме UDP для вычисления контрольной суммы UDP? Что за этим стоит?

Ответы [ 4 ]

18 голосов
/ 15 мая 2010

Ближайший ответ вы получите "прямо изо рта лошади", от Дэвида П. Рида по следующей ссылке.

http://www.postel.org/pipermail/end2end-interest/2005-February/004616.html

Краткий вариант ответа: «псевдо заголовок существует по историческим причинам».

Изначально TCP / IP представлял собой единый монолитный протокол (называемый просто TCP). Когда они решили разделить его на TCP и IP (и другие), они не совсем четко разделяли два: IP-адреса все еще считались частью TCP, но они просто «унаследованы» от уровня IP. а не повторяется в заголовке TCP. Причина, по которой контрольная сумма TCP работает над частями заголовка IP (включая IP-адреса), заключается в том, что они намеревались использовать криптографию для шифрования и аутентификации полезной нагрузки TCP, и они хотели, чтобы IP-адреса и другие параметры TCP в псевдозаголовке были защищен кодом аутентификации. Это сделало бы невозможным для человека в середине вмешиваться в IP-адреса источника и назначения: промежуточные маршрутизаторы не заметили бы взлома, но конечная точка TCP сделала бы это, когда попыталась проверить подпись.

По разным причинам ни один из этих грандиозных криптографических планов не был осуществлен, но контрольная сумма TCP, которая заняла свое место, по-прежнему работает над псевдозаголовком, как будто это полезная вещь. Да, это дает вам немного дополнительной защиты от случайных ошибок, но это не то, почему он существует. Честно говоря, нам было бы лучше без него: связь между TCP и IP означает, что вам придется переопределять TCP при смене IP. Таким образом, определение IPv6 включает новое определение для псевдозаголовка TCP и UDP (см. RFC 2460, s8.1). Почему разработчики IPv6 решили увековечить эту связь, а не рискнуть отменить ее, мне не понятно.

15 голосов
/ 11 декабря 2008

С точки зрения TCP или UDP, пакет не содержит IP-адресов. (IP - это слой под ними.)

Таким образом, чтобы сделать правильную контрольную сумму, включен «псевдо заголовок» Это «псевдо», потому что это на самом деле не часть дейтаграммы UDP. Он содержит наиболее важные части заголовка IP, то есть адрес отправителя и получателя, номер протокола и длину данных.

Это необходимо для того, чтобы контрольная сумма UDP учитывала эти поля.

7 голосов
/ 09 февраля 2014

"Цель использования псевдозаголовка - проверить, что UDP датаграмма достигла правильного назначения. Ключ к понимание псевдо-заголовка заключается в понимании того, что правильный пункт назначения состоит из определенного компьютера и определенного протокола порт в этой машине. Сам заголовок UDP указывает только номер порта протокола. Таким образом, чтобы проверить пункт назначения, UDP на отправляющий аппарат вычисляет контрольную сумму, которая покрывает IP-адрес назначения адрес, а также датаграмма UDP. Псевдо-заголовок не передается с дейтаграммой UDP и не включается в длину. "

E. Comer - межсетевое взаимодействие с TCP / IP 4-е издание.

7 голосов
/ 27 февраля 2009

Когда разрабатывались эти протоколы, серьезной проблемой для них было то, чтобы хост получал пакет, думая, что он принадлежит им, когда его нет. Если во время транзита в заголовок IP были перевернуты несколько битов, и пакет изменил курс (но контрольная сумма IP все еще была правильной), стек TCP / UDP перенаправленного получателя все еще может знать об отклонении пакета.

Хотя псевдозаголовок нарушил идиому разделения слоев, он был признан приемлемым для повышенной надежности.

...