IT 상식

TCP 통신 중 TIME_WAIT 개념

김모우 2020. 12. 10. 20:47
728x90
반응형

TCP 통신 과정 중 TCP 연결 종료 시 발생되는 TIME_WAIT 상태의 개념에 대해서 정리해보겠습니다.

 

1. TCP 종료 과정

 

- 아래 그림과 같이 연결 종료 시에는 4-way handshaking 이라고 하는 과정으로 종료 과정이 진행된다.

 

  •   Client에서 Server로 종료 메시지(FIN)를 보냄
  •   Server는 응답 메세지(ACK)를 보내고 종료 준비 상태로 들어감
  •   Server에서 종료 준비 완료시 Client로 종료 메세지(FIN)을 보냄
  •   Client에서 Server로 응답 메세지(ACK)를 보냄

 

TCP 연결 종료 과정

 

2. 실제 Socket이 종료되는 시기

 

- Client의 경우 Server로 응답 메세지(ACK)를 보낸 후 잠시 대기하다가 CLOSED 상태가 된다.

- Server의 경우 Client로부터 응답 메세지(ACK)를 받는 즉시 CLOSED 상태가 된다.

 

 

 

3. TIME_WAIT 상태가 필요한 이유

 

- 위의 종료되는 시기에 따라 만약 Client에서 Server로 보낸 응답 메세지(ACK)가 소실되었을 때를 생각해보자

 

 

- 위와 같은 경우 TIME_WAIT 상태가 없다면 3번 작업인 Server는 Client 쪽으로 FIN 메세지를 계속해서 보내고 Client는 이미 CLOSED 상태에 들어가 아래 그림과 같이 응답을 할 수 없게되고, Server에서는 소켓을 영원히 종료하지 못하게 된다.

 

- 그러나 TIME_WAIT 상태가 존재한다면 Server에서 종료 메세지(FIN)을 재 전송했을 때 살아있는 Client의 소켓이 응답 메세지(ACK)를 서버로 전송하게되며 정상적으로 소켓의 종료가 가능해진다.

 

 

 

참고 서적

- 한빛 미디어: TCP/IP 윈도우 소켓 프로그래밍 / 저자: 김선우

728x90
반응형

'IT 상식' 카테고리의 다른 글

TCP/IP 프로토콜 개요  (0) 2021.01.04
DHCP 프로토콜 동작 원리  (0) 2020.12.14
파티션 형식 변경(MBR, GPT)  (0) 2020.12.04
Kerberos 프로토콜 인증 방식  (0) 2020.11.22
BIOS와 UEFI 모드 차이  (0) 2020.10.25