네트워크/HTTP

HTTP/1.1과 HTTP/2의 차이

shimdh 2025. 3. 2. 11:35
728x90

웹에서 데이터를 효율적으로 전송하기 위해 HTTP(하이퍼텍스트 전송 프로토콜) 는 지속적으로 발전해 왔습니다. HTTP/1.1은 오랜 기간 동안 표준 프로토콜로 사용되어 왔지만, 웹 페이지의 복잡성이 증가하고 데이터 트래픽이 많아지면서 여러 한계가 드러났습니다. 이를 개선하기 위해 등장한 HTTP/2는 성능 향상과 네트워크 효율성 극대화를 목표로 여러 새로운 기능을 도입하였습니다.

본 글에서는 HTTP/1.1과 HTTP/2의 주요 차이점을 심층적으로 분석하고, 각각의 장단점을 비교하여 현대 웹 환경에서 왜 HTTP/2가 필수적인지 설명하겠습니다.


1. 연결 방식(Connection Handling)

🔹 HTTP/1.1: 요청당 개별적인 TCP 연결 생성

  • HTTP/1.1은 기본적으로 하나의 요청마다 별도의 TCP 연결을 설정하여 데이터를 전송합니다.
  • 웹 페이지의 리소스(HTML, CSS, JavaScript, 이미지 등)를 로드할 때, 각 리소스마다 별도의 연결을 생성해야 하기 때문에 속도가 느려질 수 있음.
  • Keep-Alive 기능을 통해 여러 요청을 하나의 연결에서 처리할 수 있도록 개선되었으나, 여전히 동시 요청을 효율적으로 처리하기 어렵고 지연 시간이 발생함.

🔹 HTTP/2: 단일 연결 내에서 멀티플렉싱 지원

  • HTTP/2는 하나의 TCP 연결 내에서 여러 요청과 응답을 동시에 처리할 수 있도록 설계된 멀티플렉싱(Multiplexing) 기능을 지원합니다.
  • 이를 통해 연결 개수를 최소화하고 대역폭 사용을 최적화하여 데이터 전송 속도를 획기적으로 개선함.
  • 브라우저가 요청하는 모든 리소스를 하나의 연결을 통해 동시 처리할 수 있으므로, 로딩 속도가 빨라지고 네트워크 효율성이 향상됨.

📌 예제:
HTTP/1.1에서는 각 이미지, CSS, JS 파일마다 개별적인 요청을 보내야 하므로 병목 현상이 발생할 수 있음.
HTTP/2에서는 모든 리소스를 동시에 요청하고 응답을 받을 수 있어 웹페이지 로딩 속도가 크게 향상됨.


2. 헤더 압축(Header Compression)

🔹 HTTP/1.1: 비효율적인 헤더 전송

  • HTTP/1.1은 모든 요청마다 중복된 헤더 정보를 포함하여 전송하므로, 추가적인 대역폭이 소모됩니다.
  • 예를 들어, 쿠키, 인증 정보 등이 동일한 요청에서도 계속 반복적으로 전송됨.

🔹 HTTP/2: HPACK 알고리즘을 이용한 헤더 압축

  • HTTP/2는 HPACK(Header Compression for HTTP/2)이라는 압축 알고리즘을 사용하여 중복된 헤더 데이터를 최소화합니다.
  • 클라이언트와 서버는 이전에 전송된 헤더 정보를 공유하여 불필요한 데이터 전송을 방지하고, 이를 통해 네트워크 트래픽을 줄일 수 있음.

📌 예제:
사용자가 로그인한 상태에서 여러 개의 요청을 보낼 경우, HTTP/1.1에서는 매번 쿠키와 인증 정보가 포함되어 불필요한 데이터 전송이 발생.
HTTP/2에서는 한 번 전송한 헤더 정보를 압축하여 관리하므로, 전송 데이터 크기가 줄어들어 성능이 향상됨.


3. 서버 푸시(Server Push)

🔹 HTTP/1.1: 클라이언트 요청에 의존

  • HTTP/1.1에서는 클라이언트가 요청을 보내야만 서버가 해당 요청에 응답할 수 있음.
  • 즉, 클라이언트가 HTML 페이지를 요청한 후, 추가적으로 CSS, JavaScript 파일을 다시 요청해야 하는 구조이므로 속도가 지연될 수 있음.

🔹 HTTP/2: 서버 푸시(Server Push) 지원

  • HTTP/2는 서버가 클라이언트 요청을 예측하여 필요한 리소스를 미리 전송할 수 있는 서버 푸시(Server Push) 기능을 지원합니다.
  • 예를 들어, 서버가 HTML 페이지를 제공할 때, 해당 페이지에서 필요한 CSS, JavaScript 파일을 함께 전송할 수 있어 추가적인 요청을 줄일 수 있음.
  • 이를 통해 웹페이지 로딩 속도를 개선하고, 불필요한 요청을 줄여 네트워크 부하를 감소시킬 수 있음.

📌 예제:
웹페이지가 index.html을 로드할 때, HTTP/1.1에서는 CSS, JavaScript 파일을 개별적으로 요청해야 함.
HTTP/2에서는 서버가 HTML을 제공하면서 관련된 CSS 및 JS 파일을 미리 전송하여 페이지 로딩 속도를 최적화할 수 있음.


4. 흐름 제어 및 우선순위(Stream Prioritization)

🔹 HTTP/1.1: 간단한 순차 처리 방식

  • HTTP/1.1에서는 요청이 순차적으로 처리되기 때문에 특정 요청이 지연되면 전체 로딩 속도가 느려질 수 있음.
  • 중요한 요청(예: 핵심 콘텐츠 이미지)과 덜 중요한 요청(예: 배경 이미지) 간의 우선순위를 설정하기 어려움.

🔹 HTTP/2: 요청 우선순위 설정 가능

  • HTTP/2는 요청 스트림의 우선순위를 설정할 수 있는 기능을 제공하여 중요한 리소스를 먼저 전송할 수 있음.
  • 예를 들어, 웹사이트에서 중요한 콘텐츠(예: 텍스트, 주요 이미지)를 먼저 로드하고, 부가적인 요소(예: 광고, 배경 이미지)는 나중에 로드하는 방식으로 설정할 수 있음.
  • 이를 통해 사용자 경험(UX)이 개선되고, 핵심 콘텐츠가 보다 빠르게 제공될 수 있음.

📌 예제:
HTTP/1.1에서는 웹페이지가 배경 이미지와 주요 콘텐츠 이미지를 동일한 방식으로 처리하여, 배경 이미지가 로딩되느라 중요한 정보가 늦게 표시될 수 있음.
HTTP/2에서는 중요한 콘텐츠 이미지를 우선순위로 설정하여 먼저 로드하도록 지정할 수 있음.


5. HTTP/1.1과 HTTP/2의 비교

기능 HTTP/1.1 HTTP/2
연결 방식 요청마다 별도의 TCP 연결 필요 단일 연결로 멀티플렉싱 지원
헤더 압축 비효율적인 중복 헤더 전송 HPACK 알고리즘을 이용한 헤더 압축
서버 푸시 클라이언트 요청 필요 서버가 미리 필요한 리소스 전송 가능
요청 우선순위 순차적 요청 처리 요청 간 우선순위 설정 가능
속도 및 효율성 느린 속도, 병목 현상 발생 가능 빠른 속도, 대역폭 최적화

6. 결론

HTTP/2는 기존의 HTTP/1.1에서 발생하는 속도 저하, 네트워크 비효율성, 성능 문제를 해결하기 위해 개발되었습니다.

🔹 멀티플렉싱 을 통해 하나의 연결에서 여러 요청을 동시에 처리할 수 있어 속도가 향상됨.
🔹 헤더 압축(HPACK) 기능 을 통해 반복적인 헤더 전송을 최소화하여 네트워크 트래픽을 줄임.
🔹 서버 푸시(Server Push) 기능으로 필요한 리소스를 미리 제공하여 웹페이지 로딩 속도를 개선함.
🔹 우선순위 설정 기능 을 활용하여 중요한 콘텐츠를 먼저 로드할 수 있어 사용자 경험이 향상됨.

오늘날 웹사이트 성능을 최적화하고 빠른 로딩 속도를 제공하기 위해 HTTP/2는 필수적인 요소가 되었으며, 앞으로 HTTP/3(QUIC)와 같은 더 발전된 기술로 진화할 것입니다. 🚀

728x90

'네트워크 > HTTP' 카테고리의 다른 글

HTTP 개요: HTTP란 무엇인가?  (0) 2025.03.02
HTTP의 미래: HTTP/3의 등장과 발전  (1) 2025.03.02
HTTP의 장점과 단점  (0) 2025.03.02
HTTP와 HTTPS: 차이점과 중요성  (0) 2025.03.02
HTTP 헤더: 엔터티 헤더  (0) 2025.03.02