Протокол дейтаграмм пользователя UDP (user datagram protocol) относится к протоколам без установления логического соединения и предназначен для обмена дейтаграммами между процессами компьютеров, входящих в единую сеть с коммутацией пакетов.
В отличие от протокола TCP, в протоколе UDP отсутствует подтверждение приема блоков данных, что делает UDP намного проще, чем TCP, но относительно менее надежным. Данное обстоятельство не представляет опасности для таких применений как электронная почта и некоторые функции сетевого управления, когда мощные механизмы обеспечения надежности протокола TCP не требуются и когда протоколы верхнего уровня могут компенсировать недостатки UDP Преимущество протокола UDP состоит в том, что он требует минимум установок и параметров для соединения двух процессов между собой и, если не требуется большого объема обработки, блоки данных могут быть посланы и приняты с очень малым временем задержки.
Структура заголовка UDP представлена на рис 10.3 и гораздо проще, чем в TCP Отсутствие подтверждений исключает из заголовка порядковые номера и поля номера подтверждения или возможности обработки срочных данных.
Существуют номера порта-отправителя (source port) и порта назначения (destinaion port), поля длины (length) и контрольной суммы (checksum). Поле порта-отправителя может, если нужно, содержать номер порта, из которого был отправлен пакет (например, если отправитель ожидает ответа). Если это поле не используется, оно заполняется нулями. Поле длины содержит сведения о длине дейтаграммы (в байтах), включая заголовок и данные. Минимальная длина равна 8. Поле контрольной суммы UDP-пакета содержит побитное дополнение 16-битовой суммы 16-битовых слов (аналогично TCP).
Больше ничего не требуется. Очевидно, именно это позволяет принимающим главным компьютерам обрабатывать блоки данных гораздо быстрее, так как все, что требуется - это передать принятые блоки данных соответствующему приложению, идентифицируемому номером порта.
Могут возникать ситуации, когда при передаче дейтаграммы возникают ошибки, о которых необходимо сообщить отправителю или другому хост-компьютеру Для передачи этих сообщений или информации служебного характера предназначен протокол передачи управляющих сообщений ICMP (Internet Control Message Protocol). Как и протоколы TCP и UDP, протокол ICMP использует IP в качестве протокола нижнего уровня, однако по своей структуре и назначению ICMP является частью IP, рассматриваемого в следующем параграфе.
На рис. 10.4 показана структура заголовка ICMP-пакета. Данному заголовку ICMP предшествует обычный IP-заголовок без поля опций (Options) и выравнивания (Padding), а поля TOS=0, Protocol=l.
Различные типы сообщений ICMP определяются полем «типа», которое показывает, почему генерировалось сообщение ICMP, например, «destination unreachable» (пункт назначения недосягаем). Для протокола определено 13 типов сообщений. Поле «код заголовка» также носит служебный характер и обеспечивает дополнительную информацию об ошибке, расширяя иерархию сообщений данного типа. ICMP по несколько раз в день пользуются администраторы сетей и разработчики сетевого программного обеспечения, поскольку на его основе работают такие популярные утилиты, как пакетный межсетевой щуп PING (packet internetwork grouper) и TRACEROUTE, позволяющая просматривать путь маршрутизации пакета от пользователя до удаленного хост-компьютера.
Обычно шлюзы генерируют сообщение ICMP с исходящим хост-компьютером в качестве получателя. Это означает, что программное обеспечение ICMP, находящееся в шлюзах, является более сложным, чем находящееся в хост-компьютерах.
Следует подчеркнуть, что ICMP не обеспечивает обнаружение ошибок для IP, а является просто средством, используемым IP для передачи сообщений об ошибках хост-компьютерам.