Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Технологии корпоративных сетей. Энциклопедия.doc
Скачиваний:
210
Добавлен:
15.08.2019
Размер:
51.83 Mб
Скачать

Состояние системы

Соединения протокола TCP переходят из одного состояния в другое в ответ на определенные события — запросы клиента, приход сегментов с флагами SYN, АСК, RST, FIN — или по истечении заданного времени. Соединение может на­ходиться в одном из следующих состояний:

  • LISTEN — ожидание запроса на соединение со стороны внешних (чужих) портов и внешних (чужих) программ TCP.

  • SYN-SENT — ожидание парного запроса на установление соединения (со стороны отправителя запрос уже сделан).

  • SYN-RECEIVED — ожидание подтверждения после того, как запрос на установление соединения уже принят и отправлен.

  • ESTABLISHED — соединение установлено. Принимаемые от приложения данные можно передать пользователю.

  • FIN-WAIT-1 — ожидание запроса от чужой программы TCP или подтвер­ждение ранее отправленного запроса на закрытие соединения.

  • FIN-WAIT-2 — ожидание запроса на закрытие соединения со стороны чужой программы TCP.

  • CLOSE-WAIT — ожидание запроса на закрытие соединения со стороны своего клиента.

  • CLOSING — ожидание подтверждения запроса о закрытии соединения со стороны чужой программы TCP.

  • LAST-ACK — ожидание ответного запроса на закрытие соединения на посланный запрос о закрытии соединения, который был ранее отправлен чужой программе TCP.

  • TIME-WATT — соединение находится в этом состоянии на протяжении времени, достаточного для того, чтобы быть уверенным, что чужая про­грамма TCP получила подтверждение своего запроса на закрытие соеди­нения.

  • CLOSED — соединение закрыто.

Основное состояние соединения — ESTABLISHED (соединение установле­но). В этом состоянии происходит обмен данными между абонентами.

Блок управления передачей

Для обеспечения надежной передачи данных по установленным логическим со­единениям между прикладными программами протокол TCP должен обеспечи­вать следующие функции:

  • передачу данных;

  • проверку достоверности данных при передаче;

  • управление потоком данных;

  • разделение каналов связи;

  • обслуживание установленных соединений;

  • соблюдение установленного приоритета пользователей;

  • обеспечение соответствующего уровня безопасности.

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

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

Для сохранения всей совокупности информации, необходимой для создания и поддержки соединения, каждый раз при установлении соединения создается структура данных, называемая блоком управления передачей (Transmission Control Block, TCB). Блок управления передачей ТСВ хранит всю постоянную информацию по созданному соединению и текущие значения нескольких пе­ременных, например, определяющих очередность отправления. К постоянной информации относятся: номера локального и удаленного сокетов, флаги безо­пасности и приоритета для данного соединения, указатели на буферы отправки и приема. Блок ТСВ поддерживает несколько переменных, определяющих оче­редность отправления и получения сегментов. К ним относятся переменные, связанные с отправкой:

  • SND.UNA — посылка не подтверждена;

  • SND.NXT — послать следующий сегмент;

  • SND.WND — отправить окно;

  • SND.UP — отправить срочный указатель;

  • SND.WL1 — номер в очереди сегмента, использованный для обновления последнего окна;

  • SND.WL2 — номер подтверждения в сегменте, используемый для обнов­ления последнего окна;

  • ISS — первоначальный номер в очереди отправки;

и переменные, связанные с получением:

  • RCV.NXT — получить следующий сегмент;

  • RCV.WND - получить окно;

  • RCV.UP — получить срочный указатель;

  • IRS — первоначальный номер в очереди получения.

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

  • SEG.SEQ — номер в очереди для сегмента;

  • SEG.ACK — номер подтверждения для сегмента;

  • SEG.LEN — длина сегмента;

  • SEG.WND — окно для сегмента;

  • SEG.UP — срочный указатель для сегмента;

  • SEG.PRC — приоритет для сегмента.

На рис. 7.4 показана последовательность этапов отправки и приема данных.

На примере рис. 7.4 рассмотрим принцип использования некоторых перемен­ных. Отправитель данных с помощью переменной SND.NXT отслеживает следу­ющий номер сегмента в очереди, подлежащего отправке. Получатель данных с помощью переменной RCV.NXT отслеживает номера прибывающих сегментов. В поле переменной SND.UNA отправитель данных помещает самый старый номер сегмента, который уже был отправлен, но на который еще не получено подтверждение (АСК). Когда отправитель создает и посылает новый сегмент, он увеличивает значение своей переменной SND.NXT. Адресат при получении этого сегмента увеличивает значение своей переменной RCV.NXT и отправляет подтверждение. При получении подтверждения увеличивается значение пере­менной SND.UNA отправителя. Разность значений переменных SND.NXT и SND.UNA может служить мерой задержки сегментов в сети. Переменные увели­чиваются на длину поля данных в сегменте.