웹의 진화: HTTP/1.1, HTTP/2, HTTP/3 비교
Source: Dev.to
만약 현대 웹이 10년 전보다 훨씬 더 빠르게 느껴지는 이유가 궁금하다면, 그 답은 인터넷의 “배관”에 있습니다. 하이퍼텍스트 전송 프로토콜(HTTP)은 데이터‑중심 시대에 맞추기 위해 대대적인 변화를 겪었습니다.
1. 병목 현상: HTTP/1.1
초기에는 HTTP/1.1이 표준이었지만 Head‑of‑Line (HOL) 차단 문제를 안고 있었습니다.
- 연결당 단일 요청: 브라우저는 TCP 연결당 한 번에 하나의 요청만 처리할 수 있었습니다.
- 제한된 동시성: 브라우저는 일반적으로 단일 도메인에 대해 최대 6개의 동시 TCP 연결만 엽니다.
- 영향: 100개의 이미지가 있는 페이지는 6개씩 묶여 대기하게 되며 눈에 띄는 지연이 발생합니다.
2. 효율성 업그레이드: HTTP/2
2015년에 출시된 HTTP/2는 진정한 멀티플렉싱을 도입했습니다.
- 단일 연결, 다중 스트림: 데이터를 하나의 TCP 연결 위에서 독립적인 스트림으로 분할합니다.
- HPACK 압축: 헤더 압축을 통해 오버헤드를 줄입니다.
주의점
HTTP/2는 여전히 TCP에 의존합니다. 하나의 패킷이 손실되면 TCP는 전체를 일시 중지하고 재전송하기 때문에 TCP‑레벨 HOL 차단이 발생합니다.
3. 미래는 여기다: HTTP/3 (QUIC)
HTTP/3는 TCP를 QUIC으로 대체하며, QUIC은 UDP 위에 구축되어 남아 있던 성능 병목을 없앱니다.
- 더 이상 대기 없음: “이미지 A”의 패킷 손실이 “이미지 B”를 멈추게 하지 않습니다.
- Zero‑RTT (0‑RTT) 핸드셰이크: 연결 및 보안 핸드셰이크가 결합되어 초기 교환이 거의 즉시 이루어집니다.
- 연결 마이그레이션: 고유한 Connection ID 덕분에 세션이 IP 변경(예: Wi‑Fi → LTE)에도 중단 없이 유지됩니다.
기술 비교
| Aspect | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|
| Transport | TCP | TCP | QUIC over UDP |
| Concurrency | Max ~6 requests/conn | Multiplexed streams | Multiplexed (no HOL) |
| HOL Blocking | Connection‑level | TCP‑level (packet loss) | None |
| Compression | None (plaintext) | HPACK | QPACK |
| TLS | Optional | Effectively mandatory | Mandatory (TLS 1.3) |
| Handshake | Multi‑step | Faster (ALPN) | Instant (0‑RTT/1‑RTT) |
| Connection Migration | No | No | Yes (Wi‑Fi to LTE) |
요약: 어떤 것을 사용해야 할까?
- HTTP/1.1: 레거시 내부 시스템에만 남겨두는 것이 좋습니다.
- HTTP/2: 일반 웹 트래픽에 대한 현재 산업 표준입니다.
- HTTP/3: 모바일 앱, 고지연 지역, 성능이 중요한 플랫폼(예: Google, Facebook, Netflix)에 필수적입니다.
HTTP/3로의 전환은 “모바일‑우선” 인터넷을 의미합니다. 이제 연결이 안정적일 것이라고 가정하지 않고, 회복력 있게 최적화됩니다.