3 way handshake, 4 way handshake


3 way handshake

  • TCP 연결은 정확한 전송을 보잔해야하기 때문에 통신 전에 3 way handshake 작업을 통하여 논리적인 접속을 성립한다.

  • 3 way handshake의 절차는 다음과 같다. (3번의 통신이기 때문에 3way)

    1. Client가 Server에게 SYN 패킷을 보냄 (seq: x)

    2. Server가 SYN(x)을 받고, Client로 받았다는 신호인 ACK와 SYN을 보냄 (seq: y, ACK: x + 1)

    3. Client는 Server의 응답인 ACK(x + 1)와 SYN(y) 패킷을 받고 ACK(y + 1)를 서버로 보냄.

3wayhandshake


4 way handshake

  • 연결이 성립된 후, 모든 통신이 끝났다면 TCP 연결을 해제한다.

  • 4 way handshake의 절차는 다음과 같다. (4번의 통신이기 때문에 4way)

    1. Client는 Server에게 연결을 종료한다는 FIN 플래그를 보냄.

    2. Server는 FIN을 받고, FIN을 확인했다는 ACK를 Client에게 보냄. (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 됨)

    3. 데이터를 모두 보냈다면, 연결이 종료되었다는 FIN 플래그를 Client에게 보냄.

    4. Client는 FIN을 받고, 확인했다는 ACK를 Server에게 보냄. (아직 Server로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT을 통해 기다림)

  • Server는 ACK를 받은 후 소켓을 닫음.(Closed)

  • Client는 TIME_WAIT 시간이 끝난 후 소켓을 닫음.(Closed)

4wayhandshake