CS/Network

[CS/Network] TCP - 3 way handshake & 4 way handshake

dpdms2148 2023. 6. 22. 19:47
728x90

TCP는 장치들 사이에 논리적인 접속을 성립하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스이다.

State 정보

  • LISTEN : 포트가 열려있어서 연결을 기다리고 있는 상태
  • CLOSED : 포트가 닫힌 상태
  • SYS_SENT : 연결 요청한 상태
  • SYN_RECV : SYN 요청을 받고 상대방의 응답을 기다리는 중
  • ESTABLISHED : 포트 연결 상태
  • CLOSE_WAIT : Close를 받은 상태
  • LAST_WAIT : Close 호출 후 진입하는 상태
  • TIME_WAIT : Server로 부터 FIN을 수신하더라도 일정시간(default 240초)동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정

Flag 정보

  • TCP Header에는 CONTROL BIT(플래그 비트, 64bit)가 존재하며, 각각의 bit는 “URG-ACK-PSH-RST-SYN-FIN”의 의미를 가진다.
  • SYN(Synchronize Sequence Number) : 연결 요청 플래그
  • ACK(Acknowledgement) : 응답 플래그
  • FIN(Finish) : 연결 종료 플래그
  • RST(Reset) : 연결 재설정 플래그
  • PSH(Push) : 밀어넣기
  • URG(Urgent) : 긴급 데이트 플래그

3 way handshake

  • TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정(Connection Establish)하는 과정
  • 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 한 쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.

TCP의 3 way handshake 과정

  1. Client는 Server에 접속을 요청하는 SYN 패킷을 보내고 SYN_SENT 상태가 된다.
  2. Server는 Client로부터 SYN 패킷을 받고 응답 패킷 ACK과 SYN 패킷을 보낸다. 상태는 LISTEN에서 SYS_SENT로 바뀐다.
  3. Client는 받은 패킷에 대한 응답으로 ACK 패킷을 보내도 상태는 ESTABLISHED가 되고, Server는 상태가 ESTABLISHED가 된다.

4 way handshake

  • TCP의 연결을 해제(Connection Termination)하는 과정

TCP의 4 way handshake 과정

  1. Client에서 Server와의 연결 종료를 위해 Server에 FIN 패킷을 보내고 FIN_WAIT1 상태가 된다.
  2. Server는 Client로부터 FIN을 받고 응답 패킷 ACK을 보낸다. 상태는 CLOSE_WAIT가 된다.
  3. Server가 연결을 종료할 준비가 되면 클라이언트에게 FIN 패킷을 보내고 LAST_WAIT 상태가 된다.
  4. Client는 확인 패킷 ACK을 보내고 TIME_WAIT 상태가 된다.


참고

https://github.com/WeareSoft/tech-interview/blob/master/contents/network.md#tcp의-3-way-handshake와-4-way-handshake

https://jeongkyun-it.tistory.com/180

https://sh-safer.tistory.com/142

728x90

'CS > Network' 카테고리의 다른 글

[CS/Network] 대칭키&공개키  (0) 2023.06.28
[CS/Network] TCP/IP 4계층 모델  (0) 2023.06.22
[CS/Network] 네트워크 기초  (0) 2023.06.20
[CS/Network] OSI 7계층  (0) 2023.06.15