[CS 스터디] 2. 네트워크 - TCP의 연결 및 해제

채채·2023년 12월 13일

CS 스터디

목록 보기
13/21

TCP 3 way handshake & 4 way handshake

3 way handshake - 연결 성립

  • 통신에 앞서 논리적 접속을 성립하기 위해 3 way handshake 과정 진행
  1. 클라이언트가 서버에서 SYN 패킷을 보냄 (sequence : x)
  2. 서버가 SYN(x) 받음, 클라이언트로 받았다는 신호 ACK와 SYN 패킷을 보냄 (sequence : y, ACK : x+1)
  3. 클라이언트는 서버의 응답은 ACK(x+1)와 SYN(y) 패킷을 받고, ACK(y+1)를 서버로 보냄

3번의 통신 완료 후 연결 성립

4 way handshake - 연결 해제

연결 성립 후 모든 통신이 끝났다면 해제해야 함

  1. 클라이언트 -> 서버에게 연결 종료한다는 FIN 플래그 보냄
  2. 서버는 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보냄 (이 때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 된다)
  3. 데이터를 모두 보냈다면, 연결이 종료되었다는 FIN 플래그를 클라이언트에 보냄
  4. 클라이언트는 FIN을 받고, 확인했다는 ACK를 서버에 보냄 (아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT 을 통해 기다림)
  • 서버는 ACK를 받은 이후 소켓을 닫는다 (Closed)
  • TIME_WAIT 시간이 끝나면 클라이언트도 닫음 (Closed)

이렇게 4번의 통신이 완료되면 연결이 해제됨

출처

Tech Interview

profile
성장하는 사람

0개의 댓글