TCP 란?
TCP 는 연결 지향형 프로토콜이다.
TCP 는 가상 회선을 만들어 신뢰성을 보장하도록 하는 프로토콜로 속도가 느리다.
TCP 는 파일전송과 같은 신뢰성이 중요한 서비스에 사용된다.
TCP 3 way handshake
TCP 가 가상회선을 수립하는 단계이다.
클라이언트는 서버에 요청을 전송할 수 있는지, 서버는 클라이언트에게 응답을 전송할 수 있는지 확인하는 과정이다.
SYN ACK 패킷을 주고받으며 임의의 난수로 SYN 플래그를 전송하고 ACK 플래그에 1을 더한값을 전송한다.
TCP 4 way handshake
TCP 연결을 해제하는 단계로 클라이언트는 서버에게 연결 해제를 통지하고 서버가 이를 확인하고 클라이언트에게 이를 받았음을 전송해주고 최종적으로 연결이 해제된다.
단, 서버에서 소켓이 닫혔다고 통지해도 클라이언트 측에서는 일정시간 대기하는데 이는 혹시나 패킷이 나중에 도착할 수도 있기 때문이다.
흐름 제어
혼잡 제어
UDP 란?
UDP 는 데이터를 데이터그램 단위로 전송하는 프로토콜이다.
UDP 는 따로 신뢰성을 보장하기 위한 절차가 없어 속도가 빠르다.
UDP 는 스트리밍 RTP 와 같은 연속성이 중요한 서비스에 사용된다.
UDP 도 신뢰성을 UDP 자체에서 보장하지 않는 것 뿐이지 개발자가 직접 신뢰성을 보장하게끔 할 수 있다.
HTTP/3 는 QUIC 이라는 프로토콜을 기반으로 하는데 이는 UDP 를 기반으로 한다.
즉, UDP 자체는 신뢰성을 보장하지 않지만 추가적인 정의를 통해 신뢰성을 보장받을 수 있다.