Студопедия

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

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

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






Этапы TCP-взаимодействия






Взаимодействие партнеров с использованием протокола TCP строится в три этапа:

  • установление логического соединения;
  • обмен данными;
  • закрытие соединения.

Ниже с помощью трех рисунков дается описание каждого из этапов. Рисунки иллюстрируют последовательность обмена TCP-пакетами двумя TCP-модулями: A и B. TCP-пакеты представлены тремя полями TCP-заголовка (" Номер в последовательности", " Номер подтверждения", " Флаги") и числом, характеризующим длину данных, составляющих тело TCP-пакета (заметим, что реально поля длины данных в TCP-заголовке нет). Стрелками показаны направления пересылки пакетов.

Номер в Номер Флаги Длина TCP A последовательности подтверждения данных TCP B +------------------+-------------+---------+------+ ---> | 1000 | | SYN | 0 | +------------------+-------------+---------+------+ +------------------+-------------+---------+------+ | 5000 | 1001 | SYN, ACK | 0 | < --- +------------------+-------------+---------+------+ +------------------+-------------+---------+------+ ---> | 1001 | 5001 | ACK | 0 | +------------------+-------------+---------+------+ Рис. 4.4

Рис. 4.4 иллюстрирует этап установления соединения, реализуемый как " трехшаговое рукопожатие" (three-way handshake). На первом шаге TCP-модуль A, играя роль клиента, посылает TCP-модулю B пакет с установленным флагом SYN и начальным значением номера в последовательности равным 1000. TCP-модуль B, будучи готов со своей стороны установить соединение, отвечает TCP-пакетом, подтверждающим правильный прием запроса (поле " Номер подтверждения" на 1 больше начального номера в последовательности для TCP-модуля A и среди флагов есть установленный в 1 флаг ACK) и информирующим о готовности установить соединение (взведен флаг SYN и установлен в 5000 начальный номер в последовательности). На третьем шаге TCP-модуль A подтверждает правильность приема TCP-пакета от B.

Примечание. Некоторые протоколы транспортного уровня (но не TCP) допускают обмен данными уже на этапе установления логического соединения.

Номер в Номер Флаги Длина TCP A последовательности подтверждения данных TCP B +------------------+-------------+---------+------+ ---> | 1001 | 5001 | ACK | 50 | +------------------+-------------+---------+------+ +------------------+-------------+---------+------+ | 5001 | 1051 | ACK | 80 | < --- +------------------+-------------+---------+------+ +------------------+-------------+---------+------+ ---> | 1051 | 5081 | ACK | 0 | +------------------+-------------+---------+------+ Рис. 4.5

Рис. 4.5 иллюстрирует этап двустороннего обмена данными между TCP-модулями A и B. TCP-модуль, принимающий адресованные ему данные, всегда подтверждает их прием, вычисляя значение поля " Номер подтверждения" в заголовке ответного TCP-пакета как сумму пришедшего " Номера в последовательности" и длины правильно принятых данных. Отметим, что посылка данных к партнеру и подтверждение принятых от него данных реализуются в рамках одного TCP-пакета.

Номер в Номер Флаги Длина TCP A последовательности подтверждения данных TCP B +------------------+-------------+---------+------+ ---> | 1051 | 5081 | ACK, FIN | 0 | +------------------+-------------+---------+------+ +------------------+-------------+---------+------+ | 5081 | 1052 | ACK | 0 | < --- +------------------+-------------+---------+------+ +------------------+-------------+---------+------+ | 5081 | 1052 | ACK | 40 | < --- +------------------+-------------+---------+------+ +------------------+-------------+---------+------+ ---> | 1052 | 5121 | ACK | 0 | +------------------+-------------+---------+------+ +------------------+-------------+---------+------+ | 5121 | 1052 | ACK, FIN | 0 | < --- +------------------+-------------+---------+------+ +------------------+-------------+---------+------+ ---> | 1052 | 5122 | ACK | 0 | +------------------+-------------+---------+------+ Рис. 4.6

Рис. 4.6 иллюстрирует закрытие соединения по инициативе TCP-модуля A, посылающего партнеру TCP-пакет с установленным флагом FIN. Прием запроса на закрытие соединения TCP-модуль B подтверждает пакетом, содержащем в своем заголовке поле " Номер подтверждения", значение которого (1052) на 1 больше значения принятого " Номера в последовательности" (1051). После этого посылка каких-либо данных TCP-модулем A становится невозможной, однако модуль B имеет данные для передачи, которые он отправляет TCP-модулю A и получает подтверждение на их прием. Затем TCP-модуль B формирует пакет с флагом FIN, после подтверждения его приема соединение считается закрытым.

Примечание. Обратите внимание на то обстоятельство, что при подтверждении TCP-пакетов, содержащих единичные флаги SYN или FIN, значение поля " Номер подтверждения" на 1 больше значения соответствующего поля " Номер в последовательности", несмотря на то, что никакие данные в подтверждаемых TCP-пакетах не передаются.

Примечание. Рассмотренный пример не включает в себя ситуации, связанные с " потерей" TCP-пакетов в сети, и их обработку, связанную с повторной передачей данных.






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