연결지향형 TCP 프로토콜 - TCP 3Way Handshake

hyemin's velog💬·2022년 8월 17일
1

네트워크

목록 보기
11/19

TCP를 이용한 통신 과정

연결 수립 과정(가장 중요🌟)

TCP를 이용한 데이터 통신을 할 때 프로세스와 프로세스를 연결하기 위해 가장 먼저 수행되는 과정

  1. 클라이언트가 서버에게 요청 패킷을 보내고
  2. 서버가 클라이언트의 요청을 받아들이는 패킷을 보내고
  3. 클라이언트는 이를 최종적으로 수락하는 패킷을 보낸다.

위의 3개의 과정을 3Way Handshake라고 부른다.

3Way Handshake

연결 수립을 하기 위한 통신 TCP 3Way Handshake : TCP를 이용한 통신을 시작할 때 처음에 무조건 이루어지는 과정

클라이언트 : 크롬, 엣지 등
서버 : Apache(다음, 네이트), Nginx(네이버), Tomcat 등

  1. 클라이언트에서 요청

요청 패킷

  • 출발지 포트 번호 : df a5
  • 목적지 포트 번호 : 00 50 = 80(10) (웹 서버 포트 번호)
  • Acknowledge Number : 00 00 00 64 = 100(10)
  • Sequence Number : 00 00 00 00 = 0(10)
  • Offset(헤더 길이) : 5 (4로 나눈 값이므로 20, TCP의 길이가 20byte)
  • Reserved : 0
  • TCP Flags, Sync : 02
  • Window : 20 00
    등등

✔️중요한 것 : Sync와 ACK번호, Seq번호가 세팅되어 간다.


  1. 디캡슐레이션해서 내용 확인. Flag 값을 확인하고 연결 요청하는 것을 알아챈 뒤 응답을 함. 이때, Seq값과 Ack값이 특정한 값으로 세팅되어있고 Flag값에 SYNACK가 같이 세팅되어있음


  1. 클라이언트에서 서버에 응답

클라이언트의 요청
Flag : SYN

  • Seq : 100, 랜덤한 값이 세팅됨
  • Ack : 0
    ➡️받는 쪽에서 Seq, Ack과 동기화(SYN)시킴

서버
Flag : SYN+ACK

  • Seq : 2000, Seq값을 처음 보내므로 랜덤한 값 생성
  • Ack : 101
    ➡️Ack = 받은 Seq 번호 +1

클라이언트의 응답
Flag : ACK

  • Seq : 101, Seq 번호를 처음 보내는 게 아님. 서로 동기화 되어 받은 Ack 번호가 Seq 번호가 됨
  • Ack : 2001
    ➡️Ack = 받은 Seq 번호 +1, Seq = 받은 Ack 번호

위의 과정은 연결 수립 과정이므로 연결 수립이 끝나면 다음 차례는 클라이언트가 요청을 할 차례임.

https://youtu.be/Ah4-MWISel8

profile
기록장👻

0개의 댓글