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

Примечание : В описании ниже термины клиент и сервер используются для простоты, однако процесс завершения сеанса может инициироваться любыми двумя узлами, закрывающими TCP сессию:
1. Когда у клиента больше нет данных, которые следует передать в потоке, он отправляет сегмент с установленным флагом FIN.
2. Сервер отправляет ACK, чтобы подтвердить получение FIN для завершения сеанса от клиента к серверу.
3. Сервер отправляет FIN клиенту, чтобы завершить сессию от сервера к клиенту.
4. Клиент отвечает ACK, чтобы подтвердить FIN от сервера.
Когда у клиентская сторона сеанса больше не имеет данных для передачи, она устанавливает флаг FIN в заголовке сегмента. Затем, серверная сторона соединения отправит нормальный сегмент, содержащий данные с установленным флагом ACK, используя номер подтверждения, указывая, что все байты данных были получены. Когда все сегменты были подтверждены, сеанс закрывается.
Сеанс в другом направлении закрывается, используя тот же самый процесс. Получатель указывает, что нет больше данных, которые надо передать, устанавливая флаг FIN в заголовке сегмента, отправленного источнику. Возвращенное подтверждение удостоверяет, что все байты данных были получены и что сеанс, в свою очередь, закрывается.
Как показано на рисунке, контрольные флаги FIN и ACK устанавливаются в заголовке сегмента, таким образом закрывая сеанс HTTP.
Также возможно завершить соединение трехсторонним квитированием. Когда у клиента больше нет данных для передачи, он отправляет FIN серверу. Если у сервера также больше нет данных, которые требуется отправить, он может ответить сегментом с одновременно установленными управляющими флагами FIN и ACK, комбинируя два шага в один. Клиент отвечает с ACK.
Далее: Управление TCP Сеансами