TCP 3 Way Handshake, 4 Way Handshake 개념과 동작 방식

TCP 3 Way Handshake 란?

전송제어 프로토콜 TCP연결지향적 이므로 통신하는 장치 간 서로 연결이 잘 되어 있는지 확인하는 방식이고

3번의 확인 과정을 거친다고 하여 3 Way Handshake라고 불립니다.

TCP 3 Way Handshake 과정

handshake란

A클라이언트B서버에 접속을 요청하는 SYN 패킷을 보낸다.

이때 A클라이언트SYN을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 됩니다.

B서버SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACKSYN Flag 가 설정된 패킷을 발송하고

A가 다시 ACK으로 응답하기를 기다리는데 이때 B서버SYN_Received 상태가 됩니다.

A클라이언트B서버에ACK 보내고 이후로 부터는 연결이 이루어지게 되므로 데이터가 오가게 됩니다.

이때 B서버의 상태가 ESTABLISHED 입니다.

이와 같이 통신하는 것이 신뢰성 있는 연결을 맺어 준다는 TCP3 Way handshake 방식입니다.

👉 SYN(Synchronization) : 연결요청, 세션을 설정하는데 사용되며 초기에 시퀀스 번호를 보냅니다.

👉 ACK(Acknowledgement)보낸 시퀀스 번호TCP 계층에서의 길이 또는 을 더한 것과 같은 값을 ACK 포함하여 전송합니다.

TCP 4 Way Handshake 과정

handshake

클라이언트가 연결을 종료하겠다는 FIN 플래그를 전송합니다.

서버는 우선 확인메세지를 보내고 자신의 통신이 끝날때 까지 기다리는데 이 상태가 TIME_WAIT 입니다.

서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN플래그를 전송합니다.

클라이언트는 확인했다는 메세지를 보냅니다.


But, Server에서 FIN을 전송하기 전에 전송한 패킷라우팅지연이나 패킷 유실로 인한 재전송 등으로 인해

FIN패킷 보다 늦게 도착하는 상황이 발생된다면?

👉 Client에서 세션을 종료시킨 후 뒤늦게 도착하는 패킷이 있다면 해당 패킷Drop되고 데이터유실 됩니다.

이러한 현상 때문에 ClientServer로 부터 FIN을 수신하더라도 일정시간(기본값240초) 동안 세션을 남겨놓고

패킷을 기다리는 과정을 거치게 되는데 이 과정을 TIME_WAIT 라고 합니다.

Leave a Comment