TCP 연결종료 과정은 4-way handshaking으로 연결할 때보다 조금 더 복잡하다.
한 가지 대전제는 특별한 이유가 없다면 클라이언트 행동이 Active하다. 즉 연결을 맺고, 끊음이 모두 클라이언트이다.
(서버가 연결을 끊을 경우는 특수한 경우)
1) 연결이 되어 있는 상태에서 클라리언트는 서버로 FIN + ACK 를 보내어 연결 끊을 것을 알린다.
2 ) 그리고 클라이언트는 ACK 가 오기를 기다린다.
3) 이 후 서버도 FIN+ACK 를 보내고,
4) ACK가 오기를 기다린다.
이 과정이 4-way handshaking 이다. 여기서 중요한 상태 개념은 TIME_WAIT 상태이다. 서버로 부터 FIN+ACK 가 오면 클라이언트는 TIME_WAIT 상태가 된다. 이는 누군가 연결을 끊자고 한 것이고, 연결을 끊기 전에 발생하는 상태이다.
TIME_WAIT 상태에서 일정 시간이 지나면 CLOSED가 되는데, 이 때 소켓이 회수된다.
(소켓은 유한 자원이기에 쓸 수 있는 개수 제한이 있다.)
...
TCP 상태변화 다이어그램은 아래와 같다.
'네트워크' 카테고리의 다른 글
TCP 연결이라는 착각 (2) | 2024.11.04 |
---|---|
TCP, UDP 헤더 형식 그리고 게임서버 특징 (0) | 2024.10.31 |
TCP 연결과정과 3-way handshaking (1) | 2024.10.29 |
TCP, UDP란 (0) | 2024.10.24 |
Proxy Server (Forward Proxy, Reverse Proxy) (0) | 2024.10.24 |