Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Протокол транспортного уровня UDP (определение, порты, инкапсуляция, формат, мультиплексирование и демультиплексирование).




UDP (англ. User Datagram Protocol — протокол пользовательских дейтаграмм) — это транспортный протокол для передачи данных в сетях IP без установления соединения. Он является одним из самых простых протоколов транспортного уровня модели OSI. Его IP-идентификатор — 0x11.

UDP не подтверждает доставку данных, не заботится о корректном порядке доставки и не делает повторов. Зато отсутствие соединения, дополнительного трафика и возможность широковещательных рассылок делают его удобным для применений, где малы потери, в массовых рассылках локальной подсети, в медиапротоколах и т.п.

 

Инкапсуляция:

 

Состав UDP-датаграммы.

Первые 64 бита (8 байт) датаграммы представляют собой UDP-заголовок, остальные биты — данные сообщения:

Биты                                                                
0-31 Порт отправителя (Source port) Порт получателя (Destination port)
32-63 Длина датаграммы (Length) Контрольная сумма (Checksum)
64-... Данные (Data)

 

UDP-заголовок не содержит информации об адресе отправителя и получателя, поэтому даже при совпадении порта получателя нельзя с точностью сказать, что сообщение пришло в нужное место. Для проверки того, что UDP-сообщение достигло пункта своего назначения, используется дополнительный псевдозаголовок:

 

Биты                                                                
0-31 IP-адрес отправителя (Source address)
32-63 IP-адрес получателя (Destination address)
64-95                 Протокол (Protocol) Длина UDP-датаграммы (UDP length)

 

Поле «протокол» содержит в себе значение 17 (00010001 в двоичном виде, 0x11 — в шестнадцатеричном) — идентификатор UDP-протокола. Поле «длина UDP-датаграммы» содержит в себе длину UDP-сообщения (UDP-заголовок + данные; длина псевдозаголовка не учитывается) в октетах, то есть совпадает с одноименным полем в UDP-заголовке.

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

 

В протоколах TCP и UDP (семейства TCP/IP) порт — идентифицируемый номером системный ресурс, выделяемый приложению, выполняемому на некотором сетевом хосте, для связи с приложениями, выполняемыми на других сетевых хостах (в том числе c другими приложениями на этом же хосте). По сути, порт — адресуемый участок оперативной памяти устройства, предназначенный для сетевого взаимодействия.

Для каждого из протоколов TCP и UDP стандарт определяет возможность одновременного выделения на хосте до 65536 уникальных портов, идентифицирующихся номерами от 0 до 65535. При передаче по сети номер порта в заголовке пакета используется (вместе с IP-адресом хоста) для адресации конкретного приложения (и конкретного, принадлежащего ему, сетевого соединения).

Порты TCP не пересекаются с портами UDP. То есть, порт 1234 протокола TCP не будет мешать обмену по UDP через порт 1234.

 

Теоретически мультиплексирование и демультиплексирование дейтаграмм между программами протокола UDP и прикладными программами должно выполняться исключительно на основе номеров портов. На практике же, прежде чем прикладная программа сможет посылать UDP-дейтаграммы, она должна обратиться к операционной системе и получить стандартный номер порта для данного протокола и ассоциированный с ним номер порта1. После назначения номера порта прикладная программа может отправлять через этот порт пользовательские дейтаграммы. При этом номер выделенного порта будет автоматически занесен в поле номера порта отправителя заголовка UDP-дейтаграммы.

 

Пример демультиплексирования. При выборе соответствующего номера порта для поступивших дейтаграмм в программе протокола UDP используется поле номера порта получателя заголовка UDP-дейтаграммы. Проще всего представить UDP-порт в виде очереди. В большинстве реализаций протокола при обращении прикладной программы к операционной системе за выделением порта последняя создает внутреннюю очередь, в которую помещаются прибывающие в порт сообщения. Часто прикладной программе разрешается указывать операционной системе размер очереди сообщений или изменять его в процессе работы. При поступлении дейтаграммы в модуль протокола UDP проверяется номер порта получателя. Программа проверяет, был ли выделен указанный в заголовке UDP-дейтаграммы номер порта одной из запущенных прикладных программ. Если указанный номер порта не найден, программа протокола UDP посылает отправителю дейтаграммы ICMP-сообщение о недоступности указанного порта (port unreachable), после чего аннулирует дейтаграмму. Если номер порта найден, прибывшая дейтаграмма помещается в ассоциированную с ним очередь, откуда ее сможет прочитать прикладная программа. В случае переполнения очереди сообщений отправляется соответствующее сообщение об ошибке, и дейтаграмма аннулируется.

 

Протокол транспортного уровня TCP (порты, установление соединения, сегменты и потоки, метод скользящего окна, выбор тайм-аута, управление размером окна и перегрузкой, формат сообщений, управление логическим соединением).

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных