HTTP/0.9
개요
- 도입 연도: 1991년
- 주요 특징:
- 단순히 HTML 파일만 전송 가능한 단일 요청-응답 모델
- GET 요청만 지원
- 헤더(Header)와 상태 코드(Status Code) 미지원
- 장점/한계:
- 프로토콜이 매우 단순하여 구현이 쉬웠으나, 기능 확장이 어려웠고 다양한 콘텐츠 전송이 불가능
HTTP의 시작점이 된 버전으로, 텍스트 기반의 HTML 문서를 가져오기 위해 만들어졌다.
당시 웹의 규모가 크지 않아 이 정도로도 충분
HTTP/1.0
개요
- 도입 연도: 1996년
- 주요 특징:
- 상태 코드(Status Code)와 헤더(Header)의 도입
- 다양한 콘텐츠 타입 전송 가능 (이미지, 텍스트, 기타 파일 등)
- 클라이언트-서버 간 상태 정보 교환 가능 (Cookie, Session 등)
- 장점/한계:
- 이전 버전 대비 확장성과 활용도가 크게 향상
- 매 요청마다 연결을 새로 맺는 단점(비효율적)
웹의 급속한 성장에 대응하고자 기능을 확장한 버전
매 요청마다 TCP 연결이 새롭게 이루어져야 하는 단점이 있었지만, HTTP 프로토콜이 본격적으로 웹에서 활용될 수 있는 기반을 마련
HTTP/1.1
개요
- 도입 연도: 1997년
- 주요 특징:
- 지속 연결(Persistent Connection) 도입
- 한 번 연결 후, 여러 요청을 같은 연결로 처리하여 TCP 핸드셰이크 비용 절감
- 파이프라이닝(Pipelining) 지원
- 여러 요청을 병렬로 보낼 수 있으나, 실제로는 구현상의 이슈로 잘 쓰이지 않음
- 호스트 헤더(Host Header) 필드 도입
- 하나의 서버가 여러 도메인을 호스팅 가능(가상 호스팅)
- 캐싱 메커니즘 강화
- 지속 연결(Persistent Connection) 도입
- 장점/한계:
- HTTP/1.0의 단점을 보완, 현재까지도 매우 널리 사용
- 여러 객체를 가져오기 위한 동시성 문제(헤더 차단 등)는 여전히 존재
가장 오랫동안 표준으로 자리 잡았고, 현재까지도 많은 서버와 브라우저가 사용하는 버전
지속 연결과 호스트 헤더 도입은 웹 서비스를 더욱 폭넓고 효율적으로 운영할 수 있게 만들었다.
HTTP/2
개요
- 도입 연도: 2015년
- 주요 특징:
- 이진 프레이밍(Binary Framing) 계층 도입
- 텍스트 기반에서 벗어나 이진 형태로 데이터를 주고받아 전송 효율 극대화
- 멀티플렉싱(Multiplexing)
- 하나의 연결로 여러 요청 및 응답을 동시에 처리
- HTTP/1.1에서의 헤더 차단 문제(Head-of-line blocking) 완화
- 헤더 압축(HPACK)
- 반복되는 헤더 정보를 압축하여 전송량 절감
- 서버 푸시(Server Push)
- 서버에서 추가 리소스를 능동적으로 푸시하여 웹 로딩 성능 향상
- 이진 프레이밍(Binary Framing) 계층 도입
- 장점/한계:
- 웹 성능과 보안을 크게 개선(HTTPS 사용이 사실상 기본)
- 브라우저와 서버에서 지원해야 하므로, 구현 의존성이 존재
스피디(SPDY) 프로토콜을 기반으로 성능 최적화에 초점을 두었다.
특히 멀티플렉싱과 헤더 압축을 통해 네트워크 지연 시간을 줄임.
HTTP/3
개요
- 도입 연도: 2020년(표준화)
- 주요 특징:
- QUIC 프로토콜 기반
- TCP 대신 UDP를 사용하며, TLS(보안 계층)과 연결 설정을 통합
- 빠른 연결 설정
- TCP의 3웨이 핸드셰이크(3-Way Handshake)를 거치지 않아 지연 감소
- 개선된 데이터 전송 속도
- 혼잡 제어나 스트림 간 독립성(한 스트림 지연이 다른 스트림에 영향 X)
- 연결 복구 기능 강화
- 연결이 끊기더라도 QUIC이 빠르게 복구
- QUIC 프로토콜 기반
- 장점/한계:
- 속도, 보안, 안정성 측면에서 가장 진보된 HTTP 버전
- 아직은 모든 환경에서 100% 지원되지 않을 수 있으므로, 인프라 구축이 중요
'Software Development > Web' 카테고리의 다른 글
URI와 URL의 차이 (0) | 2024.07.16 |
---|---|
[Web] RESTful한 API란? (0) | 2024.02.20 |