HTTP2 Header Compression


전송당 500~800바이트의 오버헤드
HTTP 쿠키를 사용할 경우 수 KB가 추가되기도
오버헤드를 줄이고 성능을 개선하기 위해 HTTP/2에서는 HPACK 압축 형식을 사용하여 요청 및 응답 헤더 메타데이터를 압축
단순하지만 강력한 두 가지 기술을 사용

1. 전송되는 헤더 필드를 정적 Huffman 코드로 인코딩하도록 허용
2. 이전에 표시된 헤더 필드의 색인 목록을 클라이언트와 서버가 유지하고 업데이트하도록 요구, 이 목록을 참조로 사용하여 이전에 전송된 값을 효율적으로 인코딩


![](https://www.notion.so/image/https%3A%2F%2Fdevelopers.google.com%2Fweb%2Ffundamentals%2Fperformance%2Fhttp2%2Fimages%2Fheader_compression01.svg%3Fhl%3Dko?table=block&id=755dcf62-3f7b-4ea2-9031-fd6fd0e89dab&cache=v2)
더 나은 최적화를 위해 HPACK 압축 컨텍스트는 정적 및 동적 테이블로 구성
초기 버전의 HTTP/2 및 SPDY에서는 사용자설정 사전과 함께 zlib를 사용하여 모든 HTTP 헤더를 압축
이 경우 전송되는 헤더 데이터의 크기가 85%~88% 감소되었고 페이지 로드 시간 지연 시간이 상당히 개선
그러나 2012년 여름 TLS 및 SPDY 압축 알고리즘에 대해 'CRIME' 보안 공격과 세션 하이재킹 시도가 있었다고 발표되었습니다. 그 결과, zlib 압축 알고리즘이 HPACK으로 교체
HPACK 알고리즘은 검색된 보안 문제를 해결하고, 구현이 효율적이고 단순하며, HTTP 헤더 메타데이터의 압축이 뛰어나도록 설계


> [HTTP/2 소개 | Web Fundamentals | Google Developers](https://developers.google.com/web/fundamentals/performance/http2?hl=ko)





