Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OIS Exam.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
618 Кб
Скачать
☆

19. Гнезда. Протокол udp.

Гнезда.

Для установления соединения между двумя процессами на различных компьютерах сети необходимо знать не только Internet-адреса компьютеров, но и номер ТСР-порта, который процесс использует на данном компьютере. В совокупности с Internet-адресом компьютера порты образуют систему гнезд (sockets). Пара гнезд уникально идентифицирует каждое соединение или поток данных в сети Internet, а порт обеспечивает независимость каждого ТСР-канала на данном компьютере. Безусловно, несколько процессов на машине могут использовать один и тот же ТСР-порт, но с точки зрения удаленного процесса между этими процессами не будет никакой разницы.

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

В отличие от TCP, UDP не гарантирует доставку пакета, поэтому аббревиатуру иногда расшифровывают как «Unreliable Datagram Protocol» (протокол ненадёжных датаграмм). Это позволяет ему гораздо быстрее и эффективнее доставлять данные для приложений, которым требуется большая пропускная способность линий связи, либо требуется малое время доставки данных.

Порты

Для взаимодействия сетевых приложений протокол UDP использует 16-ти битные порты, которые могут принимать значения от 0 до 65535. Порт 0 является зарезервированным, но может использоваться как порт источника, если приложение не ожидает ответных данных.

Порты с 1 по 1023 являются системными и фиксированными, во многих ОС привязка к ним требует повышенных привилегий приложения.

Порты с 1024 по 49151 — зарегистрированные.

Порты с 49152 по 65535 — свободно используемые и временные. Используются клиентскими приложениями для связи с серверами.

Формат UDP-пакета

Заголовок UDP содержит 4 поля.

Поле «порт отправителя» (16 бит) определяет порт на хосте отправителя, пославший пакет. В случае, если процесс-отправитель не ожидает от получателя никаких ответных данных, это поле может быть установлено в «0».

Поле «порт получателя» (16 бит) определяет порт на хосте получателя, которому предназначен данный пакет.

Поле «Длина пакета» (16 бит) содержит суммарный размер UDP-пакета в октетах. Минимально возможное значение этого поля равно 8 (т.к. 8 октетов занимает сам заголовок пакета).

Поле «контрольная сумма» имеет длину 16 бит.

Формат UDP-сегмента

+

Биты 0—15

16—31

0

Порт отправителя

Порт получателя

32

Длина пакета

Контрольная сумма

64

  Данные  

Арифметически, максимальная длина UDP-пакета составляет 216-1 = 65535 октетов. Вычитая из этой длины размер заголовка (8 октетов), получаем максимальный размер данных, которые могут быть переданы в одном UDP пакете — 65527 октетов. Однако следует учесть, что UDP пакет является полезной нагрузкой IP пакета, в заголовке которого поле «Полная длина» также из 16 бит учитывает как заголовок IP, так и полезную нагрузку, которая как раз и является UDP-пакетом. IP заголовок, в общем случае, имеет переменную длину не менее 20 октетов. Таким образом, UDP-пакет с максимальной арифметической длиной обязательно будет фрагментирован или отброшен, если фрагментация запрещена.

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

Ненадёжность протокола UDP надо понимать в том смысле, что в случаях влияния внешних факторов, приводящих к сбоям, протокол UDP не предусматривает стандартного механизма повторения передачи потерянных пакетов. В этом смысле он настолько же надежен, как и ICMP ECHO протокол.

Если приложению требуется большая надёжность, то используется протокол TCP или SCTP, либо реализуется какой-нибудь свой нестандартный алгоритм повторения передач в зависимости от условий.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]