HTTP2 Header Compression
request and response headers are compressed by HPACK
전송당 500~800바이트의 오버헤드
HTTP 쿠키를 사용할 경우 수 KB가 추가되기도
오버헤드를 줄이고 성능을 개선하기 위해 HTTP/2에서는 HPACK 압축 형식을 사용하여 요청 및 응답 헤더 메타데이터를 압축
단순하지만 강력한 두 가지 기술을 사용
- 전송되는 헤더 필드를 정적 Huffman 코드로 인코딩하도록 허용
- 이전에 표시된 헤더 필드의 색인 목록을 클라이언트와 서버가 유지하고 업데이트하도록 요구, 이 목록을 참조로 사용하여 이전에 전송된 값을 효율적으로 인코딩
더 나은 최적화를 위해 HPACK 압축 컨텍스트는 정적 및 동적 테이블로 구성
초기 버전의 HTTP/2 및 SPDY에서는 사용자설정 사전과 함께 zlib를 사용하여 모든 HTTP 헤더를 압축
이 경우 전송되는 헤더 데이터의 크기가 85%~88% 감소되었고 페이지 로드 시간 지연 시간이 상당히 개선
그러나 2012년 여름 TLS 및 SPDY 압축 알고리즘에 대해 'CRIME' 보안 공격과 세션 하이재킹 시도가 있었다고 발표되었습니다. 그 결과, zlib 압축 알고리즘이 HPACK으로 교체
HPACK 알고리즘은 검색된 보안 문제를 해결하고, 구현이 효율적이고 단순하며, HTTP 헤더 메타데이터의 압축이 뛰어나도록 설계