HTTP/1.1 vs HTTP/2 vs HTTP/3: 개념과 차이점 정리
인터넷이 발전하며 웹 프로토콜 역시 단순한 텍스트 기반의 HTTP/1.1에서 더 효율적이고 빠른 전송 방식을 제공하는 HTTP/2, 최신 웹 환경에 적합한 HTTP/3로 발전해왔습니다. 오늘은 각 프로토콜의 주요 차이점과 성능 개선 포인트를 살펴보고, 실제 웹사이트 최적화에 어떤 영향을 미치는지 알아보겠습니다!

1. HTTP/1.1: 기본 개념과 한계
1.1 기본 개념 💡
HTTP/1.1은 1997년에 표준으로 채택된 이후, 오랫동안 웹 전송의 주력 프로토콜로 사용되어 현재까지도 사용되고 있습니다.
1.2 주요 특징 ✅
- 요청-응답 모델: 클라이언트가 요청을 보내면 서버가 응답하는 순차적 구조
- Keep-Alive: 동일 TCP 연결을 여러 요청-응답에 재사용할 수 있으나, 여러 요청을 순차적으로 처리
- 파이프라이닝 지원: 같은 연결에서 여러 요청을 동시에 보내는 기능이 있으나, 응답 순서가 보장되지 않아 실제 사용 빈도는 낮음
1.3 한계 및 성능 이슈 💦
- 연결 개수 제한: 브라우저는 동일 도메인에 대해 동시에 여러 연결을 제한하기 때문에, 많은 리소스가 필요한 페이지에서는 병목 현상이 발생
- 홀더-오브-라인(Block of Head-of-Line, HOL) 문제: 하나의 요청 지연이 뒤따르는 모든 요청의 응답까지 지연되는 현상
- 헤더 중복 전송: 요청과 응답마다 동일한 헤더 정보가 반복 전송되어 불필요한 오버헤드 발생
- HTTP/1.0 은 서버와 클라이언트간에 Connection 을 지속하지 않음 -> 클라이언트가 서버와 Connection 을 맺기 위해 DNS 조회, TCP 3-way handshake, SSL/TLS handshake 같이 네트워크 지연 시간을 늘리는 행위를 1개의 요청 마다 반복적으로 했다는 것
➡️ 단순하지만, 성능적으로 한계 존재
2. HTTP/2: 성능 개선과 새로운 기능
2.1 기본 개념 💡
HTTP/2는 HTTP/1.1의 한계를 극복하기 위해 2015년에 표준화되었습니다.
성능 최적화를 위해 HTTP/1.1의 구조를 완전히 개선하였고, 기존 브라우저와 서버의 호환성을 유지하면서 내부 구조는 이진(binary) 기반으로 바뀌었습니다.
2.2 주요 개선 내용 ✅
- 멀티플렉싱(Multiplexing)
- 하나의 TCP 연결 내에서 여러 요청-응답을 동시에 처리하여 HOL 문제를 줄임
- 헤더 압축(Header Compression)
HPACK이라는 메커니즘을 사용하여 헤더 정보를 효율적으로 압축, 반복되는 데이터 전송 최소화 - 서버 푸시(Server Push)
클라이언트가 요청하지 않은 리소스도 미리 전송하여 로딩 시간을 단축 가능
2.3 성능 개선 포인트 📈
- 단일 연결 활용
HTTP/2는 단일 연결로 모든 리소스를 처리하므로, 여러 연결을 열어야 하는 오버헤드를 줄임 - 낮은 레이턴시
멀티플렉싱 기능 덕분에 요청들이 동시 처리되어 전체 페이지 로딩 속도가 개선됨 - 한 페이지 내 이미지, JS, CSS 등 수십 개의 리소스를 병렬로 처리 가능
- 지연 시간 감소로 사용자 경험 향상
- Facebook, Twitter, YouTube 등 주요 서비스들이 HTTP/2를 채택
2.4 고려 사항 💦
- TLS(암호화) 사용 권장
대부분의 브라우저가 HTTP/2는 TLS(HTTPS) 기반으로만 지원 - 서버 설정
기존의 HTTP/1.1 서버에서 HTTP/2를 사용하려면 서버 소프트웨어나 CDN(예: Cloudflare) 업데이트가 필요 - HTTP/2도 여전히 TCP 기반 → 패킷 손실 시 지연 발생
3. HTTP/3: QUIC 기반의 최신 웹 프로토콜
3.1 기본 개념 💡
HTTP/2는 많은 개선을 이루었지만, 여전히 TCP 기반이라는 한계가 존재합니다. TCP는 전송 속도 안정성이 뛰어나지만, 패킷 손실 시 전체 요청 지연이라는 단점이 있죠. 이를 해결하기 위해 등장한 것이 바로 HTTP/3입니다. HTTP/3는 UDP 기반의 QUIC 프로토콜을 사용합니다.
3.2 주요 기능 ✅
- QUIC 프로토콜
UDP 위에 구현되어 기존 TCP의 연결 설정 지연(핸드쉐이크, 패킷 손실 시 재전송 등)을 크게 줄임 - 향상된 연결 복원력
네트워크 환경 변화에도 빠른 연결 복원이 가능하며, 모바일 환경에서 특히 효과적!
3.3 성능 개선 포인트 🪄
- 빠른 연결 설정
0-RTT 연결 재개가 가능해 첫 연결 시에도 지연 최소화 - 연결 다중화의 최적화
QUIC은 패킷 손실 시에도 개별 스트림의 영향을 줄이므로, 멀티플렉싱 성능이 더욱 향상됨
3.4 고려 사항 💦
- 지원 현황
현재 주요 브라우저와 일부 CDN에서는 HTTP/3를 지원하고 있으나, 모든 서버 및 클라이언트가 완벽하게 지원하는 것은 아님 - 네트워크 환경에 따른 이점
불안정한 네트워크 환경에서 HTTP/3의 성능 개선 효과가 두드러짐
4. HTTP 버전 선택 시 고려사항
- 레거시 시스템: HTTP/1이 여전히 널리 사용되며, 많은 레거시 시스템이 이 버전에 맞춰 설계됨
- 최신 기술: 성능과 보안을 중시하는 경우, HTTP/2 또는 HTTP/3 사용을 권장
- 네트워크 환경: HTTP/3의 경우 최신 네트워크 인프라를 필요로 하며, 완전한 지원을 확인하는 것이 중요
5. 실제 적용 사례
- Cloudflare
Cloudflare는 HTTP/2와 HTTP/3를 지원하여 전 세계 많은 웹사이트의 성능을 개선시킴. Cloudflare 블로그에서 구체적인 사례와 기술적인 내용을 확인할 수 있음 - Google
Google 검색 결과에서도 HTTP/3 적용 후 로딩 속도 및 사용자 경험이 개선된 사례가 보고되고 있음
6. 최종 정리
HTTP는 단순한 통신 규격이 아니라, 웹 퍼포먼스를 결정짓는 중요한 요소입니다.
브라우저의 동작, 리소스 로딩 구조, 네트워크 성능 이슈 등을 분석할 때 HTTP 버전의 차이를 알고 있어야 제대로 된 대응이 가능합니다.
<참고자료>
https://zadroweb.com/blog/http3-introduction-web-protocols/
HTTP/3: An Introduction to the Next Generation Web Protocol - Zadro Web
HTTP/3 is the third and latest version of the Hypertext Transfer Protocol (HTTP). Learn more about the benefits, why it's superior to HTTP/2 and much more.
zadroweb.com
https://developer.mozilla.org/ko/docs/Web/HTTP/Guides/Overviewhttps://zadroweb.com/blog/http3-introduction-web-protocols/
HTTP 개요 - HTTP | MDN
HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버
developer.mozilla.org