Q. 3, 4-way-handshake의 과정과 주요 차이점은?
🧑🏻💻 Answer.
✅ 3-way-handshake
- TCP의 세션 접속 단계에서, 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하는 통신 방법입니다.
- Client > Server : SYN을 보내고 ACK를 기다림
- Server > Client : ACK와 함께 SYN을 보내고 ACK를 기다림
- Client > Server : ACK 전송 → 세션 접속 완료
✅ 4-way-handshake
- TCP의 세션 해제 단계에서, 양쪽 모두 세션 해제가 되었다는 것을 보장하는 통신 방법입니다.
- Client > Server : 접속을 끊겠다는 FIN 전송 후 ACK를 기다림
- Server > Client : ACK를 보내고 접속을 끊고 FIN 전송한 후 ACK를 기다림
- Client > Server : ACK 전송 → 세션 접속 해제 완료
✅ 차이점
차이점의 경우 세션 해제 단계(4-way-handshake)에서 ACK와 FIN을 동시에 보내지 않고 따로 수행한다는 점 입니다.
Server > Clien 일 때 ACK와 FIN을 동시에 보내지 않는 이유는, Client에서 접속 해제 요청을 보냈다고 하더라고, 아직 Client에서 보낸 데이터가 서버에 완전히 도착하지 않았을 경우를 대비하여, ACK를 우선 전송한 후 데이터를 온전히 받으면 FIN 전송하기 위해서입니다.
반면 3-way에서 Server > Clien 일 때는 세션 접속 단계이기 때문에, 아직 Client에서 보내는 데이터가 없어 ACK와 함께 SYN을 보낼 수 있습니다.