어제의 나보다 성장한 오늘의 나

TCP 3 Way-Handshake & 4 Way-Handshake 본문

CS/네트워크

TCP 3 Way-Handshake & 4 Way-Handshake

NineOne 2021. 4. 6. 01:39

TCP 3 Way-Handshake

  • TCP/IP 프로토콜을 이용하여 통신을 진행할 때, 두 종단 간 정확한 데이터 전송을 보장하기 위해 연결을 설정하는 과정이다.
  • 실제로 데이터 전달이 시작하기전에 한쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.

 

  • SYN : Synchronize Sequence Number
  • ACK : Acknowledgement
  1. 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다.
  2. 서버는 SYN요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYNflag가 설정된 패킷을 발송한다. 클라이언트가 다시 ACK으로 응답하기를 기다린다. 이때 서버는 SYN_RECEIVED 상태가 된다.
  3. 클라이언트는 서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게된다. 이때의 B서버 상태가 ESTABLISHED 이다.

4 Way-Handshake

  • 3 Way-Handshake는 TCP의 연결을 초기화 할 때 사용한다면, 4 Way-Handshake는 세션을 종료하기 위해 수행되는 절차이다.

 

  1. 클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다. 
  2. 서버는 클라이언트의 요청(FIN)에 대한 응답으로 ACK 패킷을 보낸다.
  3. 서버가 처리해야 할 모든 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN플래그를 전송한다.
  4. 클라이언트는 확인했다는 응답으로 ACK 패킷을 보낸다.
  5. 클라이언트의 ACK 패킷을 받은 서버는 소켓 연결을 close 한다.
  6. 클라이언트는 아직 서버로부터 받지 못한 데이터가 있을 것을 대비해 기다리는 과정을 거친다. (TIME_WAIT)

 

정리

  • TCP는 연결지향적인 특성과 자체적으로 오류를 처리하며 순서서가 뒤바뀐 패킷을 교정해주는 기능이 더불어 주로 데이터의 신뢰도가 중요하다고 판단되어질 때 쓰인다.
  • 신뢰도 확보가 중요하거나 용량이 큰 데이터(파일전송)를 전달해야 할 때, 실시간일 필요는 없을 때 활용된다.
  • 하지만 데이터의 신뢰성 보다 전송 속도가 중요시되는 경우면 어떨까? 스트리밍 서비스 같은 경우 속도가 생명이다. 만약 계속해서 버퍼링이 걸린다면 사용자는 매우 불쾌할 것이다.
  •  UDP 프로토콜은 위와 같은 과정이 없이 단순히 데이터만을 전송하므로 속도가 빠르다. 스트리밍  서비스 같은경우 약간의 화질이나 음질의 손상이 있다 해도 끊기지 않는 서비스가 중요하다. 그래서 UDP방식을 사용한다.

 

 

출처

github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Network/3%20way%20handshake.md

mindnet.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-22%ED%8E%B8-TCP-3-WayHandshake-4-WayHandshake

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

OSI 7계층  (0) 2021.04.07
UDP란?  (0) 2021.04.06
주소창에 naver.com을 치면 일어나는 일  (0) 2021.04.06
HTTP와 HTTPS의 차이는 무엇일까?  (0) 2021.04.04
쿠키 & 세션 (Cookie & Session)  (0) 2021.04.04
Comments