Почему UDP имеет поле длины в заголовке, а TCP - нет? - PullRequest
25 голосов
/ 11 ноября 2008

Почему UDP имеет поле длины в заголовке, а TCP - нет?

Я предполагаю, что длина сегмента в TCP выводится из заголовка IP, но можно сделать то же самое для дейтаграммы UDP

Ответы [ 2 ]

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

Согласно Иллюстрированный том TCP / IP 1 , поле длины является избыточным. Это все, что Стивенс говорит по этому поводу.

Я лично считаю, что это должно было сделать длину заголовка UDP (в битах) делимой на 32:)

1 голос
/ 11 ноября 2008

Существует 96-битный псевдозаголовок, концептуально префиксированный к заголовку TCP, который уже содержит информацию.

Описание поля контрольной суммы из этого источника дает ответ:

Контрольная сумма: 16 бит

Поле контрольной суммы является 16-битным дополнением к одному дополнить сумму всех 16-битных слов в заголовке и тексте. Если сегмент содержит нечетное количество заголовков и текстовых октетов, которые должны быть контрольная сумма, последний октет дополняется справа нулями до сформировать 16-битное слово для целей контрольной суммы. Колодки нет передается как часть сегмента. При вычислении контрольная сумма, само поле контрольной суммы заменяется нулями.

Контрольная сумма также концептуально охватывает 96-битный псевдозаголовок. с префиксом к заголовку TCP. Этот псевдо заголовок содержит источник Адрес, адрес назначения, протокол и длина TCP. Это обеспечивает защиту TCP от ошибочно перенаправленных сегментов. это информация переносится по интернет-протоколу и передается через интерфейс TCP / Network в аргументах или результатах звонки по ПТС по IP.

      +--------+--------+--------+--------+
      |           Source Address          |
      +--------+--------+--------+--------+
      |         Destination Address       |
      +--------+--------+--------+--------+
      |  zero  |  PTCL  |    TCP Length   |
      +--------+--------+--------+--------+

Информация не требуется на уровне TCP, так как TCP является протоколом на основе потока.

...