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 프로토콜을 기반으로 하여 더 빠르고 효율적인 연결과 보안을 제공하며, 멀티플렉싱 및 낮은 지연 시간으로 성능을 대폭 개선했습니다.
'Network Study' 카테고리의 다른 글
소켓(Socket) (0) | 2024.09.26 |
---|---|
소켓 프로그래밍(Socket Programming) (1) | 2024.09.26 |
유저(User)와 클라이언트(Client)의 차이점 (1) | 2024.09.26 |
아파치 서버와 아파치 톰캣 서버의 차이점 (1) | 2024.09.26 |
소프트웨어에서 말하는 이미지 (Image) (0) | 2024.09.25 |