HTTP/1.1 vs HTTP/2 vs HTTP/3
HTTP/1.1 vs HTTP/2 vs HTTP/3
개요
HTTP는 웹에서 클라이언트와 서버가 데이터를 주고받기 위한 핵심 프로토콜이다.
요청을 병렬로 처리하지 못해 발생하던 대기 문제를 줄이고, 연결·암호화 과정에서 낭비되던 시간을 단축하며, 모바일·고속 네트워크처럼 변화한 환경에서도 빠르고 안정적으로 동작하도록 통신 방식이 점진적으로 개선되어 왔다.
이 글에서는 각 HTTP 버전이 어떤 문제를 해결하기 위해 등장했는지와 무엇이 어떻게 달라졌는지를 중심으로 정리한다.
HTTP/1.1
HTTP/1.1은 가장 오랫동안 사용되어 온 HTTP 버전으로, 현재도 여전히 많은 환경에서 사용되고 있다.
특징
- TCP 기반
- 요청–응답(Request–Response) 모델
- 기본적으로 순차적 처리
- Keep-Alive를 통한 연결 재사용 가능
한계
- Head-of-Line Blocking (HOL Blocking)
하나의 요청이 지연되면 그 뒤의 요청도 함께 지연된다. - 하나의 TCP 연결에서는 동시에 하나의 요청만 정상적으로 처리 가능
- 병렬 요청을 위해 다수의 TCP 연결 필요 → 성능 저하
HTTP/2
HTTP/2는 HTTP/1.1의 성능 문제를 해결하기 위해 등장했다.
프로토콜의 의미는 유지하면서 전송 방식 자체를 개선한 것이 핵심이다.
주요 개선 사항
1. 멀티플렉싱 (Multiplexing)
- 하나의 TCP 연결에서 여러 요청과 응답을 동시에 처리
- HOL Blocking 문제를 애플리케이션 계층에서 완화
2. 바이너리 프레이밍
- 텍스트 기반이 아닌 바이너리 프로토콜
- 파싱 속도 및 안정성 향상
3. 헤더 압축 (HPACK)
- 반복되는 헤더 정보를 압축하여 전송
- 네트워크 트래픽 감소
4. 서버 푸시 (Server Push)
- 클라이언트 요청 이전에 서버가 리소스를 미리 전송 가능
여전히 남아 있는 문제
- TCP 기반이기 때문에 TCP 레벨의 HOL Blocking은 여전히 존재
- 패킷 손실 시 연결 전체가 영향을 받음
HTTP/3
HTTP/3는 기존 TCP 대신 QUIC(UDP 기반 전송 프로토콜) 위에서 동작한다.
HTTP/2에서 남아 있던 TCP 한계를 근본적으로 해결하기 위해 설계되었다.
핵심 특징
1. QUIC 기반 (UDP)
- TCP 3-way handshake 제거
- TLS 1.3이 기본 내장
- 연결 수립 지연 시간 감소
2. 스트림 단위 독립성
- 각 스트림이 독립적으로 동작
- 하나의 스트림에서 패킷 손실이 발생해도 다른 스트림에 영향 없음
3. 연결 마이그레이션
- IP 변경(Wi-Fi → LTE 등) 시에도 연결 유지 가능
장점 요약
- 낮은 지연 시간
- 모바일 및 불안정한 네트워크 환경에 최적화
- 실질적인 HOL Blocking 문제 해결
HTTP 버전 비교 요약
| 항목 | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|
| 전송 계층 | TCP | TCP | UDP (QUIC) |
| 멀티플렉싱 | X | O | O |
| HOL Blocking | 심각 | 일부 해결 | 해결 |
| 헤더 압축 | X | HPACK | QPACK |
| TLS | 선택 | 선택 | 기본 내장 |
| 모바일 친화성 | 낮음 | 보통 | 높음 |
언제 어떤 버전을 써야 할까?
- HTTP/1.1
- 단순한 서비스
- 레거시 환경
- HTTP/2
- 대부분의 웹 서비스
- 브라우저 및 CDN 환경
- HTTP/3
- 모바일 트래픽 비중이 높은 서비스
- 실시간성, 낮은 지연 시간이 중요한 경우
정리
HTTP의 발전은 단순한 버전 업그레이드가 아니라,
웹 성능 병목을 해결해 온 역사라고 볼 수 있다.
- HTTP/1.1 → 구조적 한계
- HTTP/2 → 전송 효율 개선
- HTTP/3 → 전송 계층 자체의 혁신
웹 성능과 사용자 경험이 중요해질수록, HTTP/3의 비중은 점점 더 커질 것이다.
참고 자료
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview
- https://http3-explained.haxx.se
- https://www.cloudflare.com/learning/performance/what-is-http3/
This post is licensed under CC BY 4.0 by the author.