Опубликован: 11.08.2008 | Уровень: специалист | Доступ: свободно
Лекция 11:

Управление перегрузкой и основные алгоритмы работы TCP

Блок-схема совокупности программ управления TCP

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

В этом разделе мы представим простейшую блок-схему TCP. Наша цель — показать, как мы можем имитировать основу TCP, представленную диаграммой состояний.

Совокупность модулей включает таблицу, называемую блоком управления передачей (transmission control block – TCB), установку таймера и три программных модуля. На Рис. 11.13. показаны 5 компонентов и их взаимодействие.

Блок-схема TCP

Рис. 11.13. Блок-схема TCP

Поскольку в любой момент времени мы можем иметь несколько соединений, TCB сохраняет массивы TCB в форме таблицы. Таблица обычно именуются как TCB ( Рис. 11.14.).

Общий вид таблицы TCB

Рис. 11.14. Общий вид таблицы TCB

Алгоритм работы главного модуля TCP

Алгоритм работы главного модуля TCP показан на Рис. 11.15.

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

Ниже приводятся таблицы, в которых перечисляются состояния ( таблице 11.2.), входы ( таблице 11.3.), выходы ( таблице 11.4.), используемые в данном алгоритме.

Таблица 11.2. Состояние для TCP
СОСТОЯНИЕ Описание
Английское обозначение Русское обозначение
CLOSED ЗАКРЫТО Нет соединения
LISTEN СЛУШАЮ Сервер ожидает вызова от клиента
SYN-SENT ПЕРЕДАЧА Соединение запрашивает передачу; ожидание подтверждения
SYN-RCVD ПРИЕМ Состояние ожидания приема
ESTABILISHED УСТАНОВЛЕНО Соединение установлено
FIN-WAIT1 ОЖИДАНИЕ ОКОНЧАНИЯ1 Клиент запросил закрытие соединения
FIN-WAIT2 ОЖИДАНИЕ ОКОНЧАНИЯ2 Другая сторона принимает закрытие соединения
CLOSING ЗАВЕРШАЮЩЕЕ Обе стороны решили закрыть соединение одновременно
TIME-WAIT ВРЕМЯ ОЖИДАНИЯ Ожидание повторной передачи
CLOSE-WAIT ОЖИДАНИЕ ЗАКРЫТИЯ Сервер ожидает закрытия приложения
LAST-ASK ПОСЛЕДНЕЕ ПОДТВЕРЖДЕНИЕ Сервер ожидает последнего подтверждения
Таблица 11.3. Входы для TCP
ВХОД Описание
Английское обозначение Русское обозначение
Active open Активное открытие Заявка процесса на передачу данных
Passive open Пассивное открытие Заявка на входящую связь (ожидается заявка от процесса соединения для приема)
RST Повторная передача Запрос на переустановление соединения
Send Передача Запрос на передачу
SYN Запрос Запрос на соединение
SYN+ ACK Подтверждение запроса Подтверждение запроса на соединение
ACK Подтверждение Подтверждение сигнала
FIN Отбой Запрос на завершение соединения
FIN+ACK Подтверждение отбоя Подтверждение сигнала на окончательное соединение
Close Закончить Сигнал, о том, что данная сторона закончила соединение
Time-out Контрольное время Окончание установленного контрольного времени
Таблица 11.4. Выходы для TCP
ВЫХОД Описание
Английское обозначение Русское обозначение
SYN Заявка на передачу Сегмент, который посылается другой стороне, как заявка на передачу
SYN+ACK Подтверждение заявки Подтверждение заявки на передачу
ACK Подтверждение Подтверждение сигнала
FIN Отбой Сигнал, на окончательное завершение
SYN Запрос на прием Заявка на соединение для приема
FIN Отбой Сигнал, на окончательное завершение
Time-out Контрольное время Окончание установленного контрольного времени

Рассмотрим работу алгоритма на Рис. 11.15. (стр. 1-3).

Алгоритм работы главного модуля совокупности программ управления TCP (стр.1)

Рис. 11.15. Алгоритм работы главного модуля совокупности программ управления TCP (стр.1)
Алгоритм работы главного модуля совокупности программ управления TCP (стр.2)

Рис. 11.15. Алгоритм работы главного модуля совокупности программ управления TCP (стр.2)
Алгоритм работы главного модуля совокупности программ управления TCP (стр.3)

увеличить изображение
Рис. 11.15. Алгоритм работы главного модуля совокупности программ управления TCP (стр.3)
Алгоритм работы главного модуля совокупности программ управления TCP (стр.4)

Рис. 11.15. Алгоритм работы главного модуля совокупности программ управления TCP (стр.4)
Исходящее соединение

Алгоритм находится в начальном состоянии ЗАКРЫТО (Оператор 1). В данном случае инициатор (клиент) вырабатывает команду для TCP активное открытие (Оператор 10); клиент подключается к прикладной программе и посылает сегмент SYN к серверу как запрос на прием (Оператор 12). После чего алгоритм включает контрольное время (Оператор 12) и переходит в состояние ПЕРЕДАЧА (SYN-SENT) пока он не получит SYN+ACK от TCP — подтверждение запроса на стороне сервера (Оператор 18). Он посылает сегмент ACK другому TCP (Оператор 19) и переходит в состояние УСТАНОВЛЕНО (ESTABLSHED) — Оператор 20 (стр.2). Это состояние передачи данных. Клиент остается в этом состоянии столько времени, сколько он посылает и получает данные.

Если алгоритм не получает сигнала подтверждения запроса SYN+ACK, то заканчивается контрольное время и поступает сигнал окончания тайм-аута (Оператор 15), ресурсы освобождаются и алгоритм переходит в начальное состояние ЗАКРЫТО (CLOSED) — Операторы 16, 17.

В состоянии ESTABLSHED (УСТАНОВЛЕНО) — Оператор 20 (стр.2) — алгоритм может получать данные (Операторы 30-32) или информацию от приложения (Операторы 33-35).

Клиент остается в этом состоянии столько времени, сколько он посылает и получает данные.

В этом состоянии клиент TCP может принять запрос на окончание от прикладной программы клиента. Он посылает сегмент Отбой (FIN) к другому TCP и переходит в состояния ОЖИДАНИЕ ОКОНЧАНИЯ1 – (FIN-WAIT1) — Оператор 36 (стр.3).

В этом состоянии клиент TCP ожидает получить ACK (Оператор 52, стр.3) от сервера TCP. ACK получен, клиент переходит в состояние FIN-WAIT2 (ОЖИДАНИЕ ОКОНЧАНИЯ2) — Оператор 54 (стр.3). Он не посылает ничего. Теперь соединение закрыто в одном направлении.

Клиент остается в этом состоянии, ожидая окончания соединения с другого конца. Если клиент получает сегмент FIN (Отбой) с другого конца — Оператор 55 (стр.3), он посылает сегмент ACK — Оператор 56 (стр.3) и переходит в состояние TIME-WAIT (ВРЕМЯ ОЖИДАНИЯ) — Оператор 42 (стр.3). Когда клиент в этом состоянии, он включает таймер контрольного времени и ждет, пока этот таймер закончится. Значение этого времени устанавливается равным двойному времени передачи максимального размера сегмента. Клиент остается еще некоторое в состоянии неполного закрытия, чтобы дублировать пакет, если какой-либо пакет достигает своего пункта назначения и будет отклонен. После тайм-аута клиент переходит в состояние CLOSED (ЗАКРЫТО) и алгоритм переходит в начальное состояние.

Кроме того, на Рис. 11.15.(стр.3) показаны еще два возможных случая завершения соединения: когда в этом состоянии приходит отбой с другого конца (одновременный отбой) либо отбой приходит вместе с подтверждением.

Входящее соединение

Алгоритм начинает работу в состоянии CLOSED (ЗАКРЫТО) – Оператор 1. В этом состоянии TCP алгоритм может получить запрос на пассивное открытие (Оператор 2). Он переходит в состояние LISTEN (СЛУШАЮ) – Оператор 4. Во время этого состояния TCP-сервер может получить сегмент SYN от клиента TCP – Оператор 5. В этом случае он посылает сегмент SYN+ACK – Оператор 6 — подтверждение заявки на передачу и переходит в состояние SYN–RCVD (Прием) – Оператор 7.

В этом состоянии TCP-сервер может получить сегмент ACK от клиента TCP (Оператор 58 на стр.4). Он переходит в состояние ESTABILISHED (УСТАНОВЛЕНО) – Оператор 20 (стр.2). Это состояние передачи данных. Алгоритм остается в этом состоянии на время получения и передачи данных, после чего выполняется алгоритм, указанный на Рис. 11.15.(стр.2)

В этом состоянии TCP-сервер может получить сегмент CLOSE (оператор 24) от клиента — это означает, что клиент желает завершить соединение. Он может послать сегмент FIN клиенту и перейти к состоянию FIN-WAIT1(ОЖИДАНИЕ ОКОНЧАНИЯ1). Далее выполняется алгоритм по Рис. 11.15.(стр.3)

По правилам составления спецификаций в каждом состоянии предусматривается поступление сигналов, которые отличаются от перечисленных для данного входа. Это ситуация сбоя или ошибки. В этом случае формируется сообщение об ошибке. На Рис. 11.15. эта часть алгоритма не показана.

Евгений Виноградов
Евгений Виноградов
Экстернат
Илья Сидоркин
Илья Сидоркин
Как получить диплом?
Владислав Журавель
Владислав Журавель
Россия, Ковдор