게임 개발/게임 서버 프로그래밍

TCP 3/4 Way-handshake

지노윈 2021. 8. 30. 10:40
반응형

3 way-handshake (TCP 접속)

1단계 SYNchronize : TCP 접속 요청

2단계 SYN, ACKnowledge : 응답 및 요청

3단계 ACK : 2단계 SYN에 대한 응답

 

4 way-handshake(TCP 연결 해제)

1단계 FIN : TCP 연결 해제 요청

2단계 ACK : 서버는 확인 메시지 보내고 통신이 끝날때 까지

3단계 FIN : 서버가 통신이 끝나면 연결이 종료되었다고 클라이언트에게 FIN 전송

4단계 ACK : 확인 메시지 전송

해제는 어느 쪽에서든 먼저 할 수 있습니다. client, server 상관 없이 동일합니다.

가장 중요히 알아야 할 것은 먼저 close한 쪽에 TIME_WAIT 상태가 오래 지속 된다는 것입니다.

 

  • close를 먼저 요청한 쪽에 최종적으로 TIME_WAIT 상태가 남고 오랜동안 유지됩니다.
    시스템에 따라 30초~2분(2 MSL,  Maximum segment lifetime)정도 유지합니다.
    • 이렇게 하지 않으면 새로운 연결이 이전 연결의 지연 데이터를 받게 되기 때문입니다.
    • 그림에서 ack N+1이 유실 된다면 fin N이 재전송 되는데 이를 받을 수 있게 하기 위함도 있습니다.