CS

[Network] TCP TIME_WAIT

지수쓰 2021. 6. 2. 13:15
반응형

TCP TIME WAIT

종료 요청을 한 (대체로 클라이언트?)가 FIN을 보내고 2MSL만큼 기다리고 있다가 CLOSED상태로 감

 

TIME WAIT이 필요한 이유

- 종료 과정에 있는 마지막 ACK이 분실될 수 있으므로 1분정도 대기

(서버로부터 FIN을 재 전송받아 ACK을 다시 보내주기 위함 )

 

- PORT관련

time wait 상태가 없다면 연결이 종료되고 바로 연결요청이 들어왔을때 만일의 상황에 포트번호가 겹치게 할당되었을경우 

이전 연결과 다음 연결의 PORT번호가 같아서 어플리케이션 입장에서 두개를 구분하지 못하게됨 

-> PORT 번호를 FIN이후에 잠시 가지고 있도록 할당을 해지하지 않는것. time wait상태동안..

 

이렇게 해서 생기는 문제점?

1. 포트 번호가 고갈될 수 있음

2. 서비스 속도 지연

네이버같은 빠른 서비스에서 timewait되는 동안 지연된다면?ㄷㄷ 

클라이언트 단에서 연결을 요청할때마다 connection을 생성, 해제하는게 아니라 connection pool을 만들어 거기서 사용

서버 단에서 keep -alive설정으로 tcp연결을 한번에 해제하지않고(stateless) 몇번 유지...

https://brainbackdoor.tistory.com/127

 

HTTP 완벽가이드 스터디 #4 -d Keep-Alive

이번 포스팅에서는 HTTP 완벽가이드, 네트워킹과 웹 성능 최적화 기법, 리눅스 커널 이야기, 와이어샤크를 활용한 실전 패킷 분석 책을 활용하였습니다. 4장 Connection 관리 4. Keep-Alive * TIME_WAIT

brainbackdoor.tistory.com