Для прекращения соединения в заголовке сегмента должен быть установлен управляющий флаг Finish (FIN). Для завершения каждого одностороннего TCP-сеанса используется двухстороннее рукопожатие, которое состоит из сегмента FIN и сегмента ACK. Следовательно, чтобы завершить один сеанс связи, поддерживаемый протоколом TCP, необходимы четыре обмена данными, которые завершат оба сеанса, как показано на рис. 1.

Примечание. В данной трактовке понятия «клиент» и «сервер» используются в качестве справки для облегчения понимания, но процесс завершения связи может быть инициирован любым из двух узлов с открытым сеансом.

Шаг 1. Когда у клиента больше нет данных для отправки в потоке, он отправляет сегмент с установленным флагом FIN.

Шаг 2. Сервер отправляет ACK, чтобы подтвердить получение FIN для завершения сеанса клиент-сервер.

Шаг 3. Сервер отправляет FIN клиенту, чтобы завершить сеанс сервер-клиент.

Шаг 4. Клиент возвращает ACK для подтверждения получения FIN от сервера.

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

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

На рис. 2 и 3 показано, что управляющие флаги FIN и ACK установлены в заголовке сегмента, закрывая таким образом HTTP-сеанс.

Соединение можно также завершить с помощью трёхстороннего рукопожатия. Когда у клиента больше нет данных для отправки, он передаёт FIN серверу. Если у сервера также нет данных для отправки, он может в ответ переслать сегменты с установленными флагами FIN и ACK, объединяя два шага в один. В ответ клиент отправляет ACK.