TIME_WAIT TCP 연결

· 기능

클라이언트가 서버와의 연결 해제를 시작하면 연결 해제 상태를 알리기 위해 클라이언트와 서버 간에 교환이 이루어져요. 프로세스가 끝나면 클라이언트 소켓 연결은 가변적인 시간 동안 TIME_WAIT 상태로 유지돼요. 이는 정상적인 동작이며, Windows 운영 체제에서는 이 시간이 기본적으로 약 4분이에요.

다음 방법을 사용하면 이 동작을 줄이거나 없앨 수 있는데, 주의해서 사용해야 해요.



Regedit 

Windows Regedit를 사용해 TIME_WAIT 값을 줄일 수 있어요.

1. Regedit를 열고 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 레지스트리 하위 키에 접근해요.

2. TcpTimedWaitDelay라는 새 REG_DWORD 값을 만들어요.

3. 값을 초 단위로 설정해요. 예를 들어 5로 설정하면 TIME_WAIT가 최대 5초까지 대기한다는 의미예요.

4. 저장하고 시스템을 다시 시작해요.

LINGER 

TIME_WAIT 상태를 피하는 또 다른 방법은 SO_LINGER 소켓 옵션을 사용하는 거예요. 활성화하면 연결을 정상적으로 닫는 대신 클라이언트가 연결을 재설정해서 TIME_WAIT 상태를 피해요.

LingerState 속성을 사용해 이 옵션을 활성화할 수 있어요. 기본값은 -1이에요. 값을 0으로 설정하면 타임아웃 없이 소켓에서 연결 해제 시 연결이 재설정돼요.

이 옵션은 권장되지 않으며 최후의 수단으로만 사용해 주세요.