Назад | Содержание | Вперед

Терминология

Прежде чем мы сможем обсудить многие детали действия TCP протокола, нам необходимо ввести подробную терминологию. Для поддержания TCP соединения необходимо иметь несколько переменных. Мы решили, что эти переменные будут помещены в соответствующую запись - блок управления передачей (Transmission Control Block - TCB). Среди переменных блока TCB имеются номера местного и чужого сокетов, флаги безопасности и приоритета для данного соединения, указатели буферов посылки и получения, указатели текущего сегмента и очереди повторной посылки. Кроме всего этого в TCB имеются несколько переменных, имеющих отношение к номерам очередей отправителя и получателя.

Отправление

SND.UNA посылка неподтверждена
SND.NXT послать следующий сегмент
SND.WND отправить окно
SND.UP отправить срочный указатель
SND.WL1 номер очереди сегмента, использованный для обновления последнего окна
SND.WL2 номер подтверждения в сегменте, используемый для обновления последнего окна
ISS первоначальный номер очереди отправления

Получение

RCV.NXT - получить следующий сегмент
RCV.WND - получить окно
RCV.UP - получить срочный указатель
IRS - первоначальный номер очереди получения

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

Очередь отправления

  1. старые номера очереди, которые получили подтверждение
  2. номера очереди для данных, не получивших подтверждения
  3. номера очереди, допущенные к новой передаче
  4. следующие номера очереди, чья передача еще не разрешена

Рис. 2 Очередь отправления

Окно отправления - это участок очереди, отмеченный меткой 3 на рисунке 2.

Очередь получения

  1. старые номера очереди, которые получили подтверждение
  2. номера очереди, допущенные к очередному этапу получения
  3. следующие номера очереди, еще не получившие разрешения

Рис.3 Очередь получения

Окно получения - это участок очереди, отмеченный меткой 2 на рисунке 3.

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

Переменные для очередного сегмента

SEG.SEQ номер очереди для сегмента
SEG.ACK номер подтверждения для сегмента
SEG.LEN длина сегмента
SEG.WND окно для сегмента
SEG.UP срочный указатель для сегмента
SEG.PRC приоритет для сегмента

Соединение во время функционирования проходит через серии промежуточных состояний. Это состояния LISTEN, SYN-SENT, SYN-RECEIVED, ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT, а также фиктивное состояние CLOSED. Состояние CLOSED является фиктивным, поскольку оно представляет состояние, когда не существует блока TCP, а потому и нет соединения. Краткое описание состояний:

LISTEN Ожидание запроса на соединение со стороны чужих портов и программ TCP
SYN-SENT Ожидание парного запроса на установление соединения. С нашей стороны запрос уже сделан.
SYN-RECEIVED Ожидание подтверждения после того, как запрос соединения уже принят и отправлен.
ESTABLISHED Состояние открытого соединения, принимаемые данные можно представить пользователю. Это нормальное состояние соединения в фазе передачи данных.
FIN-WAIT-1 Ожидание запроса от чужой программы TCP, или подтверждения ранее отправленного запроса на закрытие соединения.
FIN-WAIT-2 Ожидание запроса на закрытие соединения со стороны чужой программы TCP.
CLOSE-WAIT Ожидание запроса на закрытие соединения со стороны своего клиента.
CLOSING Ожидание подтверждения со стороны чужой программы TCP запроса о закрытии соединения.
LAST-ACK Ожидание запроса на закрытие соединения, ранее отправленного чужой программе TCP (запрос включал также подтверждение получения чужого запроса на закрытие соединения).
TIME-WAIT Ожидание когда истечет достаточное количество времени и можно быть уверенным, что чужая программа TCP получила подтверждение своего запроса на закрытие соединения.
CLOSED Состояние полного отсутствия соединения.

Соединение TCP переходит с одного состояния на другое в ответ на события. Событие - это запросы клиента (открытие, посылка, получение, закрытие, отказ, получение состояния соединения), приход сегментов, и особенно тех, которые содержат флаги SYN, ACK, RST и FIN, а также истечение выделенного времени.

Диаграмма состояний на рисунке иллюстрирует лишь смену состояний, а также вызвавшие это события, производимые действия, но не адреса, условия ошибок, не действия, не связанные прямо с изменением состояния.

Замечание. Данная диаграмма является лишь сводной, но не должна восприниматься как полная спецификация.


Рис. 4 Диаграмма состояний


Назад | Содержание | Вперед
Hosted by uCoz