Zakończenie połączenia Prawidłowe zakończenie połączenia może być zainicjowane przez dowolną stronę. Polega ono na wysłaniu pakietu z ustawioną flagą FIN (). Pakiet taki wymaga potwierdzenia flagą ACK. Najczęściej po otrzymaniu pakietu z flagą FIN, druga strona również kończy komunikację, wysyłając pakiet z flagami FIN i ACK. Pakiet taki również wymaga potwierdzenia przez przesłanie ACK.

Dopuszcza się również awaryjne przerwanie połączenia poprzez przesłanie pakietu z flagą RST (). Pakiet taki nie wymaga potwierdzenia.

Stany połączenia Połączenie TCP może znajdować się w jednym z następujących stanów: LISTEN Gotowość do przyjęcia połączenia na określonym porcie przez serwer. SYN-SENT Pierwsza faza nawiązywania połączenia przez klienta. Wysłano pakiet z flagą SYN. Oczekiwanie na pakiet SYN+ACK. SYN-RECEIVED Otrzymano pakiet SYN, wysłano SYN+ACK. Trwa oczekiwanie na ACK. Połączenie jest w połowie otwarte (ang. ). ESTABLISHED Połączenie zostało prawidłowo nawiązane. Prawdopodobnie trwa transmisja. FIN-WAIT-1 Wysłano pakiet FIN. Dane wciąż mogą być odbierane, ale wysyłanie jest już niemożliwe. FIN-WAIT-2 Otrzymano potwierdzenie własnego pakietu FIN. Oczekuje na przesłanie FIN od serwera. CLOSE-WAIT Otrzymano pakiet FIN, wysłano ACK.