이론/네트워크

TCP handshake 란?

모달조아 2022. 12. 18. 19:07
  • 등장 배경
    • IP 프로토콜 만으로는 통신자들 간의 연결상태를 알지 못함.
    • 중간에 데이터가 소실되거나 데이터의 순서가 잘못되어도 알 수 있는 방법이 없음.
  • TCP
    • 3 way handshake 의 단계
      • 연결을 초기화할 때 거치는 과정
      • SYN: 클라이언트가 서버와 연결하기 위해 커넥션을 보낸다.
      • SYN+ACK: 서버가 클라이언트가 보낸 SYN 을 받고 받았다는 ACK 과 함께 SYN 을 보낸다.
      • ACK: 다시 클라이언트에서 서버가 보낸 SYN 을 받고 ACK 을 보낸다.
      • 이 과정을 통해 클라이언트와 서버 모두 통신할 준비가 되었다는 것을 서로가 확인할 수 있다.
    • 4 way handshake 의 단계
      • 종료하기 위해 수행되는 과정
      • 클라이언트 FIN-WAIT: 클라이언트가 연결을 종료하겠다는 FIN 신호를 보내고 FIN-WAIT 상태가 됨.
      • 서버 CLOSE-WAIT: 서버가 클라이언트의 FIN 을 받고 확인했다는 ACK 을 보내고 자신의 통신이 끝날 때까지 대기함. 이때 서버 상태는 CLOSE-WAIT.
      • 서버 LAST-ACK: 서버의 통신이 끝나면 연결 해지 준비가 되었다는 신호로 FIN을 보냄.
      • 클라이언트 TIME-WAIT: 서버의 FIN 을 받았다는 ACK 을 보내고 TIME-WAIT 상태가 됨. 아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME-WAIT 상태로 기다리는 것임.
      • 이후 서버는 ACK 을 받고 종료
      • TIME-WAIT 이 끝나면 클라이언트도 종료