Software Lab

9. 4-Way Handshaking 본문

네트워크/4 Layer

9. 4-Way Handshaking

아임코더 2022. 10. 31. 10:59

TCP에서 접속 해제 과정을 4-Way Handshaking이라고 한다. 그렇다면 접속 해제 과정은 왜 필요한가? 신뢰성 있는 통신을 위해 생성된 커널 내부의 송수신 버퍼와 필요한 여러 변수가 더 이상 필요가 없다. 접속 해제 한다는 것은 결국 그것들을 메모리에서 해제하는 것을 의미한다.

서버나 클라이언트 상관없이 아무나 먼저 접속 해제를 시도 할 수 있다. 접속 해제를 먼저 시도하려는 송신 호스트는 소켓의 close 함수를 호출한다. 그러면 FIN 패킷이 간다. FIN은 접속 해제를 시도한다는 의미이다. 이것을 받은 수신 호스트는 그 응답으로 ACK 패킷을 보낸다. 그리고 곧이어 FIN 패킷을 보낸다. TCP는 양방향 통신이므로 서로 간에 접속이 된 상태이다. 그래서 접속도 서로 해제해야 하므로 상대방도 FIN 패킷을 보낸다. 이것을 다시 송신 호스트가 받으면 그 응답으로 ACK 패킷을 보낸다. ACK 패킷을 받은 수신 호스트는 커널 내부의 송수신 버퍼와 필요한 여러 변수를 해제한다.

그림에서 보면 송신 호스트는 수신 호스트에게 마지막 ACK를 보낸 후에 즉시 접속을 해제하지 않고 어느 정도 시간이 지난 후에 접속을 해제한다. 그렇게 하는 이유는 마지막 ACK를 수신 호스트가 받지 못할 수도 있기 때문이다. 그렇게 되면 수신 호스트는 다시 FIN 패킷을 보낼 테고 그 응답으로 ACK 패킷을 다시 보내줘야 하기 때문이다.

'네트워크 > 4 Layer' 카테고리의 다른 글

8. 3-Way Handshaking  (0) 2022.10.31
7. TCP Kernel 내부  (0) 2022.10.31
6. 혼잡제어(Congestion Control)  (0) 2022.10.31
5. 오류제어(Error Control)  (0) 2022.10.31
4. 흐름제어(Flow Control)  (0) 2022.10.31
Comments