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