Search
Duplicate

Http의 버전별 차이점

태그
속성

HTTP/0.9

Http의 초기 버전
Get 통신만 가능하다
http 헤더가 없기 때문에 HTML 문서의 전송만 가능하고 다른 유형은 전송 불가
상태 or 오류 코드가 없어서 문제 상황 시 해당 파일 내부에 문제에 대한 설명을 포함하여 전송함

HTTP/1.0

상태코드가 응답값 시작 부분에 포함되어 요청에 대한 성공과 실패를 바로 확인 가능
http 헤더가 요청, 응답에 모두 추가되어 프로토콜의 확장이 가능해짐
헤더의 'Content-type'의 도움으로 HTML 파일 이외의 문서들도 전송이 가능해짐
POST, HEAD 메서드가 추가

HTTP/1.1

HTTP의 첫번째 표준 버전
메서드에 OPTIONS, PUT, DELETE, TRACE가 추가됨 + 헤더값도 일부 추가
성능향상 → HTTP/1.1 에서는 일정시간 클라이언트 서버와 API서버간의 연결 정보를 기억하여 반복적으로 일어나는 통신에 연결의 맺고 끊음을 줄였다. (기존엔 서버와 10개의 API 통신을 한다면 연결하고 끊고를 10번 반복)
파이프라이닝 추가 → 여러개의 요청이 있을때 이전의 요청이 완전히 전송되기 전에 다음의 요청을 전송을 가능하게하여 레이턴시를 낮춘다.

HTTP/2.0

HTTP/1.1이 텍스트 프로토콜이라면 HTTP/2는 이진 프로토콜이다.
데이터를 바이너리 프레이밍 값으로 캡슐화하여 주고 받는다.

HTTP/2.0 특징

요청 및 응답 다중화
HTTP/1.1 에서는 한번에 커넥션을 맺고 데이터를 요청하고 응답받고를 반복하는데요, HTTP/2에서는 스트림(stream)으로 한번의 커넥션으로 동시에 여러개의 데이터를 주고 받을 수 있습니다. 이렇게 하여 HTTP/1.x 에서의 이미지 스프라이트, 도메인 분할 같은 임시방편을 사용하지 않아도 됩니다.
스트림 우선 순위
위와 같이 스트림의 프레임으로 다중화가 가능해짐과 동시에 클라이언트와 서버의 통신 순서를 위해 각 스트림에는 1~256 사이의 정수 가중치가 할당되어 스트림 처리 우선순위를 정합니다.그런데 이게 우선 순위를 지정하여 이를 처리할 CPU, 메모리 및 기타 리소스의 할당을 제어하는 것일 뿐 특정 순서로 처리되도록 서버에 강요될 수 없다고 합니다.
헤더 압축
HTTP/1.x의 경우에는 가령 두개의 동일한 요청을 보낸다고 했을때, 두개의 헤더에 중복값이 존재해도 모두 전송하는데요, HTTP/2에서는 HPACK 압축형식을 사용해서 요청 및 응답 헤더 메타데이터를 압축하는데 이때 이 중복되는 헤더값을 색인값으로 처리해준다고 합니다.
서버 푸쉬
필요 시 클라이언트 요청 없이도 서버가 리소스를 전달할 수도 있기 때문에 클라이언트 요청을 최소화 할 수 있습니다.