일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- ubuntu
- elasticsearch
- ansible
- 자동화
- kibana
- EKS
- 크롤링
- Linux
- crawling
- AWS
- DB
- zabbix
- airflow
- EC2
- MySQL
- module
- Automation
- powershell
- ELK
- GIT
- tcp
- API
- GCP
- 데이터 분석
- apt
- python
- 8.0
- 5.0
- 시스템자동화
- Selenium
Archives
- Today
- Total
Oops - IT
TCP 통신 중 TIME_WAIT 개념 본문
반응형
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 윈도우 소켓 프로그래밍 / 저자: 김선우
반응형
'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 |