TCP를 이용한 데이터 통신을 할 때 프로세스와 프로세스를 연결하기 위해 가장 먼저 수행되는 과정
- 클라이언트가 서버에게 요청 패킷을 보내고
- 서버가 클라이언트의 요청을 받아들이는 패킷을 보내고
- 클라이언트는 이를 최종적으로 수락하는 패킷을 보낸다.
위의 3개의 과정을 3Way Handshake라고 부른다.
연결 수립을 하기 위한 통신 TCP 3Way Handshake : TCP를 이용한 통신을 시작할 때 처음에 무조건 이루어지는 과정
클라이언트 : 크롬, 엣지 등
서버 : Apache(다음, 네이트), Nginx(네이버), Tomcat 등
요청 패킷
- 출발지 포트 번호 :
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번호가 세팅되어 간다.
Seq
값과 Ack
값이 특정한 값으로 세팅되어있고 Flag값에 SYN
과 ACK
가 같이 세팅되어있음클라이언트의 요청
Flag : SYN
Seq
: 100, 랜덤한 값이 세팅됨Ack
: 0Seq
, Ack
과 동기화(SYN
)시킴서버
Flag : SYN+ACK
Seq
: 2000, Seq
값을 처음 보내므로 랜덤한 값 생성Ack
: 101Seq
번호 +1클라이언트의 응답
Flag : ACK
Seq
: 101, Seq
번호를 처음 보내는 게 아님. 서로 동기화 되어 받은 Ack
번호가 Seq
번호가 됨Ack
: 2001Ack
= 받은 Seq
번호 +1
, Seq
= 받은 Ack
번호위의 과정은 연결 수립 과정이므로 연결 수립이 끝나면 다음 차례는 클라이언트가 요청을 할 차례임.