Network

TCP 4-way-handshake

uuuhhh 2022. 11. 11. 15:42

▪︎ TCP 통신


📌 TCP는 서버와 클라이언트 사이간을 종료하기 위해 4-way-handshake를 사용한다.

 

  • TCP 4-way-handshake
    • TCP/IP 프로토콜을 사용하여 통신을 하는 응용 프로그램이 상대방 컴퓨터와 세션을 종료하기 위해 수행되는 절차

 

 

  1. Client는 Established 상태, Server도 Established 상태이다.
  2. Client가 Server에 연결 종료 요청을 하기 위해 FIN 플래그를 전송한다.
  3. Client는 Estabilished에서 FIN-WAIT 상태 변경한다.
  4. Server는 Client가 보낸 FIN 플래그를 받고 요청을 정상적으로 받았다는 ACK를 전송한다.
  5. Server는 Established에서 CLOSE_WAIT로 상태 변경한다.
  6. Server가 연결을 종료할 준비가 되면, 이를 알리기 위해 Client에게 FIN 플래그를 전송한다.
  7. Server는 CLOSE_WAIT에서 LAST-ACK로 상태 변경한다.
  8. Client가 Server가 보낸 FIN 플래그를 받고 정상적으로 받았다는 ACK를 전송한다.
  9. Client는 FIN-WAIT에서 TIME-WAIT 상태 변경한다.
  10. Server는 Client가 보낸 ACK를 받고 LAST-ACK에서 CLOSED로 상태 변경한다.
  11. 일정 시간이 지난 후 Client는 TIME-WAIT에서 CLOSED로 상태 변경한다.

 

상태  설명
ESTABLISHED 포트 연결 상태
FIN-WAIT FIN 플래그를 기다리는 중
CLOSE_WAIT ACK를 보내고 서버에서 종료에 대한 통신이 끝날 때까지 기다리는 상태
LAST-ACK 연결 종료를 위한 준비가 되었음을 알리는 FIN 플래그 전송 후 서버 상태
TIME-WAIT 연결 종료 후 도착하는 패킷이 유실되지 않게끔 일정 시간동안 세션 유지하는 상태
CLOSED 세션을 만료하고 연결을 종료한 상태