CS

[CS 스터디] Network - TCP 3 way handshake & 4 way handshake

yooja_tea 2023. 6. 22. 21:17

참고: TCP 3 way handshake

TCP는 신뢰할 수 있는 데이터 전송을 보장한다. 따라서 통신하기 전후로 두 호스트 간에 연결을 성립하고 해제하는 handshake 과정을 진행한다.

 

3 way handshake - 연결 성립

(데이터 전송 전)

  1. SYN
  2. 클라이언트가 서버로 연결을 원한다는 SYN(동기화 시퀀스 번호)와 함께 세그먼트를 전송
  3. SYN + ACK
    • ACK(Acknowledgement)는 수신한 세그먼트의 응답
    • SYN은 세그먼트를 시작할 가능성이 있는 시퀀스 번호
  4. 요청을 받은 서버는 SYN-ACK 신호 비트 세트로 클라이언트 요청에 응답한다.
  5. ACK
  6. 클라이언트는 서버의 응답을 확인했다는 ACK를 보낸다.

⇒ 연결 성립

https://www.geeksforgeeks.org/tcp-3-way-handshake-process/

 

4 way handshake - 연결 해제

(모든 통신이 끝난 후)

  1. 클라이언트에서 FINFIN_WAIT_1 상태에 있는 동안 클라이언트는 서버로부터 ACK를 가진 세그먼트가 오길 기다림
  2. 클라이언트는 FIN 비트가 1로 설정된 TCP 세그먼트를 서버에 보낸다. 이때 FIN_WAIT_1 상태로 들어간다.
  3. 서버에서 ACK
  4. 클라이언트로부터 FIN 비트 세그먼트를 수신 > 서버는 즉시 수신확인(ACK)을 클라이언트에게 보낸다. 이때 CLOSE_WAIT 상태로 들어간다.
  5. 클라이언트 대기FIN_WAIT_2 상태에 있는 동안 클라이언트는 서버로부터 FIN 비트가 1로 설정된 세그먼트가 들어오길 기다림
  6. 클라이언트가 FIN_WAIT_1 상태에서 서버의 ACK 세그먼트를 수신 > 클라이언트가 FIN_WAIT_2 상태로 들어간다.
  7. 서버에서 FIN
  8. ACK 세그먼트를 보낸 후, 일정 시간이 지나면 서버는 FIN 비트 세그먼트를 클라이언트로 보낸다.
  9. 클라이언트로 부터 ACK대기 시간이 끝나면 클라이언트의 모든 리소스가 해제된다.
  10. 클라이언트가 서버로부터 FIN 비트 세그먼트 수신 > 해당 세그먼트를 승인하고(= 서버로 ACK 보냄) TIME_WAIT 상태에 들어간다. TIME_WAIT 상태에서는 ACK가 손실된 경우 클라이언트가 다시 ACK를 보낼 수 있다. ****

⇒ 연결 해제

https://www.geeksforgeeks.org/tcp-connection-termination/?ref=lbp