HTTP 0.9
- 1991년에 출시된 HTTP 프로토콜 버전
- 정식 버전은 아니지만 HTTP 초기 버전을 구분하기 위해 HTTP 0.9 버전이라고 부른다.
- 요청은 단일 라인으로 구성되며, 리소스에 대한 메소드는 GET만 존재한다.
- 응답이 극도로 단순하다.
- 파일 내용 자체로만 구성되어 있다.
- HTTP 헤더가 없다.
- HTML파일만 전송 가능했었다.
HTTP 1.0
- 1996년에 출시된 최초의 HTTP 프로토콜 정식 버전
- HTTP 헤더 개념이 도입되어서 요청과 응답에 추가되며, 메타 데이터를 주고 받고,
프로토콜을 유연하고 확장 가능하도록 개선됬다. - 버전 정보와 요청 메소드가 함께 전송되기 시작했다.
- 상태 코드 라인도 응답의 시작부분에 추가되어 브라우저 요청의 성공과 실패를 파악 가능해졌다.
- 해당 결과에 대한 로컬 캐시 갱신 등의 사용이 가능해졌다.
- Content-Type 도입으로 HTML 이외의 문서 전송 기능이 가능해졌다.
- 커넥션 하나당 요청 하나와 응답 하나만 처리 가능했다.
- HTTP 1.1에서 개선된 사항이다.
- 압축, 캐싱 등의 기능을 지원하지 않는다.
- 현재는 거의 사용되지 않는다.
HTTP 1.1
- 1997년에 출시된 HTTP 1.0의 후속 버전
- 지속 연결을 지원하여 여러 요청/응답 쌍을 하나의 TCP 연결에서 처리할 수 있다.
- 파이프라이닝을 지원하여 한 번에 여러 요청을 보낼 수 있다.
- 압축, 캐싱 기능을 지원하여 성능을 향상시킬 수 있다.
- 호스트 헤더를 지원하여 가상 호스팅을 지원한다.
- 현재 가장 많이 사용되는 HTTP 프로토콜 버전
HTTP 2
- 2015년에 출시된 HTTP 1.1의 후속 버전
- 기존 HTTP 1.1 버전의 성능 향상에 초점을 맞춘 프로토콜
- 표준의 대체가 아닌 확장을 위해 만들어졌다.
- 다중 스트림을 지원하여 여러 요청/응답 쌍을 동시에 처리할 수 있다.
- 헤더 압축을 지원하여 데이터 전송량을 줄일 수 있다.
- 서버 푸시를 지원하여 클라이언트가 요청하기 전에 데이터를 미리 전송할 수 있다.
- HTTP/1.1에 비해 성능이 크게 향상되었습다.
HTTP 3
- 2021년에 출시된 HTTP 2의 후속 버전
- QUIC 프로토콜을 사용하여 TCP 연결의 오버헤드를 줄인다.
- 0-RTT 연결 재사용을 지원하여 이전 연결 정보를 사용하여 새로운 연결을 빠르게 설정할 수 있다.
- 다중 스트림을 지원한다.
- HTTP/2에 비해 연결 속도가 빠르고 성능이 높다.