1. TCP 3-Way Handshake (연결 설정)
- 목적: TCP 연결 설정이다. 통신 전 양측의 준비 상태 확인 및 정보(시퀀스 번호) 교환이 목적이다.
- 과정:
- [SYN] 클라이언트 → 서버: 클라이언트는 서버에
SYN
패킷(Client_ISN
포함)을 전송한다. 클라이언트는SYN_SENT
상태이다. - [SYN+ACK] 서버 → 클라이언트: 서버는
SYN
수신 후,SYN
패킷(Server_ISN
포함)과ACK
(Client_ISN
+ 1)를 클라이언트에 전송한다. 서버는SYN_RECEIVED
상태이다. - [ACK] 클라이언트 → 서버: 클라이언트는
SYN+ACK
수신 후,ACK
(Server_ISN
+ 1) 패킷을 서버에 전송한다. 클라이언트는ESTABLISHED
상태가 된다. 서버도ACK
수신 시ESTABLISHED
상태가 된다.
- [SYN] 클라이언트 → 서버: 클라이언트는 서버에
- 결과: TCP 연결이 수립된다. 데이터 전송 준비가 완료된다.
2. TCP 4-Way Handshake (연결 해제)
- 목적: TCP 연결 해제이다. 양방향 통신의 안전한 종료 확인이 목적이다. (Half-close 가능성 때문에 4단계이다.)
- 과정:
- [FIN] Active Close 측 → Passive Close 측: 연결 종료를 원하는 측(예: 클라이언트)이
FIN
패킷을 전송한다.FIN_WAIT_1
상태이다. - [ACK] Passive Close 측 → Active Close 측: 상대측(예: 서버)은
FIN
수신 후, 확인ACK
패킷을 전송한다.CLOSE_WAIT
상태이다. (아직 보낼 데이터가 있을 수 있음)ACK
를 받은 클라이언트는FIN_WAIT_2
상태이다. - [FIN] Passive Close 측 → Active Close 측: 서버가 모든 데이터 전송 완료 후, 자신의
FIN
패킷을 전송한다.LAST_ACK
상태이다. - [ACK] Active Close 측 → Passive Close 측: 클라이언트는 서버
FIN
수신 후, 확인ACK
패킷을 전송한다.TIME_WAIT
상태로 대기한다. 서버는ACK
수신 시CLOSED
상태가 된다. 클라이언트도TIME_WAIT
후CLOSED
상태가 된다.
- [FIN] Active Close 측 → Passive Close 측: 연결 종료를 원하는 측(예: 클라이언트)이
- 결과: TCP 연결이 해제된다.
요약 비교
구분 | 3-Way Handshake | 4-Way Handshake |
---|---|---|
목적 | TCP 연결 설정 | TCP 연결 해제 |
주요 플래그 | SYN , ACK |
FIN , ACK |
단계 수 | 3 단계 | 4 단계 |
주요 상태 전이 | LISTEN → SYN_SENT → SYN_RCVD → ESTABLISHED |
ESTABLISHED → FIN_WAIT_1 → FIN_WAIT_2 /CLOSE_WAIT → TIME_WAIT /LAST_ACK → CLOSED |
특징 | 양방향 연결 동시 준비 확인 | 양방향 연결 각자 종료 확인 (Half-close) |
'기타' 카테고리의 다른 글
[MSA] 사가 구현: 오케스트레이션 vs 코레오그래피 (0) | 2025.05.01 |
---|---|
[MSA] 분산 트랜잭션의 문제 해결 - 사가(Saga) (0) | 2025.05.01 |
(Synchronous || Asynchronous) || (Blocking || Non-Blocking) (0) | 2025.05.01 |
지식이 값싼 시대 (0) | 2025.04.30 |
[MSA] 마이크로서비스 통신 방식 (0) | 2025.04.22 |
댓글