https://websecurity.tistory.com/93
TCP는 서버와 클라이언트 사이간에 동기화하기 위하여 three-way handshake를 사용한다. TCP 3 Way Handshake는 TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해🔥 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.
https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c7e32b2c-31e6-47e4-9647-72e538034267/2443E74058DB158B1F
※그림 출처 : https://hpbn.co/building-blocks-of-tcp/
tcp 헤더만 가지고 있다.
tcp 패킷(세그먼트)의 종류는 총 9가지가 있다.
서버는 listen 상태이어야 한다.
시퀀스 넘버를 생성해서 syn 패킷에 담아 보낸다. (초기시퀀스 넘버는 ISN)
syn 값은 랜덤하게 정해진다.
전송에 사용되는 포트번호는 운영체제에 의해 랜덤하게 지정된다.
syn의 flag는 2진수 2번째 bit가 1
서버도 시퀀스 넘버를 생성해서 syn 패킷에 보낸다.
클라이언트에서 받은 시퀀스 넘버에 +1를 해서 ack로 보낸다.
전송에 사용되는 포트번호는 서버가 설정 가능하다.
서버가 보낸 시퀀스 넘버에 +1를 해서 ack로 보낸다.
서버가 보낸 ack 넘버를 시퀀스 넘버로 보낸다.
ack가 돌아오지 않는다면 데이터가 전달되지 않았다고 판단한 후 다시 보낸다.
https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6520bcbf-ec12-4081-a42d-9af9a86fd110/226ED53D58DB17CC2B