TCP 3-Way Handshake

Kkd·2024년 12월 14일
0

매일메일 개념정리

목록 보기
28/93

TCP 3-Way Handshake란?

TCP(Transmission Control Protocol)의 3-Way Handshake는 신뢰할 수 있는 연결을 설정하기 위해 클라이언트와 서버 간에 3단계의 과정을 거치는 절차입니다. 데이터 전송을 시작하기 전에 송수신자 간의 통신이 준비되었음을 확인하고, 네트워크의 상태를 동기화(synchronize)합니다.


3-Way Handshake 과정

  1. SYN (Synchronize)
    클라이언트 → 서버

    • 클라이언트는 서버와 연결을 요청하며 SYN 패킷을 보냅니다.
    • 이 패킷에는 클라이언트의 초기 순서 번호(ISN, Initial Sequence Number)가 포함되어 있습니다.
  2. SYN-ACK (Synchronize + Acknowledgement)
    서버 → 클라이언트

    • 서버는 클라이언트의 요청(SYN)을 수락하고, 자신의 초기 순서 번호(ISN)를 포함한 SYN-ACK 패킷을 클라이언트로 전송합니다.
    • 또한, 클라이언트의 SYN에 대한 응답(ACK)을 함께 보냅니다.
  3. ACK (Acknowledgement)
    클라이언트 → 서버

    • 클라이언트는 서버의 응답(SYN-ACK)을 확인하고 ACK 패킷을 서버로 전송합니다.
    • 이 패킷에는 서버의 ISN에 대한 응답(ACK)이 포함되어 있습니다.

이 과정을 통해 양측이 서로의 통신 준비 상태를 확인하고, 초기 순서 번호를 동기화하게 됩니다.


핸드쉐이크 흐름 요약

  • 1단계: Client → Server: SYN (연결 요청)
  • 2단계: Server → Client: SYN-ACK (요청 수락 및 응답)
  • 3단계: Client → Server: ACK (응답 확인)

TCP 3-Way Handshake의 중요성

  1. 신뢰성 보장: 데이터 손실을 최소화하기 위해 통신 상대가 준비되었는지 확인.
  2. 순서 번호 동기화: 데이터 패킷의 순서를 유지하고, 중복 또는 손실된 데이터 처리를 효율적으로 수행.
  3. 네트워크 상태 확인: 연결을 설정하기 전에 네트워크 환경이 정상인지 확인.

3-Way Handshake의 실제 예시

  1. 클라이언트:
    "서버님, 연결 요청합니다! 제 ISN은 100입니다. (SYN)"

  2. 서버:
    "연결 요청 수락합니다. 제 ISN은 200입니다. 그리고 당신의 ISN 100 확인했습니다. (SYN-ACK)"

  3. 클라이언트:
    "서버님의 ISN 200 확인했습니다. 이제 데이터 전송 준비 완료! (ACK)"


3-Way Handshake와 관련된 주요 개념

  1. ISN (Initial Sequence Number)

    • 연결 초기화 시 사용하는 초기 순서 번호.
    • 송수신 측의 순서 번호를 동기화하여 데이터 전송 순서를 유지.
  2. 신뢰성 보장

    • TCP는 패킷의 손실, 중복, 순서 뒤바뀜 등을 방지하기 위해 순서 번호와 ACK를 사용.
  3. 소켓 상태

    • 클라이언트는 SYN_SENT, 서버는 SYN_RECEIVED 상태를 거치며 연결 완료 시 ESTABLISHED 상태가 됨.

참고: 4-Way Handshake (연결 종료)

TCP 연결을 종료할 때는 4-Way Handshake를 사용하여 양측이 데이터 송신을 완료했음을 확인하고 연결을 해제합니다.

TCP의 3-Way Handshake는 신뢰성, 순서 보장, 네트워크 준비 상태 확인의 핵심 역할을 합니다.

추가 학습 자료

profile
🌱

0개의 댓글