Поделиться Поделиться

Фаза ликвидации соединения

На рис. 6.21 приведен пример этапа ликвидации соединения.

    
 Фаза ликвидации соединения - Инвестирование - 1
 
  
Рис. 6.21. Ликвидация TCP-соединения


Протокол ТСР реализует процедуру поэтапной ликвидации соединения, независимо в обоих направлениях. Необходимость в закрытии соединения возникает, когда приложение сообщает своему модулю TCP об отсутствии у него данных для отправки (пусть это будет хост А ). ТСР-модуль хоста А завершает передачу данных, находящихся в его буфере, ожидает получения подтверждения об их успешном приеме и отправляет хосту Бсегмент с установленным флагом FIN.

Получив этот сегмент, приемный модуль хоста Бинформирует свое приложение о завершении поступления данных от приложения, работающего на хосте А , но продолжает отсылать данные (если они есть) в противоположном направлении. Получив подтверждение на эти отправленные данные, модуль ТСР хоста Ботправляет свой сегмент FIN хосту Аи, после получения на него подтверждения, соединение считается ликвидированным.

В примере на рис. 6.21хост А инициализирует процедуру разрыва соединения, отправляя сегмент с флагом FIN. Модуль ТСР хоста Б подтверждает прием этого сегмента и передает извещение о запросе на закрытие соединения своему приложению. Одновременно, располагая данными для хоста А,модуль ТСР хоста Б отправляет сегмент со 150 байтами данных хосту А , и получает подтверждение их приема. Получив от своего приложения подтверждение разрыва соединения протокольный модуль хоста Б отправляет встречный сегмент FIN и получает на него подтверждение. Получив FIN от хоста Б модуль TCP хоста А переходит в состояние ожидания и запускает таймер TIME_WAIT с значением задержки равным удвоенному максимальному времени жизни сегмента. В этот период единственным сегментом, который может прийти хосту А , является повторный сегмент FIN от хоста Б (если соответствующий сегмент ACK от хоста Абыл утерян). Если такой сегмент приходит, то хост А повторно отсылает сегмент АСК и вновь перезапускает таймер TIME_WAIT. При достижении этим таймером значения нуль, хост А ликвидирует соединение и удаляет запись о нем из таблицы соединений.

Состояние ожидания обеспечивает выполнение еще одной задачи, а именно, оно защищает будущие реализации соединения между этими же прикладными процессами от обработки задержавшихся в сети сегментов предыдущего соединения. За двойное время жизни все, недоставленные сегменты этого соединения, будут уничтожены.

Протокол ТСР располагает также механизмом срочной ликвидации соединения посредством отправки RST-сегмента. Отправка этого сегмента является реакцией на получение от приложения примитива ABORT, или сегмента, адресованного приложению, которого на данном порте нет. Передающий модуль ТСР, отправив сегмент с флагом RST, уничтожает все данные, находящиеся в его буфере. Приемный модуль ТСР, получив сегмент RST, информирует о ликвидации соединения соответствующий прикладной процесс.

Похожие статьи