Post

TCP 3-Way Handshake & 4-Way Handshake

TCP 통신에서 사용되는 3-Way Handshake와 4-Way Handshake에 대해 설명합니다.

3-Way Handshake (TCP 연결 설정)

TCP 통신에서 클라이언트와 서버 간의 연결을 설정하기 위해 사용되는 과정입니다. 이 과정은 세 단계로 이루어집니다.

1. 과정

  1. SYN (Synchronize):
    • 클라이언트는 서버에 연결 요청을 보냅니다.
    • 이 요청에는 연결을 초기화하기 위한 SYN 플래그가 설정된 패킷이 포함됩니다.
    • ex) Client -> Server: SYN
  2. SYN-ACK (Synchronize-Acknowledge):
    • 서버는 클라이언트의 요청을 수신하고 승인합니다.
    • 이 응답에는 SYN 플래그ACK 플래그가 설정된 패킷이 포함됩니다.
    • ex) Server -> Client: SYN, ACK
  3. ACK (Acknowledge):
    • 클라이언트는 서버의 승인에 응답하여 연결이 설정되었음을 알립니다.
    • 이 응답에는 ACK 플래그가 설정된 패킷이 포함됩니다.
    • ex) Client -> Server: ACK

2. 시퀀스

Client: . . SYN ———————> . . . . .
Server: . . . . . .<——————– SYN, ACK
Client: . . ACK ———————> . . . .

3. 결과

TCP 연결이 성공적으로 설정되어 데이터 통신이 시작될 준비가 완료됩니다.


4-Way Handshake (TCP 연결 종료)

TCP 연결을 종료할 때 사용되는 과정입니다. 이 과정은 네 단계로 이루어지며, 양쪽에서 종료 요청을 처리합니다.

1. 과정

  1. FIN (Finish):
    • 클라이언트가 서버에게 연결을 종료하고 싶다는 요청을 보냅니다.
    • 이 요청에는 FIN 플래그가 설정된 패킷이 포함됩니다.
    • ex) Client -> Server: FIN
  2. ACK (Acknowledge):
    • 서버는 FIN 요청을 수신하고 승인합니다.
    • 이 응답에는 ACK 플래그가 설정된 패킷이 포함됩니다.
    • ex) Server -> Client: ACK
  3. FIN (Finish):
    • 서버가 클라이언트에게 연결을 종료하려고 한다는 요청을 보냅니다.
    • 이 요청에는 FIN 플래그가 설정된 패킷이 포함됩니다.
    • ex) Server -> Client: FIN
  4. ACK (Acknowledge):
    • 클라이언트는 서버의 FIN 요청을 승인하고 응답합니다.
    • 이 응답에는 ACK 플래그가 설정된 패킷이 포함됩니다.
    • ex) Client -> Server: ACK

2. 시퀀스

Client: . . FIN ————————> . . . .
Server: . . . . . <———————– ACK
Server: . . FIN ———————> . . . . .
Client: . . . . . <———————– ACK

3. 결과

TCP 연결이 성공적으로 종료됩니다.


참고 사항

  • 3-Way Handshake는 연결의 신뢰성순서 보장을 제공하는 TCP의 핵심 메커니즘입니다.
  • 4-Way Handshake는 연결이 안전하게 종료되도록 보장합니다.
  • FIN 플래그는 데이터 전송이 완료되었음을 나타내며, 더 이상의 데이터 전송이 없음을 의미합니다.
This post is licensed under CC BY 4.0 by the author.