[TIL] TCP - 3 way handshake & 4 way handshake

다혜·2022년 3월 15일
0
post-thumbnail

✅ 연결의 설정과 해제

✔ TCP는 정확한 전송을 보장해야한다.
✔ 따라서 통신하기에 앞서 논리적인 접속을 성립하기 위해 3 way handshake 과정을 진행한다.
✔ 연결 성립 후, 모든 통신이 끝났다면 연결을 해제한다.


🤝🏻 3-way handshake

  1. Client가 Server에 연결 요청을 위해 SYN 패킷을 보낸다. SYN_SENT 상태로 대기한다.

  2. Server는 SYN_RECIEVE 상태로 변경한다. 요청에 대한 대답 ACKSYN 패킷을 보낸다.

  3. Client는 Server에게 응답 ACK를 보내고 ESTABLISHED 상태로 변경한다. ACK를 받은 서버도 ESTABLISHED 상태로 변경한다.


위와 같이 3번의 통신이 완료되면 연결이 성립된다.


🤝🏼 4-way handshake

  1. Client는 Server에게 연결을 종료한다는 FIN 플래그를 보내고 FIN_WAIT1 상태로 대기한다.

  2. Server는 CLOSE_WAIT 상태로 변경하고 응답 ACK를 보낸다. 해당 포트에 연결된 어플리케이션에 close()를 요청한다. ACK를 받은 Client는 FIN_WAIT2 상태가 된다.

  3. close()요청을 받은 서버 어플리케이션은 종료 프로세스를 진행하고 Server는 FIN 플래그를 Client에 보낸다. 이 때 Server는 LAST_ACK 상태로 변경한다.

  4. Client는 FIN을 받고 응답 ACK를 보내고 TIME_WAIT 상태로 변경한다. ACK를 받은 Server는 CLOSED 되고 TIME_WAIT에서 일정 시간이 지나면 Client도 CLOSED 된다.


위와 같이 4번의 통신이 완료되면 연결이 해제된다.

profile
봉식이를 위한 개발을 하고 싶오

0개의 댓글

관련 채용 정보