2023년 3월 10일 금요일

HTTP/3

1. HTTP/3란?


HTTP/3은 인터넷에서 정보를 주고받는 프로토콜 중 하나로, 이전 버전인 HTTP/2에서 발전한 새로운 프로토콜이다. HTTP/3는 기존의 TCP를 사용하는 것이 아니라 QUIC 프로토콜을 사용하여 데이터를 전송하며, 이를 통해 더욱 빠르고 안전한 데이터 전송을 가능케 한다.

HTTP/3에서는 기존에 사용되던 TCP의 문제점인 "Head of Line Blocking(HOL Blocking)"을 개선하기 위해 QUIC 프로토콜을 도입했다. HOL Blocking은 TCP에서 데이터 전송 시 일부 패킷이 지연되면 그 뒤에 있는 모든 패킷이 기다려야 하는 문제가 있는데, 이는 전체적인 전송 속도를 늦추는 원인이 되었다. 반면, QUIC 프로토콜은 여러 개의 스트림을 통해 데이터를 전송하므로, 한 스트림에서 지연이 발생해도 다른 스트림의 데이터 전송이 계속될 수 있다.

또한, HTTP/3에서는 데이터 전송 시 보안성을 강화하기 위해 TLS 1.3을 필수로 사용하도록 지정하였다. TLS 1.3은 이전 버전보다 더욱 강력한 보안 기능을 제공하며, 데이터 전송 시 암호화를 하여 중간자 공격 등의 보안 문제를 방지한다.

HTTP/3은 이전 버전인 HTTP/2와 마찬가지로 멀티플렉싱(multiplexing)을 지원한다. 이를 통해 하나의 TCP 연결로 여러 개의 요청과 응답을 처리할 수 있으며, 이로 인해 더욱 빠른 웹 페이지 로딩 속도를 기대할 수 있다.

총괄적으로 HTTP/3은 기존의 HTTP/1.1, HTTP/2 프로토콜의 단점을 개선하고 보안성을 강화한 새로운 프로토콜이다. 이를 통해 웹 페이지 로딩 속도의 개선과 함께 더욱 안전한 데이터 전송을 기대할 수 있다.

2. HTTP/3의 이전 버전인 HTTP/2의 문제점


HTTP/2는 기존의 HTTP/1.1과 비교하여 성능 향상을 이루기 위한 프로토콜로 개발되었다. 그러나 HTTP/2도 몇 가지 문제점을 가지고 있다. 첫째, HTTP/2는 TCP/IP 위에서 작동하므로 TCP/IP의 문제점도 함께 갖고 있다. TCP/IP는 연결 지향적이기 때문에 연결 설정에 시간이 소요되고, 여러 개의 패킷이 하나의 연결에 묶여 전송되므로 패킷의 유실이 발생하면 재전송을 해야 하는 등의 문제점을 가지고 있다.

둘째, HTTP/2는 대부분의 웹 사이트에서 사용하는 TLS(Transport Layer Security) 프로토콜을 필수적으로 사용하도록 규정하고 있다. 그러나 TLS는 암호화와 복호화 과정이 필요하기 때문에 처리 속도가 느리고, 따라서 웹 사이트의 로딩 속도를 느리게 만든다.

셋째, HTTP/2는 서버 푸시(Server Push)라는 기능을 지원한다. 이는 서버에서 클라이언트의 요청 없이 리소스를 전송할 수 있게 해주는 기능으로, 특히 웹 사이트의 초기 로딩 속도를 향상시키는 데 효과적이다. 그러나 이 기능은 서버의 리소스 소모를 증가시키고, 서버의 부하를 높일 수도 있다는 단점을 가지고 있다.

이와 같은 문제점들이 HTTP/2의 성능 향상을 제한하고, 새로운 프로토콜의 필요성을 대두시키게 되었다. 이러한 상황에서 나온 것이 HTTP/3이다.


3. HTTP/3에서의 핵심 기술: QUIC


HTTP/3에서 가장 핵심적인 기술은 QUIC입니다. QUIC은 TCP와 UDP의 장점을 결합하여 만든 전송 프로토콜입니다. QUIC은 연결 설정 과정에서 TLS 핸드쉐이크를 포함하며, 데이터 전송시에는 TCP의 문제점 중 하나였던 Head-of-Line Blocking(HOLB)을 해결하기 위해 멀티플렉싱을 지원합니다. 이를 통해 여러 개의 데이터 스트림을 하나의 연결에서 전송할 수 있으며, 각 스트림은 서로 독립적으로 전송되기 때문에 한 스트림의 지연이 다른 스트림에 영향을 미치지 않습니다. 또한, QUIC은 연결이 끊어졌을 때 연결 설정과정이 생략되므로 빠른 재연결이 가능합니다. 이를 통해 성능 향상과 함께 안정적인 연결을 유지할 수 있습니다.

4. QUIC의 특징


QUIC(Quick UDP Internet Connections)은 TCP와는 달리, TCP 연결을 설정하고 해제하는데 필요한 '3-way handshake'가 없고 데이터를 전송하기 위해 'Connection ID'와 'Packet Number'를 사용하는 멀티플렉싱된 연결을 생성한다. 이러한 QUIC의 특징은 다음과 같다.

  • 빠른 핸드쉐이크
    • QUIC은 암호화된 연결 설정 및 통신에 사용되는 핸드쉐이크를 1-RTT(One Round Trip Time)로 수행할 수 있어 TCP에 비해 더욱 빠른 연결 설정이 가능하다.
  • 멀티플렉싱
    • QUIC은 여러 개의 스트림을 사용하여 멀티플렉싱을 지원한다. 이는 TCP와는 달리, 데이터 패킷이 순서에 상관없이 도착하여도 정상적으로 재조립될 수 있어 효율적인 데이터 전송이 가능하다.
  • 에러 복구
    • QUIC은 '폴링(keep-alive)'이나 '재연결(reconnect)'과 같은 TCP와 같은 기술보다 더욱 효과적인 에러 복구 기능을 제공한다. 이는 QUIC이 패킷 전송 속도를 유지하면서 재전송을 수행할 수 있어 TCP에 비해 더욱 빠른 에러 복구가 가능하다.
  • 적응형 전송 제어
    • QUIC은 TCP와는 달리 적응형 전송 제어(Adaptive Congestion Control) 기술을 사용한다. 이는 더욱 빠르고 안정적인 데이터 전송을 위해 네트워크 상태에 따라 전송 속도를 동적으로 조절할 수 있다.
  • 기능 확장성
    • QUIC은 빠른 핸드쉐이크, 멀티플렉싱, 에러 복구, 적응형 전송 제어 등 다양한 기능을 제공함으로써, 다양한 프로토콜과 연동할 수 있는 기능 확장성을 가지고 있다.

5. HTTP/3의 이점


HTTP/3의 이점은 크게 다음과 같다.
  • 더 빠른 속도와 낮은 지연 시간
    • QUIC 프로토콜은 다중화와 병렬 전송을 통해 데이터 전송을 빠르게 처리할 수 있어, HTTP/2에서 발생하던 head-of-line blocking 문제를 해결하고, 빠른 속도와 낮은 지연 시간을 제공한다.
  • 안정성 향상
    • TCP와 달리 QUIC은 연결 상태를 유지하며, 패킷 전송 중에 연결이 끊어지면 새로운 연결을 설정할 필요 없이 이전 상태를 유지하면서 재전송을 수행한다. 또한, 암호화 기능이 기본적으로 내장되어 있어 데이터 보안도 강화된다.
  • 대역폭 사용량 감소
    • HTTP/3은 데이터 전송에 필요한 패킷 수를 최소화하여 대역폭 사용량을 감소시키는 기술을 사용한다. 이를 통해 서버 리소스 사용량과 비용을 절감할 수 있다.
  • 호환성
    • HTTP/3는 기존의 HTTP/1.1, HTTP/2와의 호환성을 유지하면서도 성능 향상을 제공한다. 또한, 기존의 TLS 프로토콜 대신에 QUIC을 사용하기 때문에 TLS 연결 설정 단계에서 발생하는 지연 시간도 줄일 수 있다.
  • 서버 부하 감소
    • HTTP/3는 요청과 응답을 처리하는 방식이 기존의 HTTP/1.1, HTTP/2와는 다르기 때문에, 서버 부하를 분산할 수 있는 서버 구성을 구현하기 쉽다. 이를 통해 서버의 부하를 분산시키고, 안정적인 서비스를 제공할 수 있다.

6. HTTP/3 적용 사례


HTTP/3은 아직 출시된 지 얼마 되지 않았기 때문에, 실제 적용 사례는 아직 많지 않다. 하지만 많은 회사들이 이미 HTTP/3를 시험해보고 있으며, 이를 통해 HTTP/3의 장점들을 경험하고 있다.

예를 들면, 구글은 이미 Chrome 브라우저와 YouTube 서비스에서 HTTP/3를 지원하고 있다. Facebook도 같은 시기에 HTTP/3 지원을 발표하였으며, 아마존 웹 서비스(AWS)와 클라우드플레어 등의 클라우드 서비스 업체들도 HTTP/3를 지원하고 있다. 또한, 클라이언트와 서버 간에 연결을 안정적으로 유지해주는 기능 때문에, 게임 서버 및 스트리밍 서비스 등에서도 HTTP/3가 사용되고 있다.

이처럼, HTTP/3는 현재 많은 회사들이 시험해보고 있고, 이를 통해 HTTP/3의 장점들을 검증하고 있다. 앞으로도 HTTP/3의 적용 사례가 더욱 늘어날 것으로 예상된다.

7. HTTP/3의 미래전망


HTTP/3은 현재 인터넷 기술 발전의 최전선에 서 있으며, 앞으로 더욱 중요해질 전망입니다.

먼저, HTTP/3은 웹 성능을 향상시켜주는 기술이므로, 더욱 빠르고 안정적인 인터넷 환경을 제공할 것입니다. 특히, 모바일 환경에서 빠른 인터넷 속도와 높은 신뢰성을 요구하는 시대에 HTTP/3은 큰 도움이 될 것입니다.

또한, HTTP/3은 기존의 TCP 프로토콜보다 더욱 안정적인 QUIC 프로토콜을 기반으로 하고 있으므로, 더욱 안전한 인터넷 환경을 제공할 것입니다. 암호화와 보안 기능이 기본적으로 적용되어 있기 때문입니다.

더불어, HTTP/3은 스트리밍 기능을 강화시켜 더욱 원활한 비디오 및 오디오 스트리밍을 가능케 할 것입니다. 이는 점차 늘어나는 스트리밍 서비스 사용에 대한 대응 수단이 될 것입니다.

또한, HTTP/3은 이전 버전인 HTTP/2보다 더욱 적은 패킷으로 데이터 전송이 가능하며, 이는 더욱 효율적인 대역폭 사용을 가능케 합니다. 따라서, HTTP/3이 보급되면 대규모 데이터 전송이 더욱 원활하게 이루어질 것으로 예상됩니다.

마지막으로, HTTP/3은 Google, Cloudflare, Microsoft 등 대형 기업들이 개발하고 있으며, 현재 이미 많은 기업들이 HTTP/3을 도입하고 있습니다. 이는 HTTP/3의 대중화와 더불어 더욱 많은 기업들이 이를 적극적으로 활용할 것으로 예상됩니다.

8. 결론


이상으로 HTTP/3에 대해 살펴보았습니다. HTTP/3은 QUIC 프로토콜을 기반으로 하며, TCP의 문제점을 보완하고 성능을 향상시켰습니다. 이를 통해 웹 사이트의 로딩 속도를 높이고, 보안성도 높일 수 있습니다. 또한, HTTP/3이 적용된 기업들이 늘어나고 있어, 앞으로 더 많은 기업들이 HTTP/3을 도입할 것으로 보입니다. 하지만, 아직까지는 지원하지 않는 기기나 환경이 있어 전면적인 도입에는 시간이 걸릴 것으로 예상됩니다. 하지만, 앞으로 HTTP/3의 적용과 발전에 더 많은 주목이 필요할 것입니다.