HTTP 버전

허성재's avatar
Aug 30, 2024
HTTP 버전
HTTP(하이퍼텍스트 전송 프로토콜, HyperText Transfer Protocol)는 웹에서 데이터 전송을 위해 사용되는 프로토콜입니다. HTTP의 주요 버전들은 다음과 같습니다: HTTP/1.0, HTTP/1.1, HTTP/2, 그리고 HTTP/3입니다. 각 버전은 성능, 효율성, 보안 등을 개선하기 위해 발전해왔습니다.

1. HTTP/1.0

  • 출시 연도: 1996년
  • 특징:
    • 단일 연결: 요청-응답 주기가 끝날 때마다 연결이 종료됩니다. 따라서, 각 요청마다 새로운 연결을 열어야 합니다.
    • 헤더와 본문: 요청과 응답에서 헤더와 본문을 포함할 수 있습니다.
    • 프락시와 캐싱: 캐시와 프락시 서버의 지원이 있지만, 제한적입니다.

2. HTTP/1.1

  • 출시 연도: 1999년
  • 주요 개선 사항:
    • 지속적인 연결(Keep-Alive): 연결을 열어두어 여러 요청을 같은 연결에서 처리할 수 있습니다. 이를 통해 연결 수를 줄이고 성능을 개선합니다.
    • 파이프라이닝(Pipelining): 클라이언트가 요청을 순차적으로 보내고 응답을 기다리는 동안 다음 요청을 보낼 수 있습니다. 하지만 파이프라이닝은 서버에서 병목 현상을 일으킬 수 있어, 대부분의 클라이언트에서는 이 기능을 사용하지 않습니다.
    • 호스트 헤더(Host Header): 동일한 IP 주소에서 여러 도메인을 호스팅할 수 있도록 Host 헤더를 지원합니다.
    • 압축: 요청과 응답의 본문을 압축할 수 있는 Content-Encoding 헤더를 지원합니다.
    • 더 많은 상태 코드와 메서드: 새로운 HTTP 메서드(PUT, DELETE)와 상태 코드가 추가되었습니다.

3. HTTP/2

  • 출시 연도: 2015년
  • 주요 개선 사항:
    • 멀티플렉싱(Multiplexing): 하나의 연결에서 동시에 여러 요청과 응답을 처리할 수 있습니다. 이는 연결을 재사용할 수 있게 해 주며, 성능을 크게 개선합니다.
    • 헤더 압축(Header Compression): HPACK이라는 헤더 압축 방식을 사용하여, 자주 반복되는 헤더 정보를 압축합니다.
    • 서버 푸시(Server Push): 서버가 클라이언트의 요청에 대한 응답과 함께 추가적인 자원을 클라이언트에게 푸시할 수 있습니다. 예를 들어, 웹 페이지를 로드할 때 필요한 CSS나 JavaScript 파일을 미리 전송할 수 있습니다.
    • 이진 프로토콜: HTTP/2는 텍스트 기반의 HTTP/1.x와 달리 이진 프로토콜을 사용하여, 데이터의 전송과 해석이 더 효율적입니다.

4. HTTP/3

  • 출시 연도: 2022년 (표준화 완료)
  • 주요 개선 사항:
    • QUIC 프로토콜: HTTP/3는 전송 계층으로 QUIC(Quick UDP Internet Connections)를 사용합니다. QUIC는 UDP를 기반으로 하며, 연결 설정과 오류 복구를 빠르게 처리합니다.
    • 제로 RTT(Zero Round-Trip Time): QUIC을 사용하여 연결을 재설정할 때의 지연 시간을 줄일 수 있습니다.
    • 헤더 압축: HTTP/2의 헤더 압축을 그대로 사용합니다.
    • 패킷 손실 복구: QUIC은 패킷 손실 시 빠른 복구를 지원하여, 데이터 전송의 신뢰성을 향상시킵니다.

HTTP 버전 요약

HTTP 버전
주요 특징
성능 및 효율성
HTTP/1.0
기본적인 요청-응답 모델, 연결 종료 후 재연결 필요
낮음
HTTP/1.1
지속 연결, 파이프라이닝, 호스트 헤더, 압축 지원
중간
HTTP/2
멀티플렉싱, 헤더 압축, 서버 푸시, 이진 프로토콜
높음
HTTP/3
QUIC 기반, 제로 RTT, 빠른 패킷 손실 복구
매우 높음
HTTP 프로토콜의 버전 발전은 웹 성능을 개선하고, 사용자 경험을 향상시키기 위해 계속해서 진행되고 있습니다. 최신 버전일수록 더 효율적이고 신속한 데이터 전송을 지원하며, 웹 애플리케이션의 요구 사항을 충족하기 위해 설계되었습니다.
Share article

heo-gom