3단계의 과정을 거쳐 연결 성립
SYN : synchronization의 약자. 연결 요청 플래그
ACK: acknowledgement의 약자. 응답 플래그
이러한 서버와 클라이언트 간의 연결 설정 과정이 있기 때문에 TCP는 신뢰성이 있다. 이러한 연결 과정이 없는 UDP는 신뢰성이 없다
먼저 클라이언트가 연결을 닫으려고 할 때 FIN으로 설정된 세그먼트를 보냄
그리고 클라이언트는 FIN_WAIT_1 상태로 들어가고 서버의 응답을 기다림
서버는 클라이언트로 ACK라는 승인 세그먼트를 보내고 CLOSE_WAIT 상태에 들어감.
클라이언트가 세그먼트를 받으면 FIN_WAIT_2 상태에 들어감
서버는 LAST_ACK 상태가 되며 일정 시간 이후에 클라이언트에 FIN이라는 세그먼트를 보냄
클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가 되며, 이후 클라이언트는 어느 정도의 시간 (TIME_WAIT으로 설정된 시간)을 대기한 뒤 연결이 닫힘
지연 패킷을 받기 위해 필요(3단계에서 서버가 보내는 FIN이 늦게 도착할 수도 있음)
연결을 올바르게 닫기 위함 (클라이언트와 서버의 연결을 모두 닫기 위함)
2배의 최대 세그먼트 수명(MSL, maximum segment lifetime)을 기다린다. 기본적인 MSL은 2분. => 4분 기다림 (윈도우 기준, 우분투는 60초로 설정되어 있음)