4 Way handshake 종료 과정에서 클라이언트가 FIN 패킷을 전송한 후, 상대방의 ACK를 받은 뒤 일정 시간
동안 유지 되는 상태를 말한다.
📌 이유
마지막 ACK 패킷이 손실될 가능성이 있기 때문에 재전송을 대비해 일정 시간 동안 종료하지 않고 머문다.
네트워크에 남아있는 패킷( 지연된 패킷 )으로 인해 문제가 발생할 수 있기 때문에 대기한다.
- 앞서 말한 문제란, 이전 연결에서 남아 있는 패킷이 새로운 연결에 영향을 미칠 수 있는 것을 말한다.
✅ TIME_WAIT 기본 조건
- 일반적으로 2 * MSL 동안 유지 된다.
- MSL은 한 패킷이 네트워크에서 생존할 수 있는 최대 시간을 말한다. ( 보통 30초에서 최대 2분 )
- 즉, TIME_WAIT 상태는 1 ~ 4분 정도 유지 된다.
TIME_WAIT 상태가 많아지면, 서버의 포트가 빠르게 소진되어 새로운 연결을 맺기 어려울 수 있다.
이를 해결하기 위한 방법은 아래와 같다.
- 소켓 옵션 조정
- SO_REUSEADDR 옵션 사용
- 동일한 포트를 재사용할 수 있도록 허용하는 옵션이다.
- 단, 이는 TIME_WAIT 상태를 없애는 것이 아니고, 해당 포트를 다른 프로세스가 빠르게 재사용 할 수 있도록 해준다.
- SO_REUSEADDR 옵션 사용
- TcpTimeWaitDelay 값 줄이기
- TcpTimeWaitDelay는 TIME_WAIT 상태를 유지하는 시간을 설정하는 레지스트리 값이다. 기본값은 240초 이지만, 이를 30초 정도로 줄여주면 포트가 빨리 해제된다.
'IT' 카테고리의 다른 글
[IT] 4 Way Handshake ( TCP 연결 종료 ) (0) | 2025.04.09 |
---|---|
[IT] Sliding Window ( 슬라이딩 윈도우 ) (0) | 2025.04.08 |
[IT] 3 Way Handshake (0) | 2025.04.08 |
[IT] 운영체제 명령어 삽입 ( OS Command Injection ) (0) | 2025.04.01 |
[IT] 크로스사이트 스크립트 (0) | 2025.04.01 |