
протоколы TCP и UDP относят к транспортному уровню модели OSI, что не вполне верно.
Протокол TCP, как мы уже говорили, а при его изучении убедимся, неверно называть
транспортным протоколом, это протокол, выполняющий в полном объеме транспортные и
сеансовые функции. А вот с отнесением протокола UDP к какому-то уровню модели OSI все не так
просто: он не выполняет функций, традиционно относящихся к транспортному уровню (гарантии
доставки), так же он не выполняет и функций, относящихся к сеансовому уровню (установка
соединений). Как мы знаем, чуть ли не единственная его функция – мультиплексирование данных
от различных приложений, иными словами – адресация приложений на узле, данная функция
очевидно, гораздо ближе к общепринятому пониманию сеансовых функций, нежели транспортных.
Так что, формально говоря, нет никаких оснований называть UDP протоколом, выполняющим
транспортные функции, однако его можно называть протоколом, выполняющим ограниченно
(очень ограниченно ☺) функции сеансового уровня. Однако с другой стороны, учитывая, что
транспортные функции TCP гораздо «эффектней», «заметнее», нежели его сеансовые функции, то
TCP чаще называют именно транспортным протоколом, а так как место в стеке (между протоколом
IP и приложениями) у TCP и UDP сходно, то и UDP за компанию, для единообразия так же
называют транспортным протоколом. Вы должны с пониманием относиться к встречающемуся в
литературе термину «транспортный протокол UDP», но так же и понимать, что такой термин не
вполне соответствуют действительности.
Наконец, завершая изучение протокола UDP, рассмотрим, могут ли приложения,
использующие протокол UDP обмениваться данными с гарантией доставки. Как стало ясно после
изучения заголовка UDP, данный протокол не имеет никаких средств для того, чтобы гарантировать
доставку пакетов с данными, посланных приложениями. Однако и протокол IP не имеет таких
возможностей, что не мешает гарантировать доставку данных, переносимых протоколом IP с
помощью протоколов, расположенных ВЫШЕ IP, например, с помощью TCP. Аналогично и при
использовании UDP – гарантии доставки данных возможны и в этом случае, но тогда САМИМ
приложениям (расположенным над UDP) придется заниматься реализацией гарантий доставки
данных т.е. решать задачи нумерации пакетов, квитирования и т.д. Далее в курсе мы рассмотрим
прикладной протокол, предназначенный для передачи файлов (т.е. в соответствии со сказанным
ранее этот протокол должен бы использовать скорее TCP), который использует UDP и
самостоятельно, на прикладном уровне занимается нумерацией пакетов и отсылкой собственного
формата квитанций поверх UDP.
Теперь рассмотрим практические примеры работы протокола UDP. Для этого нам
понадобится некоторый сервер, предоставляющий какую-то прикладную службу поверх протокола
UDP и некоторый клиент, отправляющий запросы на сервер и получающий пакеты в ответ. В
качестве примера для начала можно рассмотреть службу DNS, так как она часто используется в
сети, кроме того, клиентская часть встроена в операционную систему и проблем с поиском клиента
данной службы не возникнет.
Как Вы уже знаете, данная служба предназначена для того, чтобы пользователям не нужно
было запоминать IP адреса узлов, к которым они хотят обратиться, вместо этого пользователи
могут запоминать специальные символьные имена, которые затем с помощью данной службы
преобразуются в IP адреса. При этом DNS клиент, встроенный в операционную систему работает
прозрачно – пользователю не нужно запускать программу клиента, делать преобразование, а затем
использовать полученный таким образом IP адрес – вместо этого пользователь в любом
приложении может использовать символьные имена вместо IP адресов, все остальное DNS клиент
делает прозрачно для пользователя. Для преобразования символьных имен в IP адреса
используются специальные сервера, хранящие базу данных соответствий между и символьными
именами и IP адресами, с помощью транспорта UDP клиент DNS отправляет специальный запрос
серверу, сервер отвечает клиенту на данный запрос. Очевидно, такой стиль работы (один запрос –
один ответ) полностью согласуется с рассмотренными выше качествами, которыми должен
обладать протокол использующий UDP. Очень важно подчеркнуть, что в примере, который мы
будем рассматривать, необходимо сосредоточится на работе протокола UDP, и не интересоваться
тем, как работает DNS – просто будем полагать, что все, что передается поверх UDP, является
просто данными, неструктурированной последовательностью байт, сам же протокол DNS будет
нами вскоре изучен в данном курсе.