TCP vs UDP vs QUIC

스머리·2023년 11월 7일

TCP

TCP(Transmission Control Protocol)는 데이터를 신뢰성 있게 주고받기 위한 프로토콜로, TCP/IP 4 계층 중 3계층인 전송 계층에서 사용한다. 여기서 '신뢰성 있다'는 말은 통신할 때 패킷을 유실하지 않고 확실하게 전달한다는 의미이다.

TCP가 데이터를 신뢰성 있게 보낼 수 있는 이유는 통신 방식에 있다.
두 장치가 통신하기 위해 연결을 설정할 때는 3-way handshake 방식으로 하고,
통신이 끝난 뒤 연결을 해제할 때는 4-way handshake 방식으로 한다.

  • 3-way handshake: TCP가 통신하기 위해 두 장치를 연결할 때 3단계를 거쳐 설정하는 것을 말한다. 연결요청(SYN) -> 연결 응답(SYN ACK) -> 응답 확인(ACK) 순서로 연결을 설정한다.
  • 4-way handshake: TCP가 통신이 끝난 두 장치의 연결을 끊을 때 4단계를 거쳐 종료하는 것을 말한다. 종료 요청(FIN) -> 요청 확인(ACK) -> 종료 준비 완료 (FIN) -> 종료 (ACK) 순서로 연결을 해제한다.

TCP는 이러한 핸드셰이크 방식으로 연결 설정과 해제를 단계적으로 확인하면서 두 장치간의 신뢰성 있는 데이터 전송을 보장한다.

또한 TCP는 데이터를 전송할 때 송신 측이 데이터를 보내는 속도가 수신 측이 받는 속도보다 빨라서 문제가 되는 것을 방지하기 위해 흐름 제어(flow control) 를 수행한다. 그리고 송신 측의 데이터 전송 속도와 네트워크상의 데이터 처리 속도 차이를 해결하기 위해 혼잡 제어(congestion control) 도 수행한다.

UDP

전송 계층에서 사용하는 또 다른 프로토콜인 UDP(User Datagram Protocol)는 데이터를 빠르고 간결하게 보내는 데 유용하다.
TCP와 달리 비연결형으로 동작하기 때문에 연결 설정을 하지 않고 데이터를 전송한다.
따라서 매번 연결 설정을 해야 하는 TCP보다 데이터를 더 빠르게 보내지만, 연결 설정이 없기 때문에 TCP와 같은 흐름 제어 및 혼잡 제어가 불가능하다.
연결 설정이 없기 때문에 TCP와 같은 흐름 제어 및 혼잡 제어가 불가능하다. 즉 데이터 전송에 대한 신뢰성을 보장하지 못한다. UDP는 신뢰성 있는 데이터 전송보다 속도가 중요한 인터넷 전화, 멀티미디어 스트리밍, 온라인 게임 등에 사용한다.

QUIC

신뢰성도 갖추고 속도도 빠른 프로토콜이 QUIC.
TCP는 신뢰성을 보장하지만 속도가 느리고, UDP는 속도가 빠르지만 신뢰성을 보장하지 않으니 사용자 입장에서는 속도나 신뢰성 중 하나만 선택해야 했다.
이에 구글은 TCP의 신뢰성과 UDP의 속도를 겸비한 새로운 프로토콜 개발에 착수했고, 그 결과 QUIC(Quick UDP Internet Connections) 프로토콜이 탄생했다.

QUIC 프로토콜은 그 뼈대가 UDP라 기본적으로 속도가 빠르다.
또한 UDP를 커스터마이징해 TCP처럼 신뢰성 있는 데이터 전송을 보장한다.
UDP는 TCP와 달리 많은 기능(연결 설정과 해제, 흐름 제어, 혼잡 제어)이 포함되지 않아 프로토콜의 커스터마이징이 용이하다. 이러한 특징을 이용해 UDP를 커스터마이징한 것이 바로 QUIC이다.

구분TCPUDPQUIC
연결 방식연결형비연결형비연결형
신뢰성신뢰성 있음신뢰성 없음신뢰성 있음
속도느림빠름빠름
용도정확한 데이터 전송이 보장 돼야 하는 서비스안정성보다 속도가 중요한 서비스신뢰성과 속도가 중요한 서비스


참고

  • 아는 만큼 보이는 프런트엔드 개발
profile
꾸준히 나아가는 프론트엔드 개발자

0개의 댓글