TCP/IP

* 7. Протокол UDP * Протокол UDP (User Datagram Protocol - протокол пользовательскихдатаграмм) является одним из двух основных протоколов, расположенныхнепосредственно над IP. Он предоставляет прикладным процессам транспорт-ные услуги, которые не многим отличаются от услуг, предоставляемых прото-колом IP. Протокол UDP обеспечивает ненадежную доставку датаграмм и неподдерживает соединений из конца в конец. К заголовку IP-пакета ондобавляет два поля, одно из которых, поле "порт", обеспечивает мультип-лексирование информации между разными прикладными процессами, а другоеполе - "контрольная сумма" - позволяет поддерживать целостность данных. Примерами сетевых приложений, использующих UDP, являются NFS (Net-work File System - сетевая файловая система) и SNMP (Simple NetworkManagement Protocol - простой протокол управления сетью).

7.1. Порты Взаимодействие между прикладными процессами и модулем UDP осуществ-ляется через UDP-порты. Порты нумеруются начиная с нуля. Прикладнойпроцесс, предоставляющий некоторые услуги другим прикладным процессам(сервер), ожидает поступления сообщений в порт, специально выделенный дляэтих услуг. Сообщения должны содержать запросы на предоставление услуг.Они отправляются процессами-клиентами. Например, сервер SNMP всегда ожидает поступлений сообщений в порт161. Если клиент SNMP желает получить услугу, он посылает запрос в UDP-порт 161 на машину, где работает сервер. В каждом узле может быть толькоодин сервер SNMP, так как существует только один UDP-порт 161. Данныйномер порта является общеизвестным, то есть фиксированным номером, офици-ально выделенным для услуг SNMP. Общеизвестные номера определяются стан-дартами Internet. Данные, отправляемые прикладным процессом через модуль UDP, дости-гают места назначения как единое целое. Например, если процесс-отправитель производит 5 записей в UDP-порт, то процесс-получатель долженбудет сделать 5 чтений. Размер каждого записанного сообщения будет сов-падать с размером каждого прочитанного. Протокол UDP сохраняет границысообщений, определяемые прикладным процессом. Он никогда не объединяетнесколько сообщений в одно и не делит одно сообщение на части.

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

* 8. Протокол TCP * Протокол TCP предоставляет транспортные услуги, отличающиеся отуслуг UDP. Вместо ненадежной доставки датаграмм без установления соеди-нений, он обеспечивает гарантированную доставку с установлением соедине-ний в виде байтовых потоков. Протокол TCP используется в тех случаях, когда требуется надежнаядоставка сообщений. Он освобождает прикладные процессы от необходимостииспользовать таймауты и повторные передачи для обеспечения надежности.Наиболее типичными прикладными процессами, использующими TCP, являютсяFTP (File Transfer Protocol - протокол передачи файлов) и TELNET. Крометого, TCP используют система X-Window, rcp (remote copy - удаленное копи-рование) и другие "r-команды". Большие возможности TCP даются не бесп-латно. Реализация TCP требует большой производительности процессора ибольшой пропускной способности сети. Внутренняя структура модуля TCPгораздо сложнее структуры модуля UDP. Прикладные процессы взаимодействуют с модулем TCP через порты. Дляотдельных приложений выделяются общеизвестные номера портов. Например,сервер TELNET использует порт номер 23. Клиент TELNET может получатьуслуги от сервера, если установит соединение с TCP-портом 23 на егомашине. Когда прикладной процесс начинает использовать TCP, то модуль TCP намашине клиента и модуль TCP на машине сервера начинают общаться. Эти дваоконечных модуля TCP поддерживают информацию о состоянии соединения,называемого виртуальным каналом. Этот виртуальный канал потребляетресурсы обоих оконечных модулей TCP. Канал является дуплексным; данныемогут одновременно передаваться в обоих направлениях. Один прикладнойпроцесс пишет данные в TCP-порт, они проходят по сети, и другой приклад-ной процесс читает их из своего TCP-порта. Протокол TCP разбивает поток байт на пакеты; он не сохраняет границмежду записями. Например, если один прикладной процесс делает 5 записейв TCP-порт, то прикладной процесс на другом конце виртуального каналаможет выполнить 10 чтений для того, чтобы получить все данные. Но этотже процесс может получить все данные сразу, сделав только одну операциючтения. Не существует зависимости между числом и размером записываемыхсообщений с одной стороны и числом и размером считываемых сообщений сдругой стороны. Протокол TCP требует, чтобы все отправленные данные были подтверж-дены принявшей их стороной. Он использует таймауты и повторные передачидля обеспечения надежной доставки. Отправителю разрешается передаватьнекоторое количество данных, недожидаясь подтверждения приема ранее отп-равленных данных. Таким образом, между отправленными и подтвержденнымиданными существует окно уже отправленных, но еще неподтвержденных данных.Количество байт, которые можно передавать без подтверждения, называетсяразмером окна. Как правило, размер окна устанавливается в стартовых фай-лах сетевого программного обеспечения. Так как TCP-канал является дуп-лексным, то подтверждения для данных, идущих в одном направлении, могутпередаваться вместе с данными, идущими в противоположном направлении.Приемники на обеих сторонах виртуального канала выполняют управлениепотоком передаваемых данных для того, чтобы не допускать переполнениябуферов.

* 9. Протоколы прикладного уровня * Почему существуют два транспортных протокола TCP и UDP, а не один изних? Дело в том, что они предоставляют разные услуги прикладным процес-сам. Большинство прикладных программ пользуются только одним из них.Вы, как программист, выбираете тот протокол, который наилучшим образомсоответствует вашим потребностям. Если вам нужна надежная доставка, толучшим может быть TCP. Если вам нужна доставка датаграмм, то лучше можетбыть UDP. Если вам нужна эффективная доставка по длинному и ненадежномуканалу передачи данных, то лучше может подойти протокол TCP. Если нужнаэффективность на быстрых сетях с короткими соединениями, то лучшим можетбыть протокол UDP. Если ваши потребности не попадают ни в одну из этихкатегорий, то выбор транспортного протокола не ясен. Однако прикладныепрограммы могут устранять недостатки выбранного протокола. Например,если вы выбрали UDP, а вам необходима надежность, то прикладная программадолжна обеспечить надежность. Если вы выбрали TCP, а вам нужно переда-вать записи, то прикладная программа должна вставлять маркеры в потокбайтов так, чтобы можно было различить записи. Какие же прикладные программы доступны в сетях с TCP/IP? Общее их количество велико и продолжает постоянно увеличиваться.Некоторые приложения существуют с самого начала развития internet. Нап-ример, TELNET и FTP. Другие появились недавно: X-Window, SNMP. Протоколы прикладного уровня ориентированы на конкретные прикладныезадачи. Они определяют как процедуры по организации взаимодействия опре-деленного типа между прикладными процессами, так и форму представленияинформации при таком взаимодействии. В этом разделе мы коротко опишемнекоторые из прикладных протоколов.


Страница: