← 질문 목록
#348깊이 0
TCP TIME_WAIT 상태의 유지 시간은 어떻게 결정되는가?
네트워크
TCP TIME_WAIT 상태의 유지 시간은 네트워크 패킷의 최대 수명인 MSL의 두 배로 결정된다. MSL은 패킷 하나가 네트워크에 살아있을 수 있는 최대 시간이다.
- 1. 능동적 종료자에서 수동적 종료자로: 마지막 ACK 전송 후 TIME_WAIT 진입
- 2. 수동적 종료자에서 능동적 종료자로: ACK 유실 시 FIN 재전송 (최대 1 MSL)
- 3. 능동적 종료자에서 수동적 종료자로: 재전송받고 ACK 재전송 (최대 1 MSL)
도식처럼 네트워크에서 왕복 패킷이 완전히 소멸하는 데 최대 2MSL이 걸린다. 그래야 마지막 ACK가 사라지거나 상대가 재전송한 FIN에 응답한다.
표준 규격인 RFC 793은 MSL을 2분으로 정의하여 4분을 권장한다. 그러나 실제 현대 OS는 이 시간을 훨씬 짧게 조정하여 사용한다.
리눅스는 2MSL을 60초로 고정하여 구현했다. 윈도우는 설정값을 변경하여 30초에서 240초 사이로 지정하게 만든다.