Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

2004 г.

4.4.2. Протокол UDP

Семёнов Ю.А. (ГНЦ ИТЭФ), book.itep.ru

Протокол UDP (User Datagram Protocol, RFC-768) является одним из основных протоколов, расположенных непосредственно над IP. Он предоставляет прикладным процессам транспортные услуги, немногим отличающиеся от услуг протокола IP. Протокол UDP обеспечивает доставку дейтограмм, но не требует подтверждения их получения. Протокол UDP не требует соединения с удаленным модулем UDP ("бессвязный" протокол). К заголовку IP-пакета udp добавляет поля порт отправителя и порт получателя, которые обеспечивают мультиплексирование информации между различными прикладными процессами, а также поля длина udp-дейтограммы и контрольная сумма, позволяющие поддерживать целостность данных. Таким образом, если на уровне ip для определения места доставки пакета используется адрес, на уровне UDP - номер порта.

Примерами сетевых приложений, использующих UDP, являются NFS (Network File System), TFTP (Trivial File Transfer protocol, RFC-1350), RPC (Remote Procedure Call, RFC-1057) и SNMP (Simple Network Management Protocol, RFC-1157). Малые накладные расходы, связанные с форматом UDP, а также отсутствие необходимости подтверждения получения пакета, делают этот протокол наиболее популярным при реализации приложений мультимедиа, но главное его место работы - локальные сети и мультимедиа.

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

Например, сервер snmp всегда ожидает сообщения, адресованного в порт 161. Если клиент snmp желает получить услугу, он посылает запрос в UDP-порт 161 на машину, где работает сервер. На каждой машине может быть только один агент SNMP, т.к. существует только один порт 161. Данный номер порта является общеизвестным, т.е. фиксированным номером, официально выделенным в сети Internet для услуг SNMP. Общеизвестные номера портов определяются стандартами Internet (см. табл. 4.4.2.1).

Данные, отправляемые прикладным процессом через модуль UDP, достигают места назначения как единое целое. Например, если процесс-отправитель производит 5 записей в порт, то процесс-получатель должен будет сделать 5 чтений. Размер каждого записанного сообщения будет совпадать с размером каждого прочитанного. Протокол UDP сохраняет границы сообщений, определяемые прикладным процессом. Он никогда не объединяет несколько сообщений в одно и не делит одно сообщение на части. Формат UDP-сообщений представлен ниже на рис. 4.4.2.1:

Рис. 4.4.2.1 Формат UDP-дейтограмм

Длина сообщения равна числу байт в UDP-дейтограмме, включая заголовок. Поле UDP контрольная сумма содержит код, полученный в результате контрольного суммирования UDP-заголовка и поля данные. Не трудно видеть, что этот протокол использует заголовок минимального размера (8 байт). Таблица номеров UDP-портов приведена ниже (4.4.2.1). Номера портов от 0 до 255 стандартизованы и использовать их в прикладных задачах не рекомендуется. Но и в интервале 255-1023 многие номера портов заняты, поэтому прежде чем использовать какой-то порт в своей программе, следует заглянуть в RFC-1700. Во второй колонке содержится стандартное имя, принятое в Internet, а в третей - записаны имена, принятые в unix.

Таблица 4.4.2.1 Номера UDP-портов (более полный перечень в RFC-1700; Если какой-то номер порта в перечне отсутствует, это не означает, что он не зарезервирован и его можно использовать, просто я сэкономил место)

Десятич. номер порта Обозначение порта Описание
  в Интернет в Unix 
0
-
-
Зарезервировано
1
TCPmux
-
tcp Мультиплексор
2
Compressnet
-
Программа управления
3
Compressnet
-
Процесс сжатия
5
RJE
-
Вход в удаленную задачу
7
Echo
echo
Эхо
9
Discard
discard
Сброс
11
Users
systat
Активные пользователи
13
Daytime
daytime
Время дня
15
-
Netstat
Кто работает или netstat
19
Chargen
chargen
Генератор символов
20
FTP-data
ftp-data
FTP (данные)
21
FTP
ftp
Протокол пересылки файлов (управление)
23
telnet
telnet
Подключение терминала
24
-
-
Любая частная почтовая система
25
SMTP
smtp
Протокол передачи почтовых сообщений
31
MSG-auth Распознавание сообщения (аутентификация)
35
-
-
Любой частный принт-сервер
37
Time
time
Время
39
RLP
-
Протокол поиска ресурсов
41
Graphics Графика
42
nameserver
name
Сервер имен
43
Nicname
whois
Кто это? (whois-сервис)
45
MPM
-
Блок обработки входных сообщений
46
MPM-snd
-
Блок обработки выходных сообщений
48
Auditd
-
Демон цифрового аудита
49
login
-
Протокол входа в ЭВМ
50
RE-mail-ck
-
Протокол удаленного контроля почтовым обменом
53
Domain
nameserver
Сервер имен доменов (dns)
57
-
-
Любой частный терминальный доступ
59
-
-
Любой частный файл-сервер
64
covia
-
Коммуникационный интегратор (ci)
66
SQL*net
-
Oracle SQL*net
67
Bootps
Bootps
Протокол загрузки сервера
68
Bootpc
bootpc
Протокол загрузки клиента
69
TFTP
tftp
Упрощенная пересылка файлов
70
Gopher
-
Gopher (поисковая система)
71
-
Netrjs-1
Сервис удаленных услуг
77
-
rje
Любой частный RJE-сервис
79
Finger
finger
finger
80
WWW-HTTP World Wide Web HTTP
81
Hosts2-NS
-
Сервер имен 2
87
-
-
Любая частная терминальная связь
88
Kerberos Kerberos
92
NPP
-
Протокол сетевой печати
93
DCP
-
Протокол управления приборами
95
Supdup
supdup
Supdup протокол
97
Swift-rvf
-
swift-протокол удаленных виртуальных файлов
101
Hostname
hostnames
Сервер имен ЭВМ для сетевого информационного центра
102
ISO-Tsap
iso-tsap
ISO-Tsap
103
GPPitnp Сети точка-точка
104
ACR-nema ACR-nema digital IMAG. & comm. 300
108
Snagas sna-сервер доступа 
109
POP2
-
Почтовый протокол pop2
110
POP3
-
Почтовый протокол POP3
111
SUNRPC
sunrpc
SUN microsystem RPC
113
Auth
auth
Служба распознавания
114
Audionews Аудио-новости
115
SFTP Простой протокол передачи файлов
117
UUCP-path
uucp-path
Служба паролей uucp
118
SQLserv SQL-сервер
119
NNTP
NNTP
Протокол передачи новостей
123
NTP
NTP
Сетевой протокол синхронизации
129
PWDgen Протокол генерации паролей
130-132
  Cisco
133
Statsrv Сервер статистики
134
Ingres-net Ingres-net-сервис
135
LOC-srv Поисковый сервис
137
Netbios-SSN
-
Служба имен Netbios
138
Netbios-DGM Служба дейтограмм netbios
139
Netbios-SSN Служба сессий Netbios
147
ISO-IP ISO-IP
150
SQL-net SQL net
152
BFTP Протокол фоновой пересылки файлов
156
SQLsrv SQL-сервер
158
PCmail-srv PC почтовый сервер
161
-
SNMP
Сетевой монитор SNMP
162
-
SNMP-trap
SNMP-ловушки
170
Print-srv postscript сетевой сервер печати
179
BGP Динамический протокол внешней маршрутизации
191
Prospero Служба каталогов Prospero
194
IRC Протокол Интернет для удаленных переговоров
201-206
  Протоколы сетей Apple talk
213
IPX ipx
348
CSI-SGWP Протокол управления cabletron
396
Netware-IP Novell-Netware через IP
398
Kryptolan Kryptolan
414
Infoseek Infoseek (информационный поиск)
418
Hyper-g Hyper-g
444
SNPP Простой протокол работы со страницами
512
-
biff (exec)
Unix Comsat (удаленное исполнение)
513
-
Who
Unix Rwho daemon
514
-
syslog
Дневник системы
515
Printer Работа с буфером печати (spooler)
525
-
Timed
Драйвер времени

Зарегистрировано ряд портов для стандартного применения и в диапазоне 1024-65535. Например:
 

Номер портаОбозначениеНазначение
1397Аudio-activmailАктивная звуковая почта
1398Video-activmailАктивная видео-почта
5002RFEРадио-Ethernet
6000-6063X11Система X Window
7008AFS3-updateСервер-сервер актуализация

Модуль IP передает поступающий IP-пакет модулю UDP, если в заголовке этого пакета указан код протокола UDP. Когда модуль UDP получает дейтограмму от модуля IP, он проверяет контрольную сумму, содержащуюся в ее заголовке. Если контрольная сумма равна нулю, это означает, что отправитель ее не подсчитал. ICMP, IGMP, UDP и TCP протоколы имеют один и тот же алгоритм вычисления контрольной суммы (RFC-1071). Но вычисление контрольной суммы для UDP имеет некоторые особенности. Во-первых, длина UDP-дейтограммы может содержать нечетное число байт, в этом случае к ней добавляется нулевой байт, который служит лишь для унификации алгоритма и никуда не пересылается. Во-вторых, при расчете контрольной суммы для UDP и TCP добавляются 12-байтные псевдо-заголовки, содержащие IP-адреса отправителя и получателя, код протокола и длину дейтограммы (см. рис. 4.4.2.2). Как и в случае IP-дейтограммы, если вычисленная контрольная сумма равна нулю, в соответствующее поле будет записан код 65535.

Рис. 4.4.2.2. Псевдозаголовок, используемый при расчете контрольной суммы

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

Так как максимальная длина IP-дейтограммы равна 65535 байтам, максимальная протяженность информационного поля UDP-дейтограммы составляет 65507 байт. На практике большинство систем работает с UDP-дейтограммами с длиной 8192 байта или менее. Детальное описание форматов, полей пакетов и пр. читатель может найти в RFC-768.

Назад: 4.4.1.3. Протокол туннелей на сетевом уровне L2 (L2TP)
Оглавление: Телекоммуникационные технологии
Вперёд: 4.4.3. Протокол TCP

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...