본문 바로가기
츄Log/네트워크 프로그래밍 끄적

TCP 연결 종료시 상태 전이

by 츄츄🦭 2023. 12. 13.
728x90

안녕하세요!

 

오늘은 TCP 연결 종료시의 상태를 한 번 살펴보려고 합니다. 

대표적인 클라이언트와 서버 입장에서의 전이만 표현했습니다.

 

전체적인 TCP 상태 전이는 다른 포스팅에서 작성해보겠습니다.

 

아래 발그림을 같이 보겠습니다. 

첫 워터마크를 넣은 그림입니다. 참 구리네요!

 

보통 Client가 연결 종료를 시작하는 Active Close를 하게 됩니다.

그렇다면 서버는 연결 종료 시작을 받는 Passive Close를 하게 됩니다.

 

클라이언트는 FIN을 보내고 ACK를 받으면서 FIN_WAIT_1 -> FIN_WAIT_2 상태로 들어가게 됩니다.

이 때, 서버로부터 FIN이 오기 전까지 클라이언트는 half-close 상태로 계속해서 데이터를 수신할 수 있습니다

(물론 half-close를 할 수 있도록 프로그래밍 해야하며, half-close에 대해서도 한 번 포스팅 해봐야겠습니다.) 

 

서버는 클라이언트에게 FIN을 보내고, 클라이언트는 이에 대한 응답인 ACK를 보내면서 서버는 종료가 됩니다.

이 때 클라이언트는 일정 시간동안 TIME_WAIT 상태를 갖게 됩니다.

(TIME_WAIT에 관한 포스팅)

 

일정 시간동안 TIME_WAIT 상태였던 클라이언트 소켓은 종료되고, 사라지게 됩니다.

(결과적으로 소켓 또한 File이기 때문에 CLOSED 상태로 표현하나 사실상 없어진다고 봐도 될 것 같습니다.)

 


TCP는 키워드도 많고 관련해서 이야기할 것이 참 많습니다.

다음 포스팅에서 뵙겠습니다!

728x90