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

Список ключевых слов: протокол управления передачей, протокол

пользовательских дейтаграмм, мультиплексирование, демультиплексирование, порт, назначенный номер порта, хорошо известные номера портов, динамический номер порта, UDP-порт, ТСР-порт, UDP-дейтаграмма, пользовательская дейтаграмма, UDP-сокет, порт источника, порт приемника, последовательный номер, подтвержденный номер, длина заголовка, резервные биты, кодовые биты, контрольная сумма, указатель срочности, параметры, заполнитель, логическое соединение, окно приема.

Как уже было отмечено, главная задача транспортного уровня заключается в пере­даче данных между прикладными процессами. Эту задачу решают протокол управ­ления передачей (Transmission Control Protocol, TCP), описанный в RFC 793, и протокол пользовательских дейтаграмм (User Datagram Protocol, UDP), опи­санный в RFC 768. Протоколы TCP и UDP имеют много общего. Тот и другой обеспечивают интерфейс с вышележащим прикладным уровнем, передавая дан­ные, поступающие на входной интерфейс хоста, соответствующему приложению. При этом оба протокола используют концепции «порт» и «сокет». Оба они так­же поддерживают интерфейс с нижележащим сетевым уровнем IP, упаковывая свои PDU в IP-накеты. Протокольные сущности TCP и UDP, как и в случае протоколов прикладного уровня, устанавливаются только на конечных узлах. Однако, как мы увидим далее, различий между TCP и UDP гораздо больше, чем сходств.

Порты

Каждый компьютер может выполнять несколько процессов, более того, приклад­ной процесс тоже может иметь несколько точек входа, выступающих в качестве адреса назначения для пакетов данных. Поэтому после того, как пакет средства­ми протокола IP доставлен на сетевой интерфейс компьютера-получателя, дан­ные необходимо переправить конкретному процессу-получателю.

Существует и обратная задача: пакеты, которые отправляют в сеть разные при­ложения, работающие на одном конечном узле, обрабатываются общим для них протоколом IP. Следовательно, в стеке должно быть предусмотрено средство «сбора» пакетов от разных приложений для передачи протоколу IP. Эту работу выполняют протоколы TCP и UDP.

Процедура приема данных протоколами TCP и UDP, поступающих от несколь­ких различных прикладных служб, называется мультиплексированием. Обрат­ная процедура — процедура распределения протоколами TCP и UDP поступаю щих от сетевого уровня пакетов между набором высокоуровневых служб — называется демультиплексированием (рис. 19.1).


Протоколы TCP и UDP ведут для каждого приложения две очереди: очередь па­кетов, поступающих к данному приложению из сети, и очередь пакетов, отправ­ляемых данным приложением в сеть. Пакеты, поступающие на транспортный уро­вень, организуются операционной системой в виде множества очередей к точкам входа различных прикладных процессов. В терминологии TCP/IP такие систем­ные очереди называются портами[35], причем входная и выходная очереди одного приложения рассматриваются как один порт. Для однозначной идентификации портов им присваивают номера. Номера портов используются для адресации приложений.

Если процессы представляют собой популярные общедоступные службы, такие как FTP, telnet, HTTP, TFTP, DNS и т. п., то за ними закрепляются стандарт- пыеу назначенные номера, также называемые хорошо известными (well-known) номерами портов. Эти номера закрепляются и публикуются в стандартах Ин­тернета (RFC 1700, RFC 3232). Так, номер 21 закреплен за службой удаленного доступа к файлам FTP, а 23 — за службой удаленного управления telnet. Назна­ченные номера являются уникальными в пределах Интернета и назначаются приложениям централизованно из диапазона от 0 до 1023.

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

В дальнейшем все сетевые приложения должны адресоваться к данному прило­жению с указанием назначенного ему номера порта. После того как приложение завершит работу, выделенный ему локальный номер порта возвращается в спи­сок свободных и может быть назначен другому приложению. Динамические но­мера являются уникальными в пределах каждого компьютера, но при этом обыч­ной ситуацией является совпадение номеров портов приложений, выполняемых на разных компьютерах. Как правило, клиентские части известных приложений (DNS, WWW, FTP, telnet и др.) получают динамические номера портов от ОС.

Все, что было сказано о портах, в равной степени относится к обоим протоколам транспортного уровня (TCP и UDP). В принципе нет никакой зависимости меж­ду назначением номеров для приложений, использующих протокол TCP, и при­ложений, работающих с протоколом UDP. Приложения, которые передают дан­ные на уровень IP по протоколу UDP, получают номера, называемые UDP- портами. Аналогично приложениям, обращающимся к протоколу TCP, выделя­ются ТСР-порты.

В том и другом случаях это могут быть как назначенные, так и динамические номера. Диапазоны чисел, из которых выделяются номера TCP- и UDP-портов, совпадают: от 0 до 1023 для назначенных и от 1024 до 65535 для динамических. Однако никакой связи между назначенными номерами TCP- и UDP-портов нет. Даже если номера TCP- и UDP-портов совпадают, они идентифицируют разные приложения. Например, одному приложению может быть назначен ТСР-порт 1750, а другому — UDP-порт 1750. В некоторых случаях, когда приложение может об­ращаться по выбору к протоколу TCP или UDP (например, таким приложением является DNS), ему, исходя из удобства запоминания, назначаются совпадаю­щие номера TCP- и UDP-портов (в данном примере — это номер 53).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: