Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






В набор TCP/IP входит два протокола транспортного уровня: TCP (Transmission Control Protocol) и UDP (User Datagram Protocol). TCP ориентирован на соединение и обеспечивает приложениям надежный сервис с гарантированной доставкой данных, подтверждением при­ема пакетов, управлением потоком данных, обнаружением и коррек­цией ошибок. TCP предназначен для передачи с побитовой точностью больших объемов данных, например, программных файлов. Про­токол UDP на соединение не ориентирован, обеспечивает ненадеж­ный сервис и используется в основном для обмена короткими зап­росами и ответами. Неудивительно, что TCP генерирует большой объем управляющего графика, тогда как накладные расходы, связанные с использованием UDP, относительно невелики.

Примечание Эпитет «надежный» в отношении протокола означает его способность обеспечить гарантированную доставку данных с подтверж­дением их приема и не отражает степени доверия, которой заслуживает протокол. Обычно вполне можно рассчитывать, что и ненадежный про­токол без ошибок доставит сообщение до целевой системы.

В то время как задачей уровня межсетевого взаимодействия, к которому отно­сится протокол IP, является передача данных между любой парой сетевых интерфейсов в составной сети, задача транспортного уровня, которую решают протоколы TCP и UDP, заключается в передаче данных между любой парой прикладных процессов, выполняющихся в сети.

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

Два протокола транспортного уровня из набора TCP/IP обеспечи­вают приложениям разный уровень обслуживания. Как TCP, так и UDP генерирует единицы данных PDU (protocol data unit), передава­емые внутри дейтаграмм IP. TCP выполняет функции, которых нет у IP, поэтому два этих протокола дополняют, но не дублируют друг друга. Комбинация UDP и IP обеспечивает минимальный транспорт­ный сервис с низким уровнем накладных расходов.

Протокол TCP

Набор протоколов TCP/IP назван по комбинации протоколов TCP и IP, которые в паре отвечают за большую часть трафика в сети TCP/ IP. Все Интернет-приложения, например, браузеры, FTP-клиенты, программы для работы с электронной почтой, используют протокол TCP для чтения больших объемов данных с серверов. TCP описан в документе RFC 793, опубликованном рабочей группой IETF в 1981 г.

Заголовок TCP

Протоколы транспортного уровня инкапсулируют данные, получен­ные от протоколов прикладного уровня, добавляя к ним свой заголо­вок, как это делают и протоколы более низких уровней. Часто прото­колы прикладного уровня передают TCP больше данных, чем вмеща­ет отдельный пакет, поэтому TCP разбивает данные на несколько сег­ментов (segments). Совокупность сегментов, составляющих единую транзакцию, называется последовательностью (sequence). К каждому сегменту добавляется собственный заголовок TCP (рис. 1), после чего он передается на сетевой уровень для передачи в отдельной дей­таграмме. Когда все сегменты достигают целевого компьютера, он восстанавливает из них исходную последовательность.

Функции полей сообщения TCP таковы.

· Порт источника (source port) занимает 2 байта и идентифицирует процесс-отправитель.

· Порт приемника (destination port) занимает 2 байта и идентифицирует процесс-получатель.

· Последовательный номер (sequence number) занимает 4 байта и представляет собой номер байта, который определяет смещение сегмента относительно потока отправляемых данных (другими словами, номер первого байта данных в сегменте).

· Подтвержденный номер (acknowledgement number) занимает 4 байта и содержит максимальный номер байта в полученном сегменте, увеличенный на единицу. Именно это значение используется в качестве квитанции. Если установлен контрольный бит АСК, то это поле содержит следующий номер оче­реди, который отправитель данного сегмента желает получить в обратном направлении.

 

Рис. 1. Формат заголовка TCP-сегмента

· Длина заголовка( Data Offset ) занимает 4 бита и представляет собой длину заголов­ка TCP-сегмента, измеренную в 32-битовых словах. Длина заголовка не фиксирована и может изменяться в зависимости от значений, устанавливаемых в поле параметров.

· Резерв (reserved) занимает 6 бит,

· Кодовые биты (code bits) числом 6 содержат служебную информацию о типе данного сегмента. Положительное значение сигнализируется установкой этих битов в единицу:

o URG — срочное сообщение;

o АСК — квитанция на принятый сегмент;

o PSH — запрос на отправку сообщения без ожидания заполнения буфера (протокол TCP может выжидать заполнения буфера перед отправкой сегмента, но если требуется срочная передача, то приложение сообщает об этом протоколу TCP с помощью данного бита);

o RST — приказ принимающей системе сбросить TCP-соединение и игнорировать все сегменты, принятые к этому моменту;

o SYN — сообщение, используемое для синхронизации счетчиков переданных данных при установлении соединения;

o FIN — разрыв TCP-соединения (признак достижения передающей стороной последнего байта в потоке передаваемых данных).

· Окно (window) занимает 2 байта и задает количество байтов данных, ожидаемых отправителем данного сегмента, начиная с байта, номер которого указан в поле подтвержденного номера.

· Контрольная сумма (checksum) занимает 2 байта. Код CRC, вычисленный передающей системой. Целевая система использует его для обнаружения ошибок в заголовке TCP, данных и частях заголовка IP.

· Указатель срочности (urgent pointer) занимает 2 байта и указывает на конец данных, которые необходимо срочно принять, несмотря на переполнение буфера. Указатель срочности используется совместно с кодовым битом URG. То есть если какие-то данные необходимо переслать приложению-получателю вне очереди, то приложение-отправитель должно сообщить об этом протоколу TCP путем установки в единицу бита URG.

· Параметры (options) имеют переменную длину и могут вообще отсутствовать. Максимальная величина поля составляет 3 байта; оно используется для решения вспомогательных задач, например для выбора максимального размера сегмента. Поле параметров может располагаться в конце заголовка TCP, а его длина кратна 8 бит.

· Заполнитель (padding) может иметь переменную длину. Это фиктивное поле, используемое для доведения размера заголовка до целого числа 32-битовых слов.

Порты и сокеты

Как и у протоколов сетевого и канального уровней, одна из важней­ших функций протокола транспортного уровня заключается в иден­тификации протокола или процесса, сгенерировавшего переносимые им данные. В TCP и UDP идентификация осуществляется по номеру порта (port), который назначен данному процессу организацией IANA (Internet Assigned Numbers Authority). Когда пакет TCP/IP достигает цели, протокол транспортно­го уровня, принявший дейтаграмму, считывает номер порта из поля Destination Port и передает информацию из поля данных программе или протоколу, ассоциированному с этим портом.

Всем основным приложениям Интернета присвоены номера пор­тов, которые называются хорошо известными портами (well-known ports). Например, порт Web-сервера — 80, а порт сервера DNS — 53. TCP и UDP поддерживают отдельные списки номеров хорошо известных портов. Например, протокол FTP использует порты TCP 20 и 21. Так как на транспортном уровне протокол FTP пользуется только протоколом TCP, другие протоколы прикладного уровня могут использовать порты 20 и 21 с протоколом UDP. В некоторых случаях протокол прикладного уровня может пользоваться обоими протоколами транспортного уровня. DNS, на­пример, связан как с портом TCP 53, так и с портом UDP 53.

Адресуя трафик другой системе, TCP/IP-система использует комбинацию IP-адреса и номера порта, которая называется сокетом ( socket). Чтобы задать сокет в URL (Uniform Resource Locator), Вы сначала вводите IP-адрес, потом двоеточие и номер порта. Напри­мер, сокет 192.168.2.10: 21 указывает на порт 21 в системе с адресом 192.168.2.10. Поскольку 21 — это номер порта FTP, фактически, со­кет указывает на FTP-сервер, работающий на этом компьютере.

Обычно указывать номер порта при наборе URL не нужно, так как используемая Вами программа предполагает, что Вы подсоединяетесь к хорошо известному порту. Браузер, например, по умолчанию на­правляет все введенные URL на порт 80, принадлежащий протоколу HTTP (Hypertext Transfer Protocol) Web-сервера.

Хорошо известные порты относят­ся, главным образом, к серверам. Поскольку связь с данным серве­ром инициирует обычно клиент (а не наоборот), клиентам постоян­ные номера портов не нужны. На время связи с конкретным серве­ром клиентская программа обычно случайным образом выбирает вре­менный номер порта (ephemeral port number). IANA контролирует толь­ко номера портов в пределах от 1 до 1023, поэтому временные номера портов принимают значения от 1024 и выше. Сервер, получивший пакет от клиента, использует значение из поля Source Port заголовка TCP, чтобы адресовать ответ правильному временному порту клиент­ской системы.

Логическое TCP-соединение однозначно идентифицируется парой сокетов.

Каждый сокет одновременно может участвовать в нескольких соединениях. Так, если (IP1, nl), (IP2, n2), (IP3, nЗ) — сокеты трех разных приложений, где IP1, IP2, IP3 — их IP-адреса, a nl, n2, n3 — номера их TCP-портов, то возможно обра­зование следующих соединений:

- соединение 1 - {(IP2, n2), (IP1, nl)};

- соединение 2 - {(IP1, nl), (IP3, nЗ)};

- соединение 3 - {(IP2, n2), (IP3, nЗ)}.

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

Рис. 2. Мультиплексирование и демультиплексирование на транспортном уровне






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.