TCP는 TCP/IP 4계층 중 전송 계층에서 사용되는 프로토콜 중 하나임

또 다른 프로토콜인 UDP와 달리 신뢰성을 보장하는 데이터 전송이 특징인데, 이러한 클라이언트와 서버 간의 신뢰성 확보에 사용되는 방법이 "3 Way HandShake"임

3 Way HandShake를 통해 신뢰성을 확보한 후 데이터 전송이 끝나면 또 다시 4 Way HandShake를 통해 클라이언트와 서버 간의 연결을 해제함

 

3 Way HandShake

 

SYN Synchronization , 연결 요청 플래그
ACK Ackknowledgement , 응답 플래그
ISN Initial Sequence Numbers , 초기 네트워크 연결할 때 할당된 32비트 고유 시퀀스 번호

 

1. SYN 단계 

  • 클라이언트가 서버에게 '클라이언트의 ISN'을 포함하여 SYN 세그먼트를 전송

2. SYN + ACK 단계

  • 서버가 클라이언트로부터 SYN을 수신한 후, '서버의 ISN'과 '승인번호'(클라이언트의 ISN에 +1 한 값)를 포함하여  SYN + ACK 세그먼트를 전송

3. ACK 단계

  • SYN + ACK 단계를 통해, 서버의 ISN 값을 받게된 클라이언트가 '승인번호'(서버의 ISN에 +1한 값)를 포함하여 서버에게 ACK 세그먼트를 전송 

 

4 Way HandShake (TCP 연결 해제 과정)

 

FIN Finish , 연결 해제 요청 플래그
ACK Ackknowledgement , 응답 플래그

 

1. FIN 전송 [클라이언트 -> 서버]

  • 클라이언트가 서버에게 연결 해제를 위해 FIN으로 설정된 요청 세그먼트 전송 후 서버의 응답을 기다림

2. ACK 전송 [서버 -> 클라이언트]

  • 서버가 클라이언트에게 ACK이라는 응답 세그먼트 전송

3. FIN 전송 [서버 -> 클라이언트]

  • 이전 단계에서 응답 세그멘트 전송 후 일정시간 이후에, 클라이언트에게 FIN 세그먼트 전송

4. ACK 전송 [클라이언트 -> 서버]

  • 이전 단계에서 서버로부터 FIN 세그먼트를 수신한 클라이언트는 일정시간 대기한 후, 서버로 ACK 세그먼트를 전송
    (지연되는 패킷이 있을 수 있기 때문에 잠시 대기하는 것)
  • 클라이언트로부터 ACK을 수신한 서버는 CLOSED 상태가 되고, 클라이언트는 또 다시 일정시간동안 대기 후 CLOSED 상태가 되어 연결이 해제됨

 

+ Recent posts