✅ TCP 3-Way Handshake vs 4-Way Handshake 차이점
TCP(Transmission Control Protocol)에서는 연결을 설정할 때 3-Way Handshake(3방향 핸드셰이크),
연결을 해제할 때 4-Way Handshake(4방향 핸드셰이크) 방식을 사용합니다.
🚀 1. TCP 3-Way Handshake (연결 설정 과정)
"서버와 클라이언트가 서로 연결을 설정하는 과정"
클라이언트와 서버가 신뢰할 수 있는 데이터 전송을 위해 세 번의 패킷 교환을 수행합니다.
📌 3-Way Handshake 과정
1️⃣ SYN (Synchronization 요청)
- 클라이언트가 서버에게 연결 요청을 보냄.
- SYN 플래그가 설정된 패킷 전송
2️⃣ SYN-ACK (Synchronization + Acknowledgment) - 서버가 연결 요청을 수락하고 응답
- SYN + ACK 플래그가 설정된 패킷 전송
3️⃣ ACK (Acknowledgment) - 클라이언트가 응답을 확인하고 연결 완료
- ACK 플래그가 설정된 패킷 전송
✔ 3-Way Handshake 이후에 데이터 전송 가능!
📌 패킷 흐름
Client -----> [SYN] -----> Server
Client <----- [SYN-ACK] <----- Server
Client -----> [ACK] -----> Server
✅ 연결 완료
✔ 특징:
- 클라이언트와 서버가 서로 통신이 가능한지 확인
- 데이터 전송이 안정적으로 이루어질 수 있도록 보장
- TCP의 신뢰성 보장 메커니즘 중 하나
🔥 2. TCP 4-Way Handshake (연결 종료 과정)
"서버와 클라이언트가 서로 연결을 정상적으로 종료하는 과정"
TCP 연결을 종료하기 위해 네 번의 패킷 교환이 필요합니다.
📌 4-Way Handshake 과정
1️⃣ FIN (Finish 요청)
- 클라이언트가 더 이상 데이터를 전송하지 않겠다고 서버에게 알림
- FIN 플래그가 설정된 패킷 전송
2️⃣ ACK (Acknowledgment) - 서버가 FIN을 확인하고, 아직 처리할 데이터가 남아 있을 수도 있으므로 바로 종료하지 않음
- ACK 플래그가 설정된 패킷 전송 (잠시 대기 상태)
3️⃣ FIN (서버 측 종료 요청) - 서버도 데이터 전송을 마쳤고, 연결을 종료하겠다고 클라이언트에게 알림
- FIN 플래그가 설정된 패킷 전송
4️⃣ ACK (마지막 확인) - 클라이언트가 서버의 FIN을 확인하고 연결 종료 완료
- ACK 플래그가 설정된 패킷 전송
📌 패킷 흐름
Client -----> [FIN] -----> Server (클라이언트 종료 요청)
Client <----- [ACK] <----- Server (서버가 확인)
Client <----- [FIN] <----- Server (서버도 종료 요청)
Client -----> [ACK] -----> Server (클라이언트가 확인)
✅ 연결 종료 완료
✔ 특징:
- 클라이언트와 서버가 각각 독립적으로 종료 요청을 할 수 있음
- 서버가 ACK을 먼저 보내고, 처리할 작업이 끝난 후 FIN을 보냄 (지연 가능)
- 일부 데이터를 더 전송해야 할 수도 있기 때문에 3-Way Handshake보다 한 단계가 추가됨
⚡ 3. 3-Way vs 4-Way Handshake 차이점
비교 항목 | 3-Way Handshake | 4-Way Handshake |
목적 | 연결을 설정하기 위함 | 연결을 종료하기 위함 |
패킷 개수 | 3개 (SYN → SYN-ACK → ACK) | 4개 (FIN → ACK → FIN → ACK) |
신뢰성 | 연결이 가능한지 확인 후 데이터 전송 | 더 이상 데이터가 없을 때 안전하게 종료 |
연결 방식 | 단방향 → 양방향 데이터 전송 준비 | 양방향 독립적으로 종료 요청 가능 |
사용 플래그 | SYN, ACK | FIN, ACK |
데이터 손실 방지 | 연결 전 확인 절차 필요 | 종료 전 마지막 데이터 전송 가능 |
💡 결론:
- 3-Way Handshake는 연결을 설정하는 과정 (데이터 전송 전, 클라이언트와 서버의 연결을 확립)
- 4-Way Handshake는 연결을 종료하는 과정 (모든 데이터 전송이 완료된 후 안전하게 종료)
🚀 즉, 3-Way Handshake는 연결을 맺을 때, 4-Way Handshake는 연결을 끊을 때 사용됩니다! 🚀
반응형
'컴퓨터 과학 > 🛜 네트워크' 카테고리의 다른 글
네트워크 기기 (0) | 2025.02.12 |
---|---|
웹 소켓이란? (0) | 2025.02.04 |
TCP vs UDP 차이점 (0) | 2025.02.04 |
CORS(Cross-Origin Resource Sharing)란? (0) | 2025.02.04 |
REST API의 장점과 단점 (1) | 2025.02.03 |