네트워크

TCP 연결종료와 상태변화

개발정리 2024. 10. 29. 10:37

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