[네트워크] TCP 3-Way & 4-Way HandShake

DEV_HOYA·2023년 10월 31일
0

CS

목록 보기
27/55
post-thumbnail
post-custom-banner

📌 3-Way HandShake

  • TCP의 연결성립
  • TCP는 정확한 전송을 보장해야 한다. 따라서 통신하기에 앞서, 논리적인 접속을 성립하기 위해 3 way handshake 과정을 진행

⭐ 과정

  1. SYN : 클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보냄
  2. SYN+ACK : 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN+1을 보냄
  3. ACK : 클라이언트는 서버의 ISN+1한 값인 승인번호를 담아 ACK를 서버에 보냄

✅ ISN(Initial Sequence Number)

  • TCP기반 데이터 통신에서 각각의 새 연결에 할당된 고유한 32비트 시퀀스 번호를 나타냄
  • 충돌되지 않도록 고유한 번호 설정

✅ SYN(SYNchronization)

  • 연결 요청 플래그

✅ ACK(ACKnowledgement)

  • 응답 플래그

  • 이러한 서버와 클라이언트간의 연결 설정 과정이 있기 때문에 TCP는 신뢰성이 있다고 볼수 있음

📌 4-Way HandShake

  • TCP의 연결해제

⭐ 과정

  1. FIN을 서버로 보내고, 클라이언트는 FIN_WAIT_1 상태로 들어가고 서버의 응답을 기다림
  2. 서버는 클라이언트로 ACK를 보내고 CLOSE_WAIT 상태로 들어감
  3. 클라이언트가 응답을 받으면 FIN_WAIT_2 상태로 들어감
  4. 서버는 LAST_ACK 상태가 되며 일정 시간 이후에 클라이언트에 FIN을 보냄
  5. 클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가 되며 이후 클라이언트는 어느정도 시간동안 대기한 후 CLOSED 상태로 변함

✅ TIME_WAIT

  • 지연 패킷 등이 발생했을 때 데이터의 무결성을 해결하기 위해 패킷을 기다리는 시간
  • 2 * MSL 동안 기다림
  • 연결이 올바르게 닫힌 상태로 만들기 위해 존재(만일, 서버가 LAST_ACK상태로 되어있으면 다음 연결때 오류발생)

✅ MSL(Maximum Segment LifeTime)

  • 최대 패킷 수명
  • 평균 2분
post-custom-banner

0개의 댓글