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