3-way handshake & 4-way handshake

신명철·2022년 2월 19일
0

네트워크

목록 보기
6/17
post-custom-banner

3-way handshake

  • TCP/IP 프로토콜을 이용해서 통신을 할 때, 두 종단 간 정확한 데이터 전송 보장을 위해 연결을 설정하는 과정이다. 즉, 상대방 컴퓨터와 사전에 세션을 수립하는 과정이다.

  • SYN : Synchronize Sequence Number
  • ACK : Acknowledgement

연결 과정

  1. A 클라이언트가 B 서버에 접속을 요청하는 SYN(a) 패킷을 보낸다. SYN 을 보내고 A 클라이언트는 SYN/ACK 응답을 기다리는 SYN_SENT 상태, B 서버는 Wait for Client 상태가 된다.
  2. B 서버는 클라이언트의 요청인 SYN(a) 패킷에 대한 수락 응답으로 ACK(a+1) 패킷과 A 클라이언트에게 포트를 열어달라는 SYN(b) 패킷을 보내고 A 의 ACK 응답을 기다린다. 이 때 B 서버는 SYN_RECEIVED 상태가 된다.
  3. A 클라이언트는 ACK(a+1) 패킷과 SYN(b) 패킷을 받고 이에 대한 응답으로 ACK(b+1) 패킷을 보내며 연결이 성립된다. A와 B는 ESTABLISHED 상태가 된다.

4-way handshake

  • TCP/IP 프로토콜에서는 4-way handshake 로 연결 설정을 해제한다.

연결 과정

  1. A 클라이언트는 연결을 종료하겠다는 FIN 플래그를 전송한다. A 클라이언트는 FIN_WAIT 상태가 된다.
  2. B 서버는 FIN 플래그를 받고 확인 메세지 ACK 를 보내고 자신의 통신이 끝날 때까지 기다리는데 이 상태가 B서버의 CLOSE_WAIT 상태이다.
  3. 연결을 종료할 준비가 되면 연결 해지를 위한 준비가 되었음을 알리는 FIN 플래그 를 A 클라이언트에게 전송한다. 이 때 B 서버는 LAST_ACK 상태가 된다.
  4. A 클라이언트는 해지 준비가 되었다는 ACK를 확인했다는 메세지를 보낸다. A 클라이언트의 상태는 FIN_WAIT -> TIME_WAIT 으로 변경된다. 이 상태는 클라이언트가 서버에게 아직 받지 못한 데이터를 기다리는 상태이다.
profile
내 머릿속 지우개
post-custom-banner

0개의 댓글