Транспортный уровень. Протоколы TCP, UDP

Транспортный уровень. Протоколы TCP, UDP

1.     Функции и услуги транспортного уровня.

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

3.     Протокол TCP

3.1.      Формат TCP-пакета.

3.2.      Сессии TCP (алгоритм установления связи).

3.3.      Передача пакетов TCP, параметры передачи, MTU (Maximum Transmission Unit). Надёжная доставка. Алгоритм скользящего окна. Процедура «медленный старт».

4.     Протокол UDP;

4.1.      Формат UDP-пакета.

4.2.      Псевдозаголовок, используемый при расчете контрольной суммы.

 

1.    Функции и услуги транспортного уровня.

4-й уровень модели, предназначен для доставки данных без ошибок, потерь и дублирования в той последовательности, как они были переданы. При этом неважно, какие данные передаются, откуда и куда, то есть он предоставляет сам механизм передачи. Блоки данных он разделяет на фрагменты, размер которых зависит от протокола, короткие объединяет в один, а длинные разбивает. Протоколы этого уровня предназначены для взаимодействия типа точка-точка.

Транспортным уровнем предоставляются следующие виды услуг:

Функции, выполняемые транспортным уровнем:

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

3.    Протокол TCP

Каждый байт в ТСР соединении имеет 32 разрядный номер. Поэтому даже в сети на 10Мб/сек потребуется не менее часа, чтобы исчерпать все номера. Этиномера используются для всех пакетов на соединении: уведомления, данные, управление окнами.

ТСР агенты обмениваются сегментами данных. Каждый сегмент имеет заголовок от 20 байтов и более ( по выбору) и тело произвольной длины. ТСР агент решает какой длины может быть тело. Два фактора ограничивают длину сегмента. Первый - длина сегмента не должна превышать максимальную длину IP пакета - 65К байт. Второй - каждая сеть имеет максимальную единицу передачи MTU и каждый сегмент должен помещаться в MTU. В противном случае маршрутизаторам придется применять фрагментацию.

Основным протоколом, используемым ТСР агентом является протокол скользящего окна. Это значит, что каждый посланный сегмент должен быть подтвержден. Одновременно с отправление сегмента взводится таймер. Подтверждение придет либо с очередными данными в обратном направлении, если они есть, либо без данных. Подтверждение будет нести порядковый номер очередного ожидаемого сегмента. Если таймер исчерпается прежде чем придет подтверждение, то сегмент посылается повторно.

Несмотря на кажущуюся простоту, ТСР протокол достаточно сложен и должен решать следующие основные проблемы:

 

3.1. Формат TCP-пакета.

Протокол управления передачей TCP (Transmission Control Protocol) является обязательным стандартом TCP/IP, который описан в документе RFC 793 «Transmission Control Protocol (TCP)» и предоставляет надежную службу доставки пакетов, ориентированную на установление соединения. Протокол TCP:

гарантирует доставку IP-датаграмм;

выполняет разбиение на сегменты и сборку больших блоков данных, отправляемых программами;

обеспечивает доставку сегментов данных в нужном порядке;

выполняет проверку целостности переданных данных с помощью контрольной суммы;

посылает положительные подтверждения, если данные получены успешно. Используя избирательные подтверждения, можно также посылать отрицательные подтверждения для данных, которые не были получены;

предлагает предпочтительный транспорт для программ, которым требуется надежная передача данных с установлением сеанса связи, например для баз данных «клиент-сервер» и программ электронной почты.

TCP основан на связи «точка-точка» между двумя узлами сети. TCP получает данные от программ и обрабатывает их как поток байтов. Байты группируются в сегменты, которым TCP присваивает последовательные номера, необходимые для правильной сборки сегментов на узле-приемнике.

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

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

TCP-сегменты инкапсулируются и передаются в IP-датаграммах, как показано на следующем рисунке.

Art Image

Формат TCP-пакета

Формат TCP-пакета

Бит

0 - 3

4 - 9

10 - 15

16 - 31

0

Порт источника

Порт назначения

32

Номер последовательности

64

Номер подтверждения

96

Смещение данных

Зарезервировано

Флаги

Окно

128

Контрольная сумма

Указатель важности

160

Опции (необязательное)

160/192+

 
Данные
 

Порт источника

Порт источника идентифицирует порт, с которого отправлен пакет.

Порт назначения

Порт назначения идентифицирует порт, на который отправлен пакет

Номер последовательности

Номер последовательности выполняет две задачи:

  1. Если установлен флаг SYN, то это начальное значение номера последовательности и первый байт данных - это номер последовательности плюс 1.
  2. В противном случае, если SYN не установлен, первый байт данных - номер последовательности

Номер подтверждения

Если установлен флаг ACK, то это поле содержит номер последовательности, ожидаемый отправителем в следующий раз. Помечает этот пакет как подтверждение получения.

Смещение данных

Это поле определяет размер заголовка пакета TCP в 32-битных словах. Минимальный размер составляет 5 слов, а максимальный - 15, что составляет 20 и 60 байт соответственно. Смещение считается от начала заголовка TCP.

Зарезервировано

6 бит зарезервированы для будущего использования и должны устанавливаться в ноль.

Флаги (управляющие биты)

Это поле содержит 6 битовых флагов:

Контрольная сумма

Поле контрольной суммы - это 16-битное дополненение суммы всех 16-битных слов заголовка и текста. Если сегмент содержит нечетное число октетов в заголовке /или тексте, последние октеты дополняются справа 8 нулями для выравнивания по 16-битовой границе. Биты заполнения (0) не передаются в сегменте и служат только для расчета контрольной суммы. При расчете контрольной суммы значение самого поля контрольной суммы принимается равным 0.

Указатель важности

Указатель важности

16-битовое значение положительного смещения от порядкового номера в данном сегменте. Это поле указывает порядковый номер октета, с которого начинаются важные (urgent) данные. Поле принимается во внимание только для пакетов с установленным флагом U.

 

3.2. Сессии TCP (алгоритм установления связи).

Установление ТСР соединения происходит по протоколу трехкратного рукопожатия. Флаги SYN и ASK в заголовке сегмента используются для обозначения CONNECTION REQUEST и CONNECTION ACCEPED. Флаг RST используется для обозначения REJECT.

На рисункепоказаны ситуации при установлении соединения. Случай b показывает ситуацию, когда два хоста одновременно пытаются установить соединение между двумя одинаковыми сокетами. Посколку каждое соединение идентифицируется парой сокетов, то будет установлено только одно из соединений.

Таймер для последовательных номеров сегментов тактируется с частотой 4 (сек, а максимальное время жизни ракета - 120 сек.

ТСР соединение как уже говорилось дуплексное, т.е. в каждом направлении данные передаются независимо и соединение разрывается независимо. Если в очередном сегменте флаг FIN = 1, то в этом направлении данных больше не будет При получении подтверждения для этого сегмента соединение в этом направлении считается разорванным. В другом направлении передача может продолжаться сколь угодно долго. Если подтверждения на первый FIN нет, то попытки продолжаются до трех раз, после чего соединение считается разорванным.

На рисунках ниже представлена процедура установления и разрыва соединения в виде диаграммы конечного автомата.

 

3.3. Передача пакетов TCP, параметры передачи, MTU (Maximum Transmission Unit). Надёжная доставка. Алгоритм скользящего окна. Процедура «медленный старт».

Управление окнами в ТСР не связано прямо с поступлением подтверждений. На риунке показан случай взаимодействия для буфера в 4096 байт.

Когда поле WIN=0 отправитель может послать сегмент в двух случаях. Первый - если это URGENT данные. Второй, однобайтовый сегмент, чтобы заставить получателя показать текущее состояние буфера. Это очень важно так, как позволяет обойти тупик.

Заметим, что ТСР не требует сразу передавать сегмент как только данные поступили. Эту свободу ТСР использует чтобы повысить свою производительность. Поэтому, часто при реализации ТСР вводят специальную задержку на посылку подтверждения и состояния окна, чтобы дать отправителю накопить буфер для отправки.

Здесь есть одна неприятность. Если на стороне получателя приложение будет медленно считывать буфер , например, по байтно, отправитель будет вынужден отправлять короткие сегменты и не эффективно расходовать пропускную способность.

 

 

4.    Протокол UDP;

4.1. Формат UDP-пакета.

Протокол датаграмм пользователя UDP (User Datagram Protocol) является стандартом TCP/IP, описанным в документе RFC 768 «User Datagram Protocol (UDP)». UDP используется некоторыми программами вместо TCP для быстрой, простой, но ненадежной передачи данных между узлами TCP/IP.

UDP обеспечивает службу датаграмм, не ориентированную на установление соединения, что означает, что UDP не гарантирует ни доставку, ни правильность порядка доставки датаграмм. Узел-источник, которому требуется надежная связь, должен использовать либо протокол TCP, либо программу, которая сама обеспечивает подтверждения и следит за правильностью порядка датаграмм.

UDP-сообщения инкапсулируются и передаются в IP-датаграммах, как показано на следующем рисунке.

Art Image

Internet поддерживает также транспортный протокол без соединений - UDP (User Data Protocol). Этот протокол инкапсулирует сегменты в виде дейтаграмм и шлет их через сеть. Структура UDP сегмента показана на рисунке

4.2. Псевдозаголовок, используемый при расчете контрольной суммы.

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

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

 

 

Hosted by uCoz