TCP 3-Way Handshake & 4-Way Handshake
TCP 통신에서 사용되는 3-Way Handshake와 4-Way Handshake에 대해 설명합니다.
3-Way Handshake (TCP 연결 설정)
TCP 통신에서 클라이언트와 서버 간의 연결을 설정하기 위해 사용되는 과정입니다. 이 과정은 세 단계로 이루어집니다.
1. 과정
- SYN (Synchronize):
- 클라이언트는 서버에 연결 요청을 보냅니다.
- 이 요청에는 연결을 초기화하기 위한 SYN 플래그가 설정된 패킷이 포함됩니다.
- ex)
Client -> Server: SYN
- SYN-ACK (Synchronize-Acknowledge):
- 서버는 클라이언트의 요청을 수신하고 승인합니다.
- 이 응답에는 SYN 플래그와 ACK 플래그가 설정된 패킷이 포함됩니다.
- ex)
Server -> Client: SYN, ACK
- ACK (Acknowledge):
- 클라이언트는 서버의 승인에 응답하여 연결이 설정되었음을 알립니다.
- 이 응답에는 ACK 플래그가 설정된 패킷이 포함됩니다.
- ex)
Client -> Server: ACK
2. 시퀀스
Client: . . SYN ———————> . . . . .
Server: . . . . . .<——————– SYN, ACK
Client: . . ACK ———————> . . . .
3. 결과
TCP 연결이 성공적으로 설정되어 데이터 통신이 시작될 준비가 완료됩니다.
4-Way Handshake (TCP 연결 종료)
TCP 연결을 종료할 때 사용되는 과정입니다. 이 과정은 네 단계로 이루어지며, 양쪽에서 종료 요청을 처리합니다.
1. 과정
- FIN (Finish):
- 클라이언트가 서버에게 연결을 종료하고 싶다는 요청을 보냅니다.
- 이 요청에는 FIN 플래그가 설정된 패킷이 포함됩니다.
- ex)
Client -> Server: FIN
- ACK (Acknowledge):
- 서버는 FIN 요청을 수신하고 승인합니다.
- 이 응답에는 ACK 플래그가 설정된 패킷이 포함됩니다.
- ex)
Server -> Client: ACK
- FIN (Finish):
- 서버가 클라이언트에게 연결을 종료하려고 한다는 요청을 보냅니다.
- 이 요청에는 FIN 플래그가 설정된 패킷이 포함됩니다.
- ex)
Server -> Client: FIN
- 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.