Упрощённая диаграмма состояний TCP.
Состояния сеанса TCP | |
CLOSED | Начальное состояние узла. Фактически фиктивное |
LISTEN | Сервер ожидает запросов установления соединения от клиента |
SYN-SENT | Клиент отправил запрос серверу на установление соединения и ожидает ответа |
SYN-RECEIVED | Сервер получил запрос на соединение, отправил ответный запрос и ожидает подтверждения |
ESTABLISHED | Соединение установлено, идёт передача данных |
FIN-WAIT-1 | Одна из сторон (назовём её узел-1) завершает соединение, отправив сегмент с флагом FIN |
CLOSE-WAIT | Другая сторона (узел-2) переходит в это состояние, отправив, в свою очередь сегмент ACK и продолжает одностороннюю передачу |
FIN-WAIT-2 | Узел-1 получает ACK, продолжает чтение и ждёт получения сегмента с флагом FIN |
LAST-ACK | Узел-2 заканчивает передачу и отправляет сегмент с флагом FIN |
TIME-WAIT | Узел-1 получил сегмент с флагом FIN, отправил сегмент с флагом ACK и ждёт 2*MSL секунд, перед окончательным закрытием соединения |
CLOSING | Обе стороны инициировали закрытие соединения одновременно: после отправки сегмента с флагом FIN узел-1 также получает сегмент FIN, отправляет ACK и находится в ожидании сегмента ACK (подтверждения на свой запрос о разъединении) |