HTTP 버전별 차이

기술노트

HTTP 버전별 차이 (1.1, 2.0, 3.0)

HTTP(HyperText Transfer Protocol)는 웹의 핵심 통신 프로토콜로, 웹 환경의 변화와 함께 성능, 효율성, 보안 문제를 해결하기 위해 지속적으로 발전해왔습니다. 주요 버전인 HTTP/1.1, HTTP/2, HTTP/3는 각각 웹 통신 방식에 중요한 변화를 가져왔습니다.


🌐 HTTP/1.1: 웹의 표준을 확립하다

HTTP/1.0의 비효율성(연결당 하나의 요청/응답)을 개선하기 위해 등장했으며, 현재까지도 가장 널리 사용되는 버전입니다.

  • Keep-Alive (지속 연결) : 한 번 TCP 연결을 맺으면 여러 요청/응답을 주고받을 수 있도록 하여, 연결 설정/해제 오버헤드를 줄였습니다.
  • 파이프라이닝 (Pipelining) : 응답을 기다리지 않고 여러 요청을 연속적으로 보낼 수 있도록 했습니다. (하지만 실제 구현의 복잡성 및 HOL Blocking 문제로 널리 사용되지는 않음)
  • 호스트 헤더 (Host Header) : 하나의 IP 주소로 여러 도메인을 호스팅할 수 있게 했습니다 (가상 호스팅).
  • 캐싱 메커니즘 : 캐시 제어 헤더(Cache-Control, ETag, Last-Modified)를 도입하여 캐싱 효율을 높였습니다.
  • 한계 : 여전히 요청-응답이 순차적(HOL Blocking), 헤더 중복, 압축 없음 등의 문제가 있었습니다.

🚀 HTTP/2: 성능 향상에 집중하다

HTTP/1.1의 한계(특히 HOL Blocking)를 극복하고 웹 성능을 획기적으로 개선하기 위해 등장했습니다. SPDY 프로토콜을 기반으로 합니다.

  • 멀티플렉싱 (Multiplexing) : 하나의 TCP 연결 내에서 여러 개의 요청과 응답을 동시에 주고받을 수 있도록 하여, HOL Blocking(Head-Of-Line Blocking) 문제를 해결했습니다.
  • 헤더 압축 (Header Compression - HPACK) : 중복되는 헤더를 압축하여 전송량을 감소시켰습니다.
  • 서버 푸시 (Server Push) : 클라이언트가 요청하지 않은 리소스(e.g., CSS, JS)를 서버가 미리 클라이언트에 푸시하여 전송 시간을 단축시켰습니다.
  • 스트림 우선순위 (Stream Prioritization) : 리소스의 중요도에 따라 전송 우선순위를 설정할 수 있습니다.
  • 이진 프레이밍 (Binary Framing) : 메시지를 텍스트가 아닌 이진 프레임으로 인코딩하여 파싱 속도 향상 및 오류 감소를 가져왔습니다.
  • 기반 프로토콜 : TCP

⚡ HTTP/3: UDP 기반의 혁신

HTTP/2가 TCP 기반이므로 여전히 TCP의 고질적인 문제(TCP HOL Blocking, 3-Way Handshake 지연)를 완전히 해결하지 못하는 한계가 있었습니다. 이를 극복하기 위해 등장했습니다.

  • QUIC (Quick UDP Internet Connections) 프로토콜 사용 : TCP 대신 UDP 기반의 QUIC 프로토콜을 전송 계층으로 사용합니다.
  • TCP HOL Blocking 해결 : QUIC은 자체적으로 멀티플렉싱을 지원하여, 하나의 스트림에서 패킷 손실이 발생해도 다른 스트림에 영향을 주지 않습니다.
  • 연결 설정 시간 단축 : 0-RTT (Zero Round Trip Time) 또는 1-RTT로 연결 설정이 가능하여, TCP의 3-Way Handshake보다 빠릅니다.
  • 연결 마이그레이션 (Connection Migration) : 네트워크 변경(e.g., Wi-Fi에서 5G로 전환) 시에도 IP 주소 변경 없이 연결을 유지할 수 있습니다.
  • 향상된 혼잡 제어 : QUIC 자체적으로 혼잡 제어 메커니즘을 가집니다.
  • 기반 프로토콜 : UDP (QUIC)

💡 개발자 핵심 Point

  • HTTP 버전의 발전은 웹 성능 최적화와 사용자 경험 향상에 초점을 맞추고 있습니다.
  • HTTP/1.1 : Keep-Alive, 캐싱, 가상 호스팅 등 웹의 기본을 다졌습니다.
  • HTTP/2 : 멀티플렉싱, 헤더 압축, 서버 푸시 등으로 성능을 크게 개선했습니다. (대부분의 웹사이트가 현재 사용)
  • HTTP/3 : QUIC을 통해 TCP의 한계를 극복하고, 모바일 환경 및 불안정한 네트워크 환경에서 특히 강점을 가집니다. (점차 확산 중)
  • 개발자는 웹 서비스의 성능을 최적화하기 위해 HTTP 버전별 특징을 이해하고, 적절한 버전을 사용하거나 관련 기술(e.g., CDN, 캐싱)을 활용해야 합니다.