3 HandShake, 4 HandShake

오준상·2021년 5월 8일
0

TCP, UDP란?

TCP와 UDP는 전송계층에서 사용되는 데이터 전송 프로토콜입니다.

TCP

TCP는 연결형 데이터 전송 프로토콜입니다.
데이터 전송중에 손실된 데이터가 있으면 재요청을 보내서 안정성을 확보합니다.

3 handshake로 연결을 시작하고 4 handshake로 연결을 끊는다.

UDP

UDPsms 비연결형 데이터 전송 프로토콜입니다.
데이터의 안정성을 신경쓰지 않고, 보내기만 하는 프로토콜입니다.

스트리밍 서비스에서 자주 사용합니다.

3 handshake

TCP는 정확한 전송을 보장해야 한다. 따라서 통신하기에 앞서, 논리적인 접속을 성립하기 위해 3 way handshake 과정을 진행한다.

https://media.geeksforgeeks.org/wp-content/uploads/TCP-connection-1.png

  1. 클라이언트가 서버에게 SYN 패킷을 보냄 (sequence : x)
    SYN_SENT 상태가 되어서 서버에서 올 패킷을 기다린다.
  2. 서버가 SYN을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보냄
    이제 클라이언트에서 ACK를 기다리는 SYN_RECIVED 상태가 된다.
  3. 클라이언트는 서버의 응답은 ACK와 SYN 패킷을 받고, ACK를 서버로 보냄
  4. 연결이 성립됨

4 handshake

TCP에서 연결을 종료할 때 실행되는 과정.

https://media.geeksforgeeks.org/wp-content/uploads/CN.png

  1. 클라이언트는 서버에게 연결을 종료한다는 FIN 플래그를 보낸다.
  2. 서버는 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보낸다. (이때 모든 데이터를 보내기 위해 TIME OUT 상태가 된다)
  3. 데이터를 모두 보냈다면, 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보낸다.
  4. 클라이언트는 FIN을 받고, 확인했다는 ACK를 서버에게 보낸다. (아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT을 통해 기다린다.)
  • 서버는 ACK를 받은 이후 소켓을 닫는다 (Closed)
  • TIME_WAIT 시간이 끝나면 클라이언트도 닫는다 (Closed)
profile
만들고싶은걸만듭니다

0개의 댓글