
маршрутизаторы с одной стороны должны пересчитывать эту контрольную сумму при
маршрутизации IP пакета, с другой стороны контрольная сумма рассчитывается не для всего
содержимого IP пакета, а только для IP заголовка, что минимизирует вычислительную нагрузку,
ложащуюся на маршрутизаторы, но СОДЕРЖИМОЕ IP пакета с помощью этой контрольной суммы
оказывается не защищенным. Поэтому протоколы, работающие непосредственно поверх IP должны
в случае необходимости использовать собственную контрольную сумму, защищающую как
заголовок этого протокола, так и переносимые им данные. Как мы знаем, именно так поступает
протокол ICMP, точно так поступают протоколы UDP и TCP. Теперь, когда стратегия защиты
данных, используемая в стеке TCP/IP повторена, рассмотрим, как рассчитывается контрольная
сумма заголовка UDP. Важно отметить, что контрольная сумма UDP защищает не только сам
заголовок UDP и данные, переносимые в UDP дейтаграмме, но и частично защищает еще и
заголовок IP пакета. Как этого добиваются: контрольная сумма UDP рассчитывается НЕ для
заголовка UDP и полезных данных, а рассчитывается для специального ПСЕВДОЗАГОЛОВКА
(содержащего в себе некоторые поля IP заголовка и UDP заголовка), заголовка UDP и полезных
данных протокола UDP. Изобразим заголовок IP, заголовок UDP и данные протокола UDP, в таком
виде пакет существует в сети.
0
1
0
0
0
1
0
1
P P
P D T R 0
0
0 DF MF
Данные (произвольное количество)
Source Port
Destination Port
Length
Checksum
Source Addess
Destination Address
TTL
ID
Flags
Fragment Offset
Protocol (17)
Header Checksum
Version
Total Length
IHL
TOS
Теперь затем изобразим то, для чего рассчитывается контрольная сумма UDP, т.е.
псевдозаголовок, заголовок UDP и данные UDP:
0
0
0
0
0
0
0
0
Protocol (17)
Length
zero
Source IP Addess
Destination IP Address
Данные (произвольное количество)
Source Port
Destination Port
Length
Checksum
Важно, понять – в линии связи не передается никакой псевдозаголовок, структура,
передаваемая в линии связи изображена на первом рисунке. И только для расчета контрольной
суммы UDP в памяти формируется псевдозаголовок, который вместе с заголовком UDP и данными
UDP принимает участие в расчете контрольной суммы, передаваемой в заголовке UDP. Видно, что
псевдозаголовок, используемый при подсчете контрольной суммы UDP содержит в себе некоторые
важнейшие поля заголовка IP и заголовка UDP, т.е. можно сказать, что заголовок IP защищен
контрольной суммой более одного раза: один раз он защищен контрольной суммой самого
заголовка IP и еще раз некоторые его поля защищены контрольной суммой заголовка UDP. Видно,