-
기존 HTTP 1.x 표준, 의미 체계을 대체하는 게 아니라 확장함.
-
Http 1.x 클라이언트로 Http2 서버를 이용할 수 없음, 반대도 마찬가지.
-
주요 목표는 다중화
, 헤더의 더 효율적인 압축
, 서버 푸시
, 요청의 우선순위 지정
기능 추가 라고 함.
-
HTTP 1.x가 단순한 텍스트를 주고 받던 것과 다르게, HTTP2는 스트림
을 만들어 메세지를 주고 받음. HTTP 헤더, 페이로드 등은 메시지
내에서 프레임
이란 가장 작은 단위로 묶임.
-
바이너리 프레이밍 layer
를 도입해 multiplexing
(다중화)를 지원한다. 하나의 연결에서 여러 스트림의 요청, 응답을 병렬로 처리함.
-
서버 푸시
라는 개념이 생겼다. 클라이언트에 response를 한 번만 주는 게 아니라 추가적인 리소스를 푸시해 줄 수 있다. (해당 방법을 이용하면 inlining 처럼 추가적인 연결이 필요 없다는 장점을 가져가면서 캐싱도 가능.)
-
HPACK
이라는 압축 방식을 사용해 많은 메타 정보를 저장해야 하는 헤더를 압축한다.