HTTP/2 Internals

HTTP/2 프레임, 스트림, HPACK, 우선순위 구조

HTTP/2는 하나의 TCP 연결 위에 여러 스트림을 프레임으로 나누어 보내며, 헤더 압축과 멀티플렉싱으로 HTTP/1.1의 병목을 줄입니다.

01

연결 협상

TLS ALPN 또는 cleartext upgrade로 HTTP/2 사용 여부를 정합니다.

ALPN
02

스트림 생성

요청마다 stream id를 만들고 하나의 TCP 연결에서 병렬로 처리합니다.

stream
03

프레임 분할

HEADERS, DATA, SETTINGS 같은 프레임으로 정보를 나눠 전송합니다.

frame
04

헤더 압축

HPACK이 반복 헤더를 동적 테이블로 줄여 전송량을 낮춥니다.

HPACK
05

흐름 제어

stream과 connection 단위 window로 수신자가 처리 가능한 만큼 받습니다.

흐름 제어
Stream
요청/응답 논리 단위 하나의 연결 안에서 여러 stream이 동시에 진행됩니다.
id 관리
Frame
전송 최소 단위 헤더와 데이터가 프레임으로 나뉘어 interleave될 수 있습니다.
순서 조립 필요
HPACK
헤더 중복 제거 쿠키와 인증 헤더처럼 반복되는 값의 전송 비용을 줄입니다.
동적 테이블

HTTP/2 운영 확인

HOL 한계 HTTP/2는 애플리케이션 멀티플렉싱은 하지만 TCP 패킷 손실에는 여전히 영향을 받습니다.
프록시 지원 중간 프록시와 로드밸런서가 HTTP/2를 어디까지 유지하는지 확인합니다.
서버 푸시 현대 브라우저에서는 server push 지원과 효과가 제한적입니다.