티스토리 뷰

IT/Network

[네트워크] TIME-WAIT 상태와 필요한 이유

주인장 진빼이

4way-Handshake 과정에서 TIME-WAIT 상태에 대해 알아보자.

클라이언트가 우선적으로 접속종료를 요청하려고 한다. 접속 종료를 먼저 요청한 호스트인 클라이언트에게 TIME-WAIT 상태가 발생된다. TIME-WAIT은 말 그대로 기다린다는 의미이다. TIME-WAIT 상태가 존재함으로서 접속종료를 요청하는 호스트인 클라이언트가 마지막으로 송신하는 응답 메시지(ACK)에 문제가 발생할 경우 재송신이 가능해진다. 호스트가 TIME-WAIT 상태라면 포트를 계속 사용하는 상태이므로 새로운 연결에서 기존에 사용했던 포트를 사용할 수는 없다.

 

아래 그림과 함께 가정을 살펴보자.

4way-Handshake 과정에서 클라이언트가 아래 그림과 같이 접속 종료 세그먼트를 송신하고 클라이언트는 서버에게 응답 메시지(ACK)와 FIN 신호(세그먼트)를 수신한 뒤 마지막으로 서버에게 ACK를 송신하려 한다. 이때, 송신한 세그먼트가 중간에 소멸되고, 클라이언트의 상태가 CLOSED 되었다고 가정해보면 클라이언트는 계속해서 서버에게 응답 메시지(ACK)를 송신할 것이다. 하지만 포트는 닫혀있으므로 송신을 할 수 없게 된다. 그리고 서버는 접속 종료를 요청한 클라이언트의 응답 메시지만 계속해서 기다릴 뿐이다.

 

 

 

 

만약 TIME-WAIT 상태가 존재한다면 클라이언트가 세그먼트를 송신할 때 문제가 발생하면 TIME-WAIT 상태인동안에 포트를 계속 사용중이므로 세그먼트를 재송신을 할 수 있게된다. 재송신한 세그먼트를 수신한 서버는 정상적으로 CLOSED 상태가 되어 접속 종료 요청을 처리할 수 있게 된다.

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함