Протокол UDP — преимущества, недостатки и применение

UDP это протокол транспортного уровня стека протоколов TCP/IP. На транспортном уровне в стеке TCP/IP используется два протокола:

  • Протокол TCP обеспечивает надежную доставку данных
  • Протокол UDP надежные доставки данных не обеспечивает

UDP расшифровывается как User Datagram Protocol — протокол дейтаграмм пользователя. Сообщение UDP называется дейтаграмма по аналогии с телеграммой — короткое сообщение, которое быстро доставляется. UDP не предоставляет дополнительного уровня надежности по сравнению с протоколом IP

А зачем протокол транспортного уровня, если он не обеспечивает надежность доставки выше чем IP, почему нельзя использовать просто IP для передачи данных?

Но на транспортном уровне необходимо указать порт отправителя и порт получателя, что и делает протокол UDP. 

Формат заголовка

Формат заголовка udp состоит из 4-х полей: 

  1. Порт отправителя;
  2. Порт получателя;
  3. Длина UDP, в которой содержится длина всей дейтаграммы UDP;
  4. Контрольная сумма UDP, которая используется для корректной доставки дейтаграммы.

Длина UDP:

  • Минимум 8 байт (только заголовок)
  • Максимум 65 515 байт (максимальная длина данных IP-пакета)

Преимущества и применение UDP

Преимущество UDP в том, что протокол обеспечивает более высокую скорость работы по сравнению с TCP, так как у него нет накладных расходов на установку и на разрыв соединения. 

Ошибки в современных сетях происходят достаточно редко и сетевые приложения способны самостоятельно исправлять такие, редко возникающие ошибки. 

Область применения UDP — это системы, которые работают в режиме запрос-ответ и обмениваются между собой короткими сообщениями. 

Применение UDP: DNS

В качестве применения UDP рассмотрим систему доменных имен DNS. DNS позволяют определить по доменному имени соответствующий ему IP-адрес. Например к доменному имени www.cisco.com соответствует вот такой IP адрес 184.86.0.170. Система DNS использует протокол UDP, порт 53. 

Рассмотрим пример сетевого взаимодействия в DNS. В системе DNS есть сервер, который знает какие IP-адреса соответствуют доменным именам и клиент, который хочет получить такую информацию. Клиент DNS направляет запрос серверу, какой IP у доменного имени www.cisco.com? Сервер DNS получает такой запрос, находит соответствующий IP-адрес и отправляет ответ (184.86.0.170) взаимодействие происходит с использованием протокола UDP и для получения IP-адреса достаточно всего две дейтаграммы. 

Если бы для запроса IP-адреса использовался протокол TCP, то необходимо было бы передать гораздо больше сообщений. Перед тем как запрашивать IP-адрес необходимо было бы установить соединение TCP. Для этого нужно 3 сообщения, затем запросить IP-адрес, получить ответ (еще 2 сообщения) и после того, как ответ получен нужно разорвать соединение, для этого нужно 3 или 4 сообщения.  

Недостаток UDP

Недостаток UDP в том, что он не обеспечивает надежности передачи данных, поэтому ошибки должно обрабатывать приложение. Рассмотрим, что произойдет, если запрос потерялся. Приложение клиента DNS при отправке запроса (www.cisco.com?) запускает таймер, если в течении какого-то времени ответ не приходит, таймер срабатывает и тот же самый запрос отправляется еще раз. 

В этот раз запрос дошел (www.cisco.com) и DNS сервер в ответ отправил нам IP-адрес, который был необходим (184.86.0.170). Даже с учетом того, что произошла потеря данных ip-адрес все равно получен быстрее, чем если бы использовался протокол TCP. Однако существенным недостатком использования UDP является то, что приложение само должно обрабатывать ошибочные ситуации. 

Выводы по протоколу UDP

Был рассмотрен протокол UDP, который находится на транспортном уровне модели OSI и стека протоколов TCP/IP. UDP не обеспечивает дополнительную надежность передачи данных, но работает быстрее, чем TCP. Основная задача UDP указать порты отправителя и получателя. Область применения UDP — это обмен короткими сообщениями в режиме запрос-ответ. 

Ссылка на основную публикацию