TCP Handshake

숭이·2021년 5월 21일

네트워크

목록 보기
6/11

3-way Handshake

  • TCP는 장치들 사이에 논리적인 접속을 성립하기 위해 3-way Handshake를 사용
  • 3-way Handshake : TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정
  1. 클라이언트가 서버에 SYN 신호를 보내고 SYN-SENT 상태가 됨

    • SYN : TCP에서 세션을 성립할 때 가장 먼저 보내는 패킷.
  2. 서버가 SYN을 수신하고 SYN에 대한 ACK와 새로운 SYN을 클라이언트에게 보내고 SYN-RECEIVED 상태가 됨

    • ACK : 상대방으로부터 패킷을 받았다는 걸 알려주는 패킷
  3. 클라이언트가 서버로부터 받은 SYN에 대한 ACK를 서버에 보내고 ESTABLISHED 상태가 됨

  4. 서버는 클라이언트가 보낸 SYN를 받고 ESTABLISHED 상태가 됨

-> 클라이언트가 서버가 각각 SYN 신호를 보내고 제대로 받았다는 ACK 신호를 되돌려주는 방법으로 신뢰성있는 연결을 할 수 있음!

4-way Handshake

  • 사용중인 연결을 종료하기 위해 수행되는 절차
  1. 사용자가 연결을 종료하기위해 FIN 플래그를 전송하고 FIN-WAIT-1상태가 됨
  2. 서버는 사용자가보낸 FIN신호를 수신하고 알겠다는 표시인 ACK를 클라이언트에게 전송. 하지만 수신받고 있는 데이터가 남아있기 때문에 자신의 통신이 끝날때까지 기다리는 CLOSE-WAIT 상태가 됨(이때 클라이언트가 수신받으면 FIN-WAIT-2단계가 된다)
  3. 서버에서 통신이 끝나면 연결을 종료하기위해 FIN을 클라이언트에게 전송하고 LAST-ACK 상태가 됨
  4. 클라이언트는 서버의 FIN 플래그를 수신받고 확인했다는 신호인 ACK를 보냄(이때 연결종료 플래그인 FIN을 받고 뒤늦게 도착하는 데이터가 있을 수 있으므로 잠시동안 TIME-WAIT상태에 있다가 종료)
  5. 서버는 클라이언트의 ACK를 받고 연결종료

0개의 댓글