로고
로그인

Handshake(3way ,4way)

by ksc036·2025. 05. 22. 오후 8:55

3-way handshake와 4-way handshake는 TCP 통신에서 연결을 설정하고 종료할 때 사용하는 절차입니다.

✅ 1. 3-Way Handshake (연결 설정) TCP 연결을 시작할 때 클라이언트와 서버가 서로 통신 가능한 상태인지 확인하고, **시퀀스 번호(SYN)**를 교환하며 연결을 설정합니다.

💡 과정

  1. 클라이언트 → 서버 : SYN

클라이언트가 연결을 요청하면서 SYN 패킷을 보냄 (Sequence Number 포함)

  1. 서버 → 클라이언트 : SYN + ACK

서버가 SYN을 수락하면서, 자신의 시퀀스 번호와 함께 ACK(응답)도 보냄

  1. 클라이언트 → 서버 : ACK

클라이언트가 서버의 SYN을 확인했다는 ACK을 보내고 연결 성립

📌 목적 서로의 전송 가능 상태 확인

시퀀스 번호 초기화 (데이터 전송 순서 보장 준비)


✅ 2. 4-Way Handshake (연결 종료) 연결을 종료할 때는 송신과 수신을 각각 독립적으로 종료해야 하기 때문에, 4단계가 필요합니다.

💡 과정

  1. 클라이언트 → 서버 : FIN
  • 클라이언트가 데이터 전송을 끝냈다고 알림 (수신은 계속 가능)
  1. 서버 → 클라이언트 : ACK
  • 서버가 FIN을 수신하고 확인 응답
  1. 서버 → 클라이언트 : FIN
  • 서버도 데이터 전송을 끝냈다고 알림
  1. 클라이언트 → 서버 : ACK
  • 클라이언트가 FIN 확인

📌 특징

  • TCP는 양방향 연결이므로, 종료도 각 방향마다 FIN + ACK가 필요함

  • 클라이언트는 마지막 ACK을 보내고 TIME_WAIT 상태에서 일정 시간 대기 후 종료

CS
TCP
Network
User profile

ksc036

안녕하세요 개발을 좋아하는 풀스택 개발자입니다.

1개의 댓글

이런 게시글은 어때요?
더 이상 게시글이 없어요! 🎉