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