Computer Science/네트워크

[네트워크] TCP 3-way & 4-way Handshake

hammii 2021. 10. 6. 00:56
728x90
반응형

3-way Handshake

장치들 사이에 논리적인 접속을 성립(establish) 하기 위해 탄생했다.

진행 과정

  1. 클라이언트가 서버에게 SYN 패킷을 보낸다. (sequence : x)
  2. 서버가 SYN(x)을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보낸다. (sequence : y, ACK : x + 1)
  3. 클라이언트가 ACK(y+1)를 서버로 보내고 연결이 이루어진다.

SYN: synchronize sequence numbers
ACK: acknowledgment

 

4-way Handshake

세션을 종료하기 위해 탄생했다.

진행 과정

  1. 클라이언트가 서버에게 연결을 종료한다는 FIN 플래그를 보낸다.
  2. 서버는 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보낸다. (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 된다)
  3. 데이터를 모두 보냈다면, 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보낸다.
  4. 클라이언트는 FIN을 받고, 확인했다는 ACK를 서버에게 보낸다. (아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT을 통해 기다린다)

 

  • 서버는 ACK를 받은 이후 소켓을 닫는다 (Closed)
  • TIME_WAIT 시간이 끝나면 클라이언트도 닫는다 (Closed)

TIME_WAIT: Client가 Server로부터 FIN을 수신하더라도 일정 시간 동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정

 

 

참고 링크

https://github.com/haewon-park/csStudy/blob/main/Network/TCP%203-way%20%26%204-way%20Handshake.md

 

 

728x90
반응형