Протоколы транспортного уровня
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; просмотров: 1463;