Search

3-Way Handshake와 4-Way Handshake 개념

3-Way Handshake
본격적으로 상대 클라이언트와 연결되기 전에 가상 연결을 해서 패킷으로 보내서 확인하는 동작이다.
SYN : 접속 요청
ACK : 요청 수락
이름
의미
SYN
연결을 생성할 때 클라이언트가 서버에 시퀀스 번호를 보내는 패킷
SYN-ACK
시퀀스 번호를 받은 서버가 ACK 값을 생성하여 클라이언트에게 응답하는 패킷
ACK
ACK 값을 사용하여 응답하는 패킷
클라이언트 → 서버 : SYN패킷 전송
서버 → 클라이언트 : SYN + ACK패킷 전송
클라이언트 → 서버: ACK + 데이터 패킷 전송
데이터 패킷 전송
이렇게 패킷을 순서대로 제어를 할 수 있는 이유는 TCP 데이터 안에 전송 제어, 순서, 정보들이 있기 때문이다.
4-Way Handshake
TCP의 연결을 초기화 할 때 사용한다면 4-Way Handshake는 세션을 종료하기 위해 수행되는 절차이다.
1.
클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다. 이때 A클라이언트는  FIN-WAIT 상태가 된다.
2.
B서버는 FIN플래그를 받고, 일단 확인메시지 ACK 보내고 자신의 통신이 끝날때까지 기다리는데 이 상태가 B서버의 CLOSE_WAIT상태다.
3.
연결을 종료할 준비가 되면, 연결해지를 위한 준비가 되었음을 알리기 위해  클라이언트에게 FIN플래그를 전송한다. 이때 B서버의 상태는 LAST-ACK이다.
4.
클라이언트는 해지준비가 되었다는 ACK를 확인했다는 메시지를 보낸다. A클라이언트의 상태가 FIN-WAIT ->TIME-WAIT 으로 변경된다.