Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Автоматическая телефонная связь на железнодорож...doc
Скачиваний:
79
Добавлен:
08.05.2019
Размер:
1.4 Mб
Скачать

4.4. Протоколы tcp и udp

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

С помощью протокола TCP устанавливается логическое соеди­нение, предшествующее передаче пользовательского сообщения. По окончании передачи сообщения соединение нарушается. При ис­пользовании протокола UDP логическое соединение не устанавли­вается.

Протокол TCP формирует для каждого сегмента заголовок пере­менной длины, состоящий из 32-битовых слов (рис. 4.9). Ниже по­казаны поля заголовка.

Порты отправителя и получателя (по 16 бит) — указывают на но­мер портов процесса-отправителя и процесса-получателя. Номера портов присваиваются прикладным программам, связанным с про­токолами прикладного уровня модели TCP/IP. Многие номера про­токольных портов стандартизованы, для чего выделены номера от О до 1023. Например, приняты следующие номера портов в соответствии с используемыми протоколами: HTTP — 80, FTP — 21, TFTP — 69,

Рис. 4.9. Заголовок TCP-протокола

1

1

Порт отправителя

Порт получателя

Порядковый номер N(S)

Номер подтверждения N(R)

Длина заголовка

Резерв

Кодовые биты

Размер окна

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

Указатель срочности

Опции

Выравнивание

TELNET — 23, SNMP — 161, SMTP — 25 и так далее. В иных случаях номера портов могут назначаться динамически в диапазоне от 1024до 65 535. Такие номера могут свободно задаваться портам прикладных программ пользователей.

Порядковый номер (32 бита) N(S) указывает на номер первого байта среди всех байтов, передаваемых в данном сегменте и относя­щихся к одному сообщению. Например, все сообщение состоит из 2000 байт, а в данном сегменте передаются байты с 503 по 812. В этом случае порядковый номер равен 503. На этапе установления логи­ческого соединения в поле «Порядковый номер» записывается на­чальный номер (ISN).

Номер подтверждения (32 бита) N(R) представляет собой макси­мальный номер байта в принятом от другой стороны сегменте плюс единица. Этот номер является под тверждением принятого сегмента и указывает на номер ожидаемого для приема байта.

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

Длина заголовка (4 бита) определяет длину заголовка протокола TCP в 32-битовых словах.

Резерв (6 битов) заполняется нулями.

Кодовые биты (6 битов) содержат служебную информацию о типе данного сегмента, задаваемую установкой в единицу соответствую­щих бит этого поля. Используются следующие шесть управляющих битов:

  • URG — запрос на передачу срочного сообщения;

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

  • PSH — запрос на отправку всех данных порту получателя без ожидания заполнения буфера;

  • RST — запрос на восстановление соединения;

  • SYN — запрос на установление соединения, которое также син­хронизирует счетчики переданных данных в пунктах отправления и получения пакетов;

  • FIN — указатель окончания передачи сообщения.

Размер окна (16 бит) — устанавливает размер окна в байтах. Ис­пользуется в методе квитирования, получившего название «сколь­зящее окно». Этот метод позволяет отправителю посылать очеред­ной сегмент, не дожидаясь подтверждения о получении в пункте на­значения предшествующего сегмента. Значение размера окна ука­зывает на то, сколько байтов данных можно передать, не дожидаясь подтверждения. Размер окна определяется пунктом назначения и может меняться в процессе передачи одного сообщения.

Контрольная сумма (16 бит), представляет собой слово, дополня­ющее биты в сумме всех 16-битовых слов сегмента (само поле конт­рольной суммы перед вычислением обнуляется). Контрольная сум­ма, кроме заголовка сегмента и поля данных, учитывает 96 бит псев­дозаголовка, который для внутреннего употребления ставится перед TCP-заголовком. Этот пседдозаголовок содержит IP-адрес отправи­теля (4 байта), IP-адрес получателя (4 байта), нулевой байт, 8-бит- ное поле «Протокол», аналогичное полю в IP-заголовке, и 16 бит длины TCP сегмента, измеренной в байтах. Информация для псев­дозаголовка передается через интерфейс «Протокол ТСР/межсете- вой уровень» в качестве аргументов или результатов запросов от про­токола TCP к протоколу IP.

Указатель срочности (16 бит) используется совместно с битом URG (поле «Кодовые биты») для того, чтобы определить длину сроч­ных данных, содержащихся в пользовательских данных ТСР-сегмен- та. При наличии такого указателя прикладной процесс в пункте по­лучателя должен в первую очередь обработать срочные данные.

Опции — поле имеет переменную длину и может отсутствовать или содержать одну опцию или список опций, реализующих дополни­тельные услуги протокола TCP.

Выравнивание — поле переменной длины, заполняемое нулями и служащее для формирования полных 32-битных слов.

Рассмотрим процесс установления логического соединения и разъединения с помощью протокола TCP.

В таком процессе пункты отправления и получения пакетов об­мениваются управляющими битами: SYN, АСК, FIN. На рис. 4.10 показан пример установления соединения от компьютера А к ком­пьютеру В через IP-сеть.

Установление соединения начинается or компьютера А, который посылает сегмент с управляющим битом SYN и порядковым номе­ром N(S), равным некоторому числу, например Y. Компьютер В, по­лучив этот сегмент, передает в обратном направлении сегмент с би­тами SYN и АСК, а также порядковый номер N(S) = X и номер подтверждения N(R)=Y+1. Передача сигналов SYN в обоих направле­ниях указывает на то, что и данные между компьютерами могут пе­редаваться в двух направлениях. Теперь компьютер А посылает сег­мент под тверждения с битом управления АСК с номером под тверж­дения N(R)=Х+1. Поскольку логическое соединение между компь­ютерами уже установлено, в этом сегменте могут передаваться пользовательские данные. В дальнейшем происходит обмен данны­ми между компьютерами. По окончании передачи данных произво­дится разъединение, состоящее в нарушении логического соедине­ния. Разъединение может активизироваться с любой из сторон, на­пример, от компьютера А. От него посылается сегмент с управляю­щим битом FIN и с порядковым номером N(S)=Y. В ответ компьютер В передает сегмент с битом АСК и с номером подтверждения N(R) = Y+1 и порядковым номером N(S) =Х. Этот сегмент под­тверждает прекращение посылки пользовательских данных от компь­ютера А. Далее компьютер В посылает сегмент с битами FIN и АСК с порядковым номером N(S) = X и номером под тверждения N(R) =Y+1. Такой сегмент указывает на то, что и компьютер В прекращает переда­вать пользовательские данные. Рассмотренная процедура разъедине­ния говорит о том, что возможно нарушение соединения с одной сто­роны, а с другой стороны соединение еще продолжается. Такое состоя­ние используется редко, так как обычно при передаче бита FIN соот­ветствующее приложение пользователя закрывается.

В протоколе UDP блоки данных, передаваемые протоколу IP, называются дейтафаммами. Протокол UDP формирует для каждой дейтаграммы заголовок постоянной длины, состоящий из двух 32-би­товых слов (рис. 4.11). Ниже показаны поля этого заголовка.

Рис. 4.11. Заголовок UDP-протокола

7|

15

23|

31

Порт отправителя

Порт получателя

Длина дейтаграммы

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

Порты отправителя и получателя (по 16 бит) имеют такое же на­значение и параметры, что и в протоколе TCP. Если от получателя не требуется ответ, то номер порта отправителя не указывается, а это поле заполняется нулями.

Длина дейтаграммы (16 бит) указывает на общую длину дейта­граммы в байтах, включая заголовок.

Контрольная сумма (16 бит) рассчитывается для всей дейтаграм­мы и при ее расчете используется псевдозаголовок. Обычно это поле заполняется нулями и тогда оно игнорируется.

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