Home

Page 6
Page 6
background image

Итак,  подводим  первый  итог – протокол UDP, по  сути,  является  переходником  между 

протоколом IP, не  пригодным  для  эффективной  адресации  приложений,  работающих  на  узлах  и 
самими приложениями, основная  задача протокола UDP – адресация сетевых приложений на узлах. 
Рассмотрим  более  детально  соответствующую  часть  заголовка UDP. Как  уже  говорилось  выше, 
указанием на то, что над протоколом IP применяется протокол UDP является значение поля Protocol 
заголовка IP равное 17 (десятичное). Заголовок UDP имеет постоянную длину, равную 8 байт, т.е. 
состоит  из  двух  четырехбайтовых  слов,  рассмотрим  первое  четырехбайтовое  слово.  Это  слово 
состоит из двух двухбайтовых полей, которые называются Source Port и Destination Port, именно эти 
поля и выполняют адресацию приложений, работающих над протоколом UDP, ясно, что Source Port 
адресует  приложение,  которое  отправило  данные  (это  адрес  на  узле,  который  является 
отправителем IP пакета), а Destination Port адресует приложение, которые должно получить данные 
(это  адрес  на  узле – получателе IP пакета).  Так  же  отметим,  что  в  соответствии  с RFC768, в  том 
случае,  если  процесс,  отправляющий UDP дейтаграмму  не  собирается  получать  ответ  на  эту 
дейтаграмму, он имеет право заполнить поле Source Port зарезервированным значением 00 00, что 
будет означать отсутствие указания на номер порта, отправившего данную дейтаграмму.  

Можно подытожить следующее: 
IP  адрес,  как  мы  знаем,  является  уникальным  адресом  УЗЛА  в  составной  сети,  а Port 

является адресом ПРИЛОЖЕНИЯ на этом УЗЛЕ. В таком случае совокупность IP адреса и номера 
порта является уникальным адресом конкретного ПРИЛОЖЕНИЯ/СЛУЖБЫ в составной сети.  

Сразу  отметим,  что  в  протоколе TCP реализован  полностью  аналогичный  механизм 

адресации приложений, а заголовок TCP так же начинается с двух двухбайтовых полей Source Port 
и Destination Port. Поэтому ВСЕ, что ниже будет сказано о портах, можно в РАВНОЙ мере отнести 
как к TCP, так и к UDP портам, и хотя мы сейчас изучаем протокол UDP, тем не менее, во всем, что 
касается портов, мы будем говорить в применении к обоим протоколам. 

Теперь можно отметить, что рассмотренная выше совокупность IP адреса и номера порта в 

протоколе TCP называется  СОКЕТ,  для  протокола UDP такой  термин  обычно  не  применяется, 
вместо этого используется термин endpoint – конечная точка взаимодействия. Итак, сокет – адрес 
приложения в составной сети.  

Рассмотрим  теперь,  каким  образом  приложениям  присваиваются  номера  портов.  Сразу 

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

Предположим, некоторая программа клиент, работающая с помощью UDP хочет обратиться 

к  серверу.  Пусть  для  определенности  существует  некоторое  приложение – сервер,  который, 
допустим,  передает  клиенту  текущее  время  в  ответ  на  запрос,  сформированных  определенным 
образом,  т.е.  с  помощью  определенного  прикладного  протокола.  Клиентская  программа  знает 
данный протокол и специально написана для того, чтобы пользователь мог с ее помощью получать 
информацию  о  времени  удаленного  сервера.  Клиентское  приложение  должно  получить  от 
пользователя адрес того сервера, с которого необходимо получить текущее время – приложение не 
может  УГАДАТЬ  с  какого  именно  сервера  времени  (среди  множества  серверов,  вообще  говоря, 
существующих в сети), пользователь хочет получить текущее время, следовательно, адрес сервера 
клиентской программе может передать только лишь пользователь.  Однако, знания IP адреса узла, 
на  котором  расположен  сервер  времени  не  достаточно – на  компьютере,  на  котором  расположен 
сервер времени, может быть запущено множество различных приложений, сервер времени – лишь 
одно  из  этих  приложений,  так  же  клиентскому  приложению  необходимо  знать  еще  и  ПОРТ,  на 
котором  отвечает  именно  сервер  времени  на  указанном  с  помощью IP адреса  узле.  Кто  сообщит 
клиентской программе адрес этого порта? Можно возложить эту задачу так же на пользователя, т.е. 
при обращении к ЛЮБОЙ сетевой службе пользователю будет необходимо указывать клиентской 
программе  не  только IP сервера,  но  и  номер  порта  к  которому  необходимо  обратиться – это  не 
удобно.  Дело  в  том,  что  от  непосредственного  использования IP можно  отказаться,  используя 
понятные  пользователю  символьные  имена,  которые  могут  быть  специальным  образом 
преобразованы в адреса, т.е. можно НЕ заставлять пользователей запоминать неудобные IP адреса, 
а  вместо  этого  запоминать  понятные  имена,  запоминание  номеров  портов  вообще  является 
дополнительной нагрузкой для пользователя, а в случае отказа от непосредственного запоминания 
IP  адресов,  необходимость  запоминать  некие  двухбайтовые  числа  «номера  портов»  оказывается 


Copyright © 2021 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.