# 현재의 HTTP/2
+ HTTP/2는 SPDY 기반이다
+ SPDY는 2009년 구글에 의해 도입된 비표준 웹 전송 프로토콜이다.
+ HTTP/2는 HTTP/1.1의 구조를 유지한다. (헤더, HTTP Method, status code, URLs, header fields)
+ HTTP/2에 추가된 5가지 특징은 아래와 같다.
- Single, Persistent Connection = 각 웹 페이지마다 1개의 Connection만 사용된다, Web Page가 열려있는동안 동일한 Connection 이 사용된다.
- Multiplexing = 요청과 응답들은 하나의 Connection에서 각각의 스트림으로 우선순위가 매겨지고 다중통신된다. Connection이 맺어졌을 때
HOL블로킹이 없어진다.
- Header Compression and Binary Encoding = HPACK 압축으로 헤더는 압축된다 HPACK은 네트워크를 통해 전달되는 데이터의 양을 줄여준다. 평문이아닌 binary 포맷으로 보내진다.
- Prioritization = 요청들은 의존 레벨이 할당된다. 그리고 요청들은 레벨에 따라 우선순위가 매겨진다. 서버는 요청을 수행할 리소스의 순서를 매기고 할당하기 위해 이정보를 사용한다.
- SSL Encryption = HTTP/2는 SSL 지원을 추가하도록 허락한다. 어떤 경우에는 성능의 패널티 없이 사이트를 좀더 안전하게 만든다.
# HTTP/1.x + SSL의 오버헤드를 HTTP/2에서는 어떻게 개선하였을까?,,
+ Single Connection으로 SSL Handshaking을 최소화.
+ Header들이 압축되고, 헤더 전송 시간이 감소됨.
+ Multiplexing 을 통해 파일전송으로 인해 다른 요청들이 딜레이 되지 않음.
+ CSS, Javascript 등의 파일들이 in-lined 되거나, 결합되거나 분리될 필요가 없으므로 Caching 이 최적으로 동작함.