[네트워크] TCP 3-Way-Handshake, 4-Way-Handshake

cabbage·2023년 3월 1일
0

네트워크

목록 보기
1/10

3-Way-Handshake

3-Way-Handshake는 TCP 연결을 통해 데이터를 전송하기 위해 TCP 연결을 설정하는 과정이다.

  1. SYN(SYNchronize)
    • 클라이언트 ➡️ 서버
    • 클라이언트의 TCP 연결 요청 패킷
    • 클라이언트는 서버에 TCP 연결을 요청하는 SYN 패킷을 전송한다.
  2. SYN - ACK
    • 클라이언트 ⬅️ 서버
    • 서버의 TCP 연결 수락 패킷
    • TCP 연결 요청(SYN 패킷)을 받은 서버는 클라이언트에 연결 요청을 수락한다고 응답한다.
  3. ACK(ACKnowledgement)
    • 클라이언트 ➡️ 서버
    • 클라이언트의 TCP 연결 확인 패킷
    • 클라이언트는 서버의 SYN - ACK 응답을 수신하고, 이를 확인했다는 사실을 서버에 알려주기 위해 서버에 ACK 패킷을 전송한다.

3-Way-Handshake 과정을 통과하면 클라이언트와 서버 양쪽 모두 데이터 전송 준비를 마쳤다는 것을 보장할 수 있다.

4-Way-Handshake

4-Way-Handshake는 TCP 연결을 통해 데이터 송수신을 모두 마친 뒤 TCP 연결을 해제하는 과정이다.

  1. FIN(FINish)
    • 클라이언트 ➡️ 서버
    • 클라이언트의 TCP 연결 종료 요청 패킷
    • 클라이언트가 서버에게 TCP 연결을 종료하겠다는 FIN 패킷을 전송한다.
  2. ACK(ACKnowledgement)
    • 클라이언트 ⬅️ 서버
    • 서버의 TCP 연결 종료 요청 확인 패킷
    • 서버는 클라이언트의 FIN 패킷 수신하고, 이를 확인했다는 사실을 클라이언트에게 알려주기 위해 ACK 패킷을 전송한다.
    • 서버는 ACK 패킷 전송 후 자신의 통신이 끝날 때까지 대기한다.
  3. FIN
    • 클라이언트 ⬅️ 서버
    • 서버의 TCP 연결 종료 합의 패킷
    • 서버는 자신의 통신이 끝난 뒤, TCP 연결 종료에 합의한다는 의미로 클라이언트에 FIN 패킷을 전송한다.
  4. ACK
    • 클라이언트 ➡️ 서버
    • 클라이언트의 TCP 연결 종료 합의 확인 패킷
    • 클라이언트는 서버의 FIN 패킷 응답을 수신하고, 이를 확인했다는 사실을 서버에게 알려주기 위해 서버에 ACK 패킷을 전송한다.
profile
캐비지 개발 블로그입니다. :)

0개의 댓글