개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← 글 목록

HTTP/2 — 멀티플렉싱과 헤더 압축

2025년 9월 20일
HTTPHTTP/2

HTTP/2는 2015년 표준화된 HTTP 버전으로, HTTP/1.1의 성능 한계를 극복하기 위해 설계되었습니다.

HTTP/1.1의 한계

HOL Blocking

HTTP/1.1 파이프라이닝은 여러 요청을 순서대로 보낼 수 있지만, 응답은 반드시 순서대로 받아야 합니다. 첫 번째 응답이 늦으면 나머지가 모두 기다립니다.

헤더 중복

같은 헤더를 매 요청마다 반복 전송합니다. User-Agent, Cookie 등의 헤더가 크면 낭비가 심합니다.

HTTP/2 핵심 기능

멀티플렉싱 (Multiplexing)

요청과 응답을 스트림 단위로 분리합니다. 하나의 연결에서 여러 스트림이 동시에 진행되어 HOL Blocking이 해소됩니다.

[TCP 연결 1개]
  스트림 1: GET /index.html (요청/응답)
  스트림 2: GET /style.css  (동시 처리)
  스트림 3: GET /app.js     (동시 처리)

헤더 압축 (HPACK)

중복 헤더를 보내지 않아 전송량이 크게 줄어듭니다.

서버 푸시 (Server Push)

HTML 응답과 함께 CSS, JS 파일을 미리 전송합니다. 클라이언트가 파싱 후 별도로 요청할 필요가 없어 지연이 줄어듭니다.

바이너리 프레이밍

HTTP/1.1이 텍스트 기반인 것과 달리, HTTP/2는 바이너리 형식으로 통신합니다. 파싱이 효율적이고 오류에 강합니다.

스트림 우선순위

요청마다 우선순위를 설정할 수 있습니다. 중요한 리소스를 먼저 받을 수 있게 됩니다.

HTTP/1.1 vs HTTP/2 비교

항목HTTP/1.1HTTP/2
전송 형식텍스트바이너리
멀티플렉싱없음있음
헤더 압축없음HPACK
서버 푸시없음있음
HOL Blocking있음TCP 수준에서 여전히 존재

TCP 수준 HOL Blocking

HTTP/2가 애플리케이션 수준의 HOL Blocking은 해결했지만, TCP 패킷 손실 시 해당 연결의 모든 스트림이 기다려야 하는 TCP 수준 HOL Blocking은 남아있습니다. 이를 해결하기 위해 HTTP/3는 UDP 기반의 QUIC을 도입했습니다.

← 이전 글HTTP — 하이퍼텍스트 전송 프로토콜
다음 글 →HTTP/3 — QUIC 기반의 차세대 HTTP