ПРОТОКОЛ УПРАВЛЕНИЯ ПЕРЕДАЧЕЙ TCP

Протокол управления передачей (TCP — Transmission Control Protocol) приблизительно соответствует транспортному уровню модели OSI, но содержит и некоторые функции сеансового уров­ня. С его помощью реализуется организация сеанса связи между двумя пользователями в сети. Кроме того, в его функции включа­ется исправление ошибок и, что очень важно, преобразование ин­формации к виду дейтаграмм, передача дейтаграмм и отслежива­ние их прохождения по сети. TCP служит также для организации повторной передачи потерянных дейтаграмм и обеспечения их надежности. Наконец, в компьютере-адресате TCP извлекает со­общение из дейтаграммы и направляет его прикладной програм­ме-адресату. Протокол TCP, как и протокол дейтаграммы пользо­вателя UDP, считаются протоколами поставщика услуг, причем TCP является протоколом, ориентированным на соединение, в то время как UDP — не ориентированный на соединение протокол.

 

 

www.kiev-security.org.ua BEST rus DOC FOR FULL SECURITY

 


272 Глава 10____________________________________

Оба они опираются на услуги протокола IP, но могут транспортиро­ваться через сетевые уровни Х.25, ISDN или Frame Relay.

Рассматриваемые в параграфе 10.7 прикладные протоколы FTP, TELNET, NNTP и др. помещают данные в протокольные бло­ки данных PDU, уже упоминавшиеся в этом и в первом томах. В зависимости от контекста, на разных уровнях для этих PDU ис­пользуются различные термины. Иногда блок данных PDU, пере­даваемый от транспортного уровня TCP к сетевому уровню IP, на­зывается «сегментом». Термин «дейтаграмма» используется при­менительно к PDU, передаваемым из сетевого уровня IP в Ether­net. В протоколах, не ориентированных на соединение, например, в UDP, дейтаграммы зачастую называются «блоками данных», пе­редаваемыми из IP на уровень звена данных. Если блок данных прошел через разные уровни и передается на физический уровень, он считается «кадром». Если блок данных прошел через сеть, он называется «пакетом». Эти термины и определения следует рас­сматривать не как охватывающий все и вся стандарт, а как попыт­ку согласования различных терминологий, а более откровенно — как расплату за ранее принятое автором опрометчивое решение со­брать в одной монографии разнообразные телекоммуникационные протоколы, терминология для каждого из которых имеет свою ис­торически обусловленную специфику.

Функционально, впрочем, все выглядит весьма просто. Для создания дейтаграммы протокол TCP добавляет к поступающим от прикладного уровня данным заголовок, содержащий управляю­щую информацию. Протокол IP добавляет к дейтаграмме свой за­головок, содержащий дополнительные инструкции. Локальная сеть вводит в дейтаграмму свою управляющую информацию в виде еще одного заголовка. Таким образом, дейтаграмма включает в себя три отдельных заголовка, каждый из которых содержит управляющую информацию различного назначения: Ethernet-заголовок, IP-за­головок и TCP-заголовок. Структура TCP-заголовка изображена на рис. 10.2.

Поля порта источника (source port) и порта назначения (des­tination port) содержат номера портов взаимодействующих про­грамм. Это связано с тем, что адресация на уровне протокола TCP предназначена, скорее, для передачи дейтаграмм между логиче­скими объектами внутри компьютера, чем для фактического со­единения пользователя с сетью. Более того, и рассматриваемый в следующем параграфе адрес IP тоже не является физическим адресом,


Протоколы Интернет 273

а характеризует соединение с сетью и идентифицирует поль­зователя. Поэтому номера портов назначения и источника пред­ставляют собой числа длиной 16 битов, идентифицирующие при­ложения, которые используют услуги TCP (например, FTP, TEL­NET, протоколы электронной почты SMTP, POP3 и т.п.). Номера порта от 0 до 255 определены заранее и не могут задаваться опера­торами, а номера после 255 могут произвольно определяться для каждой конкретной сети. Примеры фиксированных номеров пор­тов, определяемые протоколом TCP: данные FTP — 20; управле­ние FTP — 21; TELNET — 23; протокол SMTP — 25; сервер имен главного компьютера — 42; сервер имен домена— 53; почтовый про­токол РОР2 - 109.

Рис. 10.2. Заголовок TCP

Порядковый номер блока данных (sequence number) длиной 32 бита используется для проверки того, что все блоки данных по­лучены. Если принятый порядковый номер не соответствует оче­редности и срабатывает таймер TCP, все неподтвержденные блоки данных должны быть переданы повторно. Следует отметить, что предусматривается только положительное подтверждение, а отри­цательных подтверждений не существует. Номер подтверждения (acknowledgement number) следует за порядковым номером и иден­тифицирует следующий ожидаемый порядковый номер.

Поле смещения данных (4 бита) определяет, где начинаются данные заголовка TCP, т.е. сколько 32-битовых слов находится в заголовке, предшествующем полю данных пользователя.

Несколько однобитовых полей, следующих за полем смеще­ния данных, используются для обработки блока данных TCP. Бит срочности URG обозначает, что указатель срочности сообщения


274 Глава 10______________________________________

содержит значащую информацию. Указатель срочности представ­ляет собой поле 16 битов, идентифицирующее смещение в поле данных пользователя, которое содержит срочные данные. Бит под­тверждения АСК указывает на присутствие подтверждения в поле номера подтверждения и уведомляет приемное устройство о том, что этот номер подтверждает ранее полученные последовательно­сти. Бит внеочередной обработки PSH аналогичен биту срочно­сти. Он уведомляет принимающий главный компьютер о том, что полученный блок данных должен обрабатываться немедленно. Бит восстановления RST вызывает восстановление сеанса. Обычно это означает, что все очереди, связанные с сеансом, отключаются и все присоединенные счетчики и таймеры устанавливаются в нуль. Бит синхронизации SYN используется, когда устанавливается логиче­ское соединение, и указывает на то, что порядковые номера долж­ны быть синхронизированы. Бит завершения FIN указывает на то, что данных для посылки больше нет и сеанс должен быть закрыт. Затем сеанс должен быть завершен, а ресурсы освобождены для дру­гого сеанса.

Поле окна (16 битов) используется в течение установления сеанса. Стороны должны согласовывать, какое число блоков дан­ных может быть послано до подтверждения. Это число называется размером окна и определяется размером очереди и объемом обра­ботки данных, уже полученных от других сеансов. Размер окна не может быть изменен после того, как сеанс установлен.

Поле контрольной суммы (checksum), длиной 16 битов ис­пользуется для контроля ошибок в заголовке, а также в пользова­тельских данных. В следующем параграфе будет показано, что в IP контрольная сумма не контролирует пользовательские данные IP, а проверяет только заголовок.

Поле опций может содержать самую разную информацию, например, максимальный размер ТСР-дейтаграммы. В конце за­головок дополняется нулями до размера, кратного 32-битовому слову

В заключение данного параграфа предлагается тезисное опи­сание некоторых процедур протоколаTCP.

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


Протоколы Интернет 275

флаг синхронизации SYN и состоит из трех тактов квити­рующих сообщений, позволяющих синхронизировать потоки дан­ных. Завершение соединения осуществляется обменом пакетами, содержащими команду FIN.

Для проверки того, что все данные, переданные на уровень TCP, отправлены, существует функция «проталкивания пакета» — PUSH-функция. Назначение этой функции и PUSH-флага состо­ит только в «проталкивании» данных к пользователю, минуя меха­низм кэширования и не производя никаких дополнительных груп­пировок или других действий над данными.

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