본문 바로가기
WEB

HTTP 버전별 비교. (0.9, 1.0, 1.1, 2.0, 3.0)

by jinukix 2021. 10. 1.

HTTP/0.9 

HTTP/0.9는 가장 최초의 HTTP 프로토콜이다. 사실 버전은 따로 없지만 이후 등장한 1.0과 구분하기 위해 0.9로 명시한다. 한 줄로 요청이 가능(GET /hello.html) 하며 응답은 HTML로 작성된 파일 내용만 전달한다.

HTTP/1.0

HTTP/1.0은 실제로 HTTP가 상용화된 버전이다. 버전 정보를 각 요청 정보를 포함하기 시작했으며, 통신 응답 정보와 응답 결과를 포함하기 시작했다. 통신을 헤더와 바디로 분리해 메타 데이터 전송 허용 및 프로토콜 확장 가능성을 확보했다. 헤더 정보(Content-Type)를 통해 HTML 외 다른 문서들도 전송이 가능하도록 기능이 추가되었다.

HTTP/1.1

HTTP/1.1은 1.0 버전이 등장한 뒤 몇 달뒤 나온 버전이다. 큰 맥락은 1.0과 동일하지만 일부 기능들이 개선되어 이후 HTTP 표준으로서 자리매김했다. 당시 1.0 버전에서는 모든 요청마다 새 연결을 맺어야 했는데, HTTP/1.1에서는 한 번 TCP 연결을 맺으면 끊지 않고 계속 유지할 수 있게 재사용할 수 있게 되었다. 덕분에 전체 전송 및 응답속도를 절약할 수 있게 되었다.

HTTP/2.0

HTTP/2.0은 다양한 기능들이 추가되었지만 가장 큰 변화는 성능 및 속도 개선이다. HTTP/1.1의 경우 커넥션은 재사용할 수 있었지만, 그 안에서 하나의 요청은 하나의 응답이라는 1:1 대응을 이루고 있었으며, 요청이 들어간 순서대로 처리되다 보니, 앞의 요청이 길어질 경우 뒤에 있는 요청들도 지연되는 문제가 있었다. 이러한 문제를 해결하기 위해 HTTP/2.0에서는 이전의 요청에 대한 응답을 대기하지 않고도 뒤의 응답을 받을 수 있도록 모든 요청과 응답을 병렬적으로 처리했다. 그리고 한 번의 요청으로 여러 개의 응답을 받을 수 있었고 (Multiplexed Streams), 클라이언트가 요청하지 않아도 서버에서 미리 필요한 리소스들을 푸시하는 등 (Server Push)이 가능해졌다.

HTTP/3.0

HTTP/3.0은 2020년에 발표된 버전이다. 이전의 HTTP 프로토콜은 TCP위에서 동작하고 있었지만 HTTP/3.0은 QUIC 위에서 동작한다. QUIC는 Quick UDP Internet Connection의 약자로 TCP가 아닌 UDP위에서 작동한다. UDP는 TCP에 비해 가볍고, 빠르지만 신뢰성 측면에서 단점이 존재한다. 하지만 QUIC는 중간에 데이터 손실이 발생해도 이를 개별적으로 재전송할 수 있게 함으로써 신뢰성까지 갖추게 되었다. HTTP/3.0은 아직 표준이 아니며 현재 draft상태이다. 2022년 1월 기준으로 전체 웹사이트의 24.5%가 사용하고 있는 등 여러 서비스에서 시범적으로 사용하고 있다.

'WEB' 카테고리의 다른 글

JWT  (0) 2021.10.04
로드 밸런서 (Load Balance)  (0) 2021.10.02
쿠키(Cookie), 세션(Session)  (0) 2021.10.01
CORS  (0) 2021.10.01
HTTP, HTTPS  (0) 2021.09.30

댓글