3-Way Handshake란?

kyu123·2025년 1월 4일
0

3-Way Handshake란?

3-Way Handshake(3단계 핸드셰이크)는 TCP(Transmission Control Protocol) 연결을 설정하기 위한 과정으로, 클라이언트와 서버가 통신 준비가 되었음을 확인하고 신뢰성 있는 연결을 보장하기 위해 사용됩니다.


3-Way Handshake 과정

  1. SYN(Synchronize)
    클라이언트가 서버에 연결을 요청합니다.
    클라이언트는 초기 시퀀스 번호(Sequence Number)를 포함한 SYN 패킷을 서버로 전송합니다.
    클라이언트 → 서버 : SYN

  2. SYN-ACK(Synchronize-Acknowledge)
    서버가 클라이언트의 요청을 수락하며, 클라이언트에게 자신도 연결 준비가 되었음을 알립니다.
    서버는 클라이언트의 SYN에 대한 응답으로 ACK(응답)와 자신의 초기 시퀀스 번호를 포함한 SYN 패킷을 보냅니다.
    서버 → 클라이언트 : SYN-ACK

  3. ACK(Acknowledge)
    클라이언트는 서버가 보낸 SYN-ACK에 대한 응답으로 ACK를 전송하여 연결 설정을 완료합니다.
    클라이언트 → 서버 : ACK


핸드셰이크 예시

  1. 클라이언트 → 서버 (SYN)
    클라이언트: "연결 요청합니다. 제 초기 시퀀스 번호는 X입니다."

  2. 서버 → 클라이언트 (SYN-ACK)
    서버: "요청 수락합니다. 제 초기 시퀀스 번호는 Y이고, 당신의 요청을 확인했습니다(ACK)."

  3. 클라이언트 → 서버 (ACK)
    클라이언트: "확인했습니다. 연결 시작합시다."


3-Way Handshake의 목적

  1. 신뢰성 보장
    양측이 서로의 연결 준비 상태를 확인하여 데이터 전송을 시작합니다.

  2. 시퀀스 번호 동기화
    TCP는 데이터를 시퀀스 번호로 관리하므로, 양측 간 번호를 초기화하고 동기화합니다.

  3. 패킷 손실 방지
    연결 설정 중 데이터 손실이나 오류 발생 가능성을 줄입니다.


3-Way Handshake의 실제 모습 (Wireshark 캡처 예시)

1. SYN: 클라이언트 → 서버
   TCP 192.168.0.10:1024 → 192.168.0.20:80 [SYN] Seq=0 Win=65535 Len=0

2. SYN-ACK: 서버 → 클라이언트
   TCP 192.168.0.20:80 → 192.168.0.10:1024 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0

3. ACK: 클라이언트 → 서버
   TCP 192.168.0.10:1024 → 192.168.0.20:80 [ACK] Seq=1 Ack=1 Win=65535 Len=0

추가 개념: 연결 종료(FIN/ACK)

3-Way Handshake는 연결을 설정하는 과정입니다.
연결을 종료할 때는 4-Way Handshake라는 과정이 사용됩니다:

  1. FIN: 연결 종료 요청.
  2. ACK: 요청 확인.
  3. FIN: 상대방도 연결 종료 요청.
  4. ACK: 상대방 요청 확인.

3-Way Handshake의 한계

1. SYN Flood 공격

  • 악의적인 클라이언트가 다수의 SYN 요청만 보내고 ACK를 보내지 않아 서버 자원을 낭비시키는 DDoS 공격의 한 유형.

2. 오버헤드

  • 연결을 설정하는 데 3단계가 필요하므로, 연결 지연이 발생할 수 있음.
profile
네트워크 공부 기록

0개의 댓글