본문 바로가기
Network Study

HTTP(하이퍼텍스트 전송 프로토콜)의 각 버전

by xogns93 2024. 9. 26.

HTTP(하이퍼텍스트 전송 프로토콜)는 웹 브라우저와 서버 간의 통신을 위한 프로토콜입니다. 각 버전은 성능 향상, 보안 강화, 효율적인 데이터 전송 등을 목표로 발전해 왔습니다. HTTP 0.8, HTTP 1.1, 그리고 최신 버전인 HTTP/3의 주요 특징을 간단히 비교 설명하겠습니다.

1. HTTP 0.8 (1991년)

  • 초기 버전: HTTP 0.8은 1991년에 나온 가장 초기 버전으로, 웹 브라우저와 웹 서버 간의 간단한 파일 전송에 주로 사용되었습니다.
  • GET 메서드만 지원: HTTP 0.8은 GET 메서드만을 지원하며, 클라이언트가 서버로부터 데이터를 요청하고 그 데이터를 전송받는 아주 기본적인 동작만 가능했습니다.
  • 비상태성 프로토콜: 연결을 맺고, 한 번의 요청과 응답이 완료되면 즉시 연결을 끊는 비상태성(stateless) 프로토콜입니다.
  • 헤더 부족: HTTP 0.8은 HTTP 헤더가 거의 없었고, 요청에 필요한 최소한의 정보만 전달되었습니다. 즉, 클라이언트와 서버 간에 상태나 추가적인 정보를 교환할 수 있는 구조가 매우 제한적이었습니다.

2. HTTP 1.1 (1997년)

  • 표준화된 버전: HTTP 1.1은 1997년에 도입되었으며, 현재까지 가장 널리 사용되는 HTTP 버전 중 하나입니다. 이 버전은 이전 버전들에 비해 크게 향상된 성능과 기능을 제공합니다.
  • 지속 연결(Persistent Connection):
    • HTTP 1.1에서는 하나의 TCP 연결을 통해 여러 요청과 응답을 주고받을 수 있습니다. 이를 통해 매번 연결을 새로 설정하는 오버헤드를 줄여 성능을 향상시켰습니다.
  • 캐싱 및 압축: HTTP 1.1은 캐싱 압축을 지원해, 같은 리소스를 여러 번 다운로드할 필요 없이 클라이언트 측에서 저장하고 활용할 수 있게 했습니다.
  • 추가된 메서드: HTTP 1.1은 GET, POST 외에도 PUT, DELETE, HEAD, OPTIONS, TRACE 등의 메서드를 추가하여 웹 애플리케이션에서 더 다양한 기능을 사용할 수 있게 했습니다.
  • 호스트 헤더 필드: 하나의 서버에서 여러 웹사이트(도메인)를 호스팅할 수 있게 하기 위해 Host 헤더 필드를 도입했습니다.
  • 파이프라인 기능: HTTP 1.1은 클라이언트가 여러 요청을 순차적으로 보내지 않고, 한 번에 여러 요청을 서버로 보내는 파이프라인 기능을 지원하지만, 브라우저에서 잘 지원되지 않아 널리 사용되지는 않았습니다.

3. HTTP/3 (2020년)

  • 새로운 전송 프로토콜(QUIC): HTTP/3는 TCP 대신 QUIC 프로토콜을 기반으로 동작하는 새로운 버전입니다. QUIC는 UDP 위에서 동작하며, 지연 시간을 줄이고 연결 성능을 개선하기 위해 설계되었습니다.
    • TCP의 한계 해결: 기존 HTTP 버전들이 사용하는 TCP는 데이터가 손실될 때 재전송이 필요해 성능 저하가 발생할 수 있었습니다. HTTP/3는 UDP 기반의 QUIC을 사용해 손실된 데이터만 재전송하고, 연결 설정 과정도 빠르게 수행해 더 나은 성능을 제공합니다.
  • 멀티플렉싱 개선: HTTP/2에서 도입된 멀티플렉싱(한 연결에서 여러 요청과 응답을 동시에 처리)이 HTTP/3에서는 헤드 오브 라인 블로킹 문제를 해결하며 더욱 효율적으로 개선되었습니다. 이는 여러 리소스가 동시에 요청되는 웹 페이지에서 큰 성능 향상을 제공합니다.
  • TLS 1.3: HTTP/3는 보안 측면에서도 강화되었습니다. QUIC는 TLS 1.3 암호화를 기본적으로 사용하여 연결 성립과 동시에 보안 통신이 설정됩니다.
  • 빠른 연결 수립: QUIC는 기존 TCP에서 발생하는 3-way 핸드셰이크 과정을 줄여, 더 빠르게 연결을 설정하고 데이터를 전송할 수 있습니다.

HTTP 버전별 차이 요약:

특징HTTP 0.8HTTP 1.1HTTP/3

출시 시기 1991년 1997년 2020년
전송 프로토콜 TCP TCP QUIC(UDP 기반)
지속 연결 지원하지 않음 지원 지원
다중 요청 처리 요청당 하나의 응답 파이프라인 지원(제한적) 멀티플렉싱 지원 (성능 개선)
주요 메서드 GET GET, POST, PUT, DELETE 등 GET, POST, PUT, DELETE 등
보안 없음 TLS 별도 설정 TLS 1.3 기본 지원
성능 매우 제한적 향상된 성능 빠른 연결, 낮은 지연 시간, 성능 최적화

요약:

  • HTTP 0.8: 가장 초기의 버전으로, 기본적인 GET 요청만 처리하는 단순한 프로토콜이었습니다.
  • HTTP 1.1: 표준화된 버전으로, 지속 연결 캐싱, 다양한 메서드 지원 등 성능을 크게 향상시켰으며, 현재도 널리 사용되고 있습니다.
  • HTTP/3: 최신 버전으로, QUIC 프로토콜을 기반으로 하여 더 빠르고 효율적인 연결 보안을 제공하며, 멀티플렉싱  낮은 지연 시간으로 성능을 대폭 개선했습니다.