3-Way Handshake
TCP Flag?
SYN( synchronization ) 연결 요청 플래그
통신 시작 시 세션을 연결하기 위한 플래그
ACK( Acknowledgement ) 응답 플래그
송신측 으로부터 패킷을 잘 받았다는 걸 알려주기 위한 플래그
FIN( Finish ) 연결 종료 플래그
더 이상 전송할 데이터가 없고 세션 연결을 종료시키겠다는 플래그
이외에도 RST, PSH, URG 등이 있다.
3-way Handshake?
3-way Handshake는 위에서 말했다시피 TCP 통신을 이용하여 데이터를 전송하기 위해서
네트워크 연결을 설정하는 과정이다. (Connection Establish)
STEP1 (SYN)
클라이언트는 서버와 연결을 하기위해 SYN(요청) 패킷을 보낸다.
이때 클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는SYN_SENT 상태가 되는 것이다.
Client : CLOSED → SYN_SENT
Server : LISTEN
STEP2 (SYN + ACK)
서버가 SYN을 받고, 클라이언트에게 받았다는 신호인 ACK와 SYN 패킷을 보낸다.
그리고 클라이언트가 다시 ACK으로 응답하기를 기다린다. 이때 서버는 SYN_RECEIVED 상태가 된다.
Clent : CLOSED
Server : SYN_RECV
STEP3 (ACK)
클라이언트는 서버에게 ACK을 보내고 이후로부터는 연결이 이루어진다.
이때의 서버 상태가 ESTABLISHED 이다.
Client : ESTABLISHED
Server : SYN_RECV → ACK → ESTABLISHED
위와 같은 방식으로 통신하는것이 신뢰성있는 연결지향 프로토콜 TCP의 3-Way Handshake 방식이다.