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

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

       
 
 
   
Рис. 6.21. Ликвидация TCP-соединения

 


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

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

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

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

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



php"; ?>