728x90
반응형
TCP 통신 과정 중 TCP 연결 종료 시 발생되는 TIME_WAIT 상태의 개념에 대해서 정리해보겠습니다.
1. TCP 종료 과정
- 아래 그림과 같이 연결 종료 시에는 4-way handshaking 이라고 하는 과정으로 종료 과정이 진행된다.
- Client에서 Server로 종료 메시지(FIN)를 보냄
- Server는 응답 메세지(ACK)를 보내고 종료 준비 상태로 들어감
- Server에서 종료 준비 완료시 Client로 종료 메세지(FIN)을 보냄
- Client에서 Server로 응답 메세지(ACK)를 보냄
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 |