HTTP/1.1
은 1999년에 표준화된 HTTP 프로토콜로, 인터넷에서 많이 쓰이는 프로토콜이다.
28년 동안이나 표준,,
HTTP/3
는 HTTP 프로토콜의 최신 버전으로, Google의 QUIC
(Quick UDP Internet Connections) 프로토콜을 기반으로 만들어졌다. HTTP/2에서 발생하는 몇 가지 문제를 해결하고 성능을 개선하려고 개발된 것이다.
예로 HTTP/2에서 Head-of-Line Blocking 문제가 있었지만 HTTP/3에서는 QUIC 프로토콜 개발을 통해 문제를 해결했다.
UDP
(User Datagram Protocol)를 사용하여 연결 성능을 향상시킨다.HPACK
또는 QPACK
을 사용하여 헤더를 압축하고, 이전에 전송된 헤더를 재사용하여 네트워크 효율성을 높인다.TCP
대신 UDP
를 사용하여 패킷 손실이나 지연에 대한 영향을 최소화한다.http/1.1
>>>>>>>>>>>>> http/2
>> http/3
QUIC
은 Google이 개발한 전송 계층 프로토콜로, 기존 TCP
와 TLS
를 대체하려고 만들어졌다. QUIC
의 주요 특징은 다음과 같다:
TLS
를 내장하여 보안 연결을 제공한다. 그래서 연결 설정 시 보안이 보장되고, 별도의 SSL 핸드셰이크가 필요 없다.빠른 연결 설정
QUIC은 기존의 TCP와 TLS 연결 설정을 통합하고, 연결을 빠르게 설정할 수 있도록 설계되었다. QUIC은 0-RTT(Zero Round Trip Time)와 1-RTT(One Round Trip Time) 연결을 지원하여, 새로운 연결이 설정될 때 필요한 지연 시간을 크게 줄여준다. 이 덕분에 웹 페이지 로딩 속도가 향상된다.
연결 복원력
QUIC은 연결이 끊어져도, 클라이언트와 서버가 같은 IP나 네트워크를 사용할 경우 연결을 재설정하지 않고 빠르게 복구할 수 있다. 모바일 네트워크와 같은 불안정한 환경에서도 연결이 끊어졌다가 다시 연결될 때 더 빠르게 복구된다.
내장된 암호화
QUIC은 기본적으로 TLS 1.3을 내장하여, 보안 연결을 제공한다. 기존의 HTTP/2에서는 TLS를 별도로 설정해야 했지만, QUIC에서는 암호화가 내장되어 있어 보안 설정이 간소화되고, 보안상의 취약점을 줄일 수 있다.
패킷 손실에 강함
QUIC은 패킷 손실이 발생했을 때 빠르게 복구할 수 있는 기능을 제공한다. TCP는 하나의 패킷이 손실되면 다른 패킷들이 함께 지연될 수 있지만, QUIC은 각 스트림을 독립적으로 처리하여, 하나의 패킷 손실이 전체 성능에 영향을 미치지 않도록 한다.
헤더 압축과 멀티플렉싱
QUIC은 HTTP/2와 비슷하게 멀티플렉싱을 지원하며, HTTP/2보다 효율적인 헤더 압축 방식인 QPACK
을 사용한다. 이를 통해 네트워크 대역폭을 절약하고, 전송 속도를 높일 수 있다. 여러 요청과 응답을 동시에 처리하는데 효율적이다.
지연 시간 최소화
QUIC은 패킷 전송을 빠르게 하며, 연결 설정 시간을 단축시켜 지연 시간을 줄인다. 또한, QUIC은 연결을 재사용할 때 더 빠르게 연결을 설정할 수 있어 반복적인 요청에서 성능이 향상된다.
멀티플렉싱을 통한 효율적인 트래픽 관리
QUIC은 여러 스트림을 하나의 연결에서 동시에 처리할 수 있다. HTTP/2와 마찬가지로 여러 요청을 동시에 처리할 수 있지만, QUIC은 TCP 대신 UDP를 사용하여 더 효율적이고 빠른 멀티플렉싱을 구현한다.
모바일 네트워크에서의 성능 향상
모바일 환경에서 QUIC은 매우 유리하다. 불안정한 네트워크에서 빠른 연결 복구와 패킷 손실 복구가 가능해 웹 페이지 로딩 속도가 더 빨라진다. 이로 인해 모바일 장치에서 웹 애플리케이션의 성능이 크게 향상된다.
새로운 프로토콜로 인한 호환성 문제
QUIC은 기존의 TCP를 대체하려는 새로운 프로토콜이다. 이로 인해 기존의 네트워크 장비나 방화벽, 로드 밸런서 등이 QUIC을 제대로 지원하지 못할 수 있다. 특히, QUIC은 UDP 기반이기 때문에 UDP 트래픽을 차단하는 네트워크 환경에서는 제대로 작동하지 않을 수 있다.
방화벽 및 네트워크 장비의 제한
QUIC은 UDP를 사용하기 때문에 많은 방화벽과 NAT 장비들이 이를 제한하거나 필터링할 수 있다. 대부분의 기존 네트워크 장비들은 UDP 트래픽에 대해 적절한 처리를 하지 못하고, 그로 인해 QUIC이 차단되거나 제대로 작동하지 않을 수 있다. 또한, UDP는 TCP보다 세션을 추적하기 어려워, 트래픽 필터링 및 모니터링이 어려운 경우가 많다.
구현 복잡성
QUIC은 기존의 TCP와 TLS를 대체하기 위한 새로운 전송 계층 프로토콜이다. 이로 인해 서버와 클라이언트 측에서 QUIC을 구현하는 데 상당한 작업이 필요하다. 특히 QUIC은 암호화와 연결 설정을 내장하고 있어, 이를 구현하려면 기존 시스템에서 변경을 요구할 수 있다.
초기 연결 지연
QUIC은 빠른 연결 설정을 목표로 하고 있지만, 첫 번째 연결에서는 여전히 TCP와 TLS 핸드셰이크가 필요한데, 이 과정에서 일부 지연이 발생할 수 있다. 0-RTT 연결 재사용을 지원하지만, 첫 연결 시에는 TCP와 TLS의 초기 설정 시간이 여전히 존재한다.
모바일 데이터 및 배터리 소모
QUIC은 여러 가지 최적화된 기능을 제공하지만, 특히 모바일 장치에서는 상대적으로 더 많은 리소스를 소비할 수 있다. 높은 대역폭을 처리해야 하고, 연결을 계속 유지하기 위해 더 많은 리소스를 요구할 수 있어 배터리 소모와 데이터 사용량이 증가할 수 있다.
기존 인프라와의 통합 문제
QUIC은 전송 계층에서의 혁신을 일으켰지만, 기존의 인프라와 통합하는 데 어려움이 있을 수 있다. 예를 들어, 로드 밸런서나 CDN(콘텐츠 배달 네트워크)에서는 QUIC을 지원하지 않거나 이를 효율적으로 처리하기 위한 추가적인 구성이 필요할 수 있다.
디버깅과 모니터링의 어려움
QUIC은 TLS를 내장하고 있고, 암호화된 연결을 사용하기 때문에, 네트워크 트래픽을 모니터링하고 디버깅하는 데 어려움이 있다. 특히 네트워크 문제를 추적할 때, 패킷을 복호화하거나 세부적인 트래픽 분석을 하기 위해서는 추가적인 도구나 기술이 필요하다.
Feature | HTTP/1.1 | HTTP/2 | HTTP/3 |
---|---|---|---|
기반 프로토콜 | TCP | TCP | QUIC (UDP) |
헤더 압축 | 없음 | HPACK | QPACK |
멀티플렉싱 | 요청-응답 순차 처리 | 병렬 처리 가능 | 병렬 처리 및 빠른 복구 |
연결 설정 시간 | 느림 | 빠름 | 더 빠름 |
보안 | TLS 별도 사용 | TLS 내장 | TLS 내장 |
성능 | 저성능 | 개선된 성능 | 최적화된 성능 (빠른 연결 설정) |