double arrow

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: