네트워크 - HTTP Version

HTTP Version

HTTP/0.9

  • 간단하게 HTML 객체 를 받아오기 위해 만들어진 프로토콜이다.
  • 때문에 GET메서드 만을 지원한다.
  • 멀티미디어 콘텐츠에 대한 MIME 타입이나, HTTP 해더, 버전 번호는 지원하지 않는다.

HTTP/1.0

  • 버전 번호, HTTP 헤더, 추가 메서드, 멀티미디어 객체 처리를 추가했다.
  • 웹페이지와 상호작용하는 폼을 실현
  • 하나의 커넥션에 하나의 요청과 하나의 응답만 가능

요청

GET /greeting HTTP/1.0
Host: localhost:18888
Connection: close
Accept: */*
User-Agent: curl/7.71.1

응답

HTTP/1.0 200 OK
Date: Tue, 04 Jan 2022 16:48:00 GMT
Content-Length: 32
Content-Type: text/html; charset=utf-8

HTTP/1.0+

  • keep-alive 커넥션
  • 가상 호스팅 지원
  • 프록시 연결
  • 요청마다 connection을 해줘야 한다.

HTTP/1.1

  • HTTP 의 첫번째 표준 버전
  • HTTP/1.1은 HTTP 설계의 구조적 결함 교정, 두드러진 성능 최적화 잘못된 기능제거에 집중
  • Persistent Connection 도입
  • 파이프 라이닝 기법 도입
    • Head Of Line Blocking 문제가 있음
  • domain sharing 방식

PipeLining 기법

하나의 커넥션에 다수의 Request 와 Response 를 받을 수 있는 기법

Pipelineing

Head Of Line Blocking

앞선 요청에 대한 처리가 늦어지면 다음 요청들에 대한 처리들도 다 늦어진다.

Head Of Line Blocking

HTTP/2.0

기존 HTTP 를 개선 및 성능 향상에 초점을 맞춘 프로토콜

  • HTTP/1.1 성능 문제를 개선하기 위해 구글의 SPDY 프로토콜을 기반으로 설계가 진행중인 프로토콜
  • 멀티플렉싱 을 통해 latency를 줄이고
  • 해더 압축을 통해 중복된 해더 값을 없애 Overhead를 최소화 (허프만 인코딩 사용)
  • 서버 푸시 기능을 지원한다.
    • Client 가 요청하지 않은 자원을 서버에서 보내준다.

HTTP/2.0 프로토콜과 HTTP/1.1의 차이점

  • HTTP/1.1은 기본적으로 Connection당 하나의 요청을 처리하도록 설계
  • 동시 전송이 불가능하고 요청과 응답이 순차적으로 이루어진다.
  • HTTP 문서 안에 포함된 다수의 리소스를 처리하려면 요청할 리소스 개수에 비래해 레이턴시가 길어진다.
Share