Протоколы транспортного уровня

User Datagram Protocol (UDP)

UDP - один из двух протоколов транспортного уровня, используемых в стеке протоколов TCP/IP. UDP позволяет прикладной программе передавать свои сообщения по сети с минимальными издержками, связанными с преобразованием протоколов уровня приложения в протокол IP. Однако при этом прикладная программа сама должна обеспечивать подтверждение того, что сообщение доставлено по месту назначения. Заголовок UDP-дейтаграммы (сообщения) имеет вид, показанный на рис. 4.

Рис. 4. Структура заголовка UDP-сообщения

Порты в заголовке определяют протокол UDP как мультиплексор, который позволяет собирать сообщения от приложений и отправлять из на уровень протоколов. При этом приложение использует определенный порт .Взаимодействующие через сеть приложения могут использовать разные порты, что и отражает заголовок пакета. Всего можно определить 216 разных портов. Первые 256 портов закреплены за так называемыми "well known services (WKS)". Частичный перечень этих портов и соответствующих им сервисов приведен в таблице 1.

Таблица 1. Стандартные сетевые сервисы и соответствующие им порты

Протокол Полное наименование протокола Номер порта
IP Internet Protocol
ICMP Internet Control Message Protocol
IGMP Internet Group Management
GGP Gateway-Gateway Protocol
IP-ENCAP IP Encapsulated in IP
ST ST Datagram Mode
TCP Transmission Control Protocol
EGP Exteriot Gateway Protocol
UDP User Datagram Protocol
HMP Host Monitoring Protocol
XNS-IDP Xerox NS IDP
RDP Reliable Datagram Protocol
ISO-TP4 ISO Transport Protocol class 4
XTP eXpress Transfer Protocol
IDPR-CMTP IDPR Control Message Transport
RSVP Resource ReSerVation Protocol
VMTP Versatile Message Transport
OSPFIGP Open Shortest Path First IGP
ENCAP Yet Another IP Encapsulation

Поле Length определяет общую длину сообщения. Поле Checksum служит для контроля целостности данных. Приложение, которое использует протокол UDP, должно поддерживать целостность данных, анализируя поля Checksum и Length. Кроме этого, при обмене данными по UDP прикладная программа сама должна заботиться о контроле получения данных адресатом. Обычно это достигается обменом подтверждениями о доставке между прикладными программами.

Наиболее известными сервисами, основанными на UDP, являются служба доменных имен BIND и распределенная файловая система NFS.

Transfer Control Protocol (TCP)

В том случае, когда контроль качества передачи данных по сети имеет особое значение для приложения, используется протокол TCP. Этот протокол также называют надежным, ориентированным на соединение, потокоориентированным протоколом. Рассмотрим формат передаваемой по сети дейтаграммы (рис. 5).

Рис. 5. Структура пакета TCP

Согласно этой структуре в TCP, как и в UDP, используются порты. В поле Sequence Number определен номер пакета в последовательности пакетов, которая составляет сообщение, затем идет поле подтверждения Asknowledgment Number и другая управляющая информация.

Надежность TCP обеспечивается тем, что источник данных повторяет их передачу, если только не получит в определенный промежуток времени от адресата подтверждение об их успешном получении. Этот механизм называется Positive Asknowledgement with Re-transmission (PAR). В заголовке TCP предусмотрено поле контрольной суммы. Если при пересылке данные повреждены, то по контрольной сумме модуль, вычленяющий TCP-сегме7ты из пакетов IP, уничтожает поврежденный пакет (сообщение источнику не передается). Если же данные не были повреждены, то они пропускаются на сборку сообщения приложения, а в адрес источника отправляется подтверждение.

Ориентация на соединение определяется тем, что, прежде чем отправить сегмент с данными, модули TCP-источника и получателя обмениваются управляющей информацией. Такой обмен называется handshake (буквально "рукопожатие"). В TCP используется трехфазный handshake:

  • источник устанавливает соединение с получателем, посылая ему пакет с флагом "синхронизации последовательности номеров" (Synchronize Sequence Numbers - SYN). Номер в последовательности определяет номер пакета в сообщении приложения. Это не обязательно должен быть 0 или 1, но все остальные номера будут использовать его в качестве базы, что позволит собрать пакеты в правильном порядке;
  • получатель отвечает номером в поле подтверждения получения SYN, который соответствует установленному источником номеру. Кроме того, в поле "Номер в последовательности" может также сообщаться номер, который запрашивался источником;
  • источник подтверждает, что принял сегмент получателя и отправляет первую порцию данных.

После установки соединения источник посылает данные получателю и ждет от него подтверждений об из получении, затем снова посылает данные и т.д., пока сообщение не закончится. Заканчивается сообщение, когда в поле флагов выставляется бит FIN, что означает "больше нет данных".

Потоковый характер протокола определяется тем, что SYN определяет стартовый номер для отсчета переданных байтов, а не пакетов. Это значит, что если SYN был установлен в 0 и было передано 200 байтов, то номер, установленный в следующем пакете, будет равен 201, а не 2.

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

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

Таблица 2. Прикладные протоколы и соответствующие им порты

Протокол Порт Транспорт Комментарий
tcpmux tcp TCP port service multiplexer
ftp tcp File Transfer Protocol
Unassigned (номер не занят)
telnet tcp Протокол удаленного терминала
Private (номер зарезервирован)
smtp tcp Simple Mail Transfer Protocol (электронная почта)
Unassigned
time tcp Timeserver
udp
rip udp Routing Information Protocol (протокол маршрутизации)
whois tcp Nicname (определение соответствия сетевого имени определенному IP-адресу)
domain tcp Domain Name Server (сервер доменных имен)
udp
bootps tcp BOOTP server
udp
gopher tcp сеть Gopher
udp
finger tcp  
www или http tcp Протокол передачи гипертекстовых документов
udp








Дата добавления: 2015-05-13; просмотров: 1401;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.