HTTP/2

최근 수정 시각:

분류

1. 개요2. 상세3. HTTP/1.1에서의 개선점
3.1. Head of line blocking(HOL)3.2. 중복 헤더의 제거3.3. Header compression3.4. Server push3.5. Prioritization
4. 지원5. HTTP/2가 적용된 사이트

1. 개요[편집]

2015년 IETF에 의해 공식적으로 발표된 HTTP/1.1의 차기 버전이다. Hypertext Transfer Protocol Version 2 (HTTP/2)

2. 상세[편집]

1999년에 발표된 HTTP/1.1은 텍스트 위주의 전송 프로토콜이었다. 하지만 웹 기술이 발전함에 따라 사진, 동영상 등과 같은 고용량의 멀티미디어 데이터를 전송하는 일이 많아졌고, 모바일 시장이 엄청나게 성장했다. 이에 따라 새로운 버전의 HTTP가 필요하다고 주장되었다. 이에 구글은 자체적으로 SPDY라는 프로토콜을 개발함으로써 HTTP/2 개발에 불을 지폈다. 이후 2012년, IETF에서 HTTP/2의 첫 Draft로 SPDY의 구조를 채택함으로써 현재의 HTTP/2의 구조와 기능이 SPDY와 유사하다. First draft of HTTP/2

기본적으로 TLS를 요구하기 때문에 443 포트를 사용하고 있으며, 비교적 최신의 서버 환경을 구축해놔야 한다.(TLS가 없으면 protocol negotiation조차 불가능하다.)

웹2.0과는 그다지 관계없다. 이쪽은 HTTP/2보다 훨씬 먼저 나온 웹의 포괄적 개념이다.

3. HTTP/1.1에서의 개선점[편집]

3.1. Head of line blocking(HOL)[편집]

HTTP/1.1까지는 한 번에 한 녀석밖에 못 보냈다. 그래서 특정 파일의 로딩이 늦어지면 다른 파일까지 줄줄이 느려지는 헬게이트가 생기게 된다. 그래서 여러 파일을 한꺼번에 병렬 전송을 하는 식으로 로딩 시간을 줄이는 방법을 사용한다.

3.2. 중복 헤더의 제거[편집]

같은 내용의 헤더를 보낼 경우, 깔끔하게 이하생략 해버리는 식으로 처리함으로써 속도를 높이는 방식이다.

3.3. Header compression[편집]

이전까지는 HTTP 헤더가 평문이었지만, HTTP/2에서는 일종의 컴파일을 거쳐서 헤더 용량 대비 처리 효율성을 높이는 방법을 사용한다. 컴파일을 거치기 때문에 헤더 크기 자체도 크게 줄어든다.

3.4. Server push[편집]

특정 파일을 서버에 지정해서 HTTP 전송 시 같이 밀어 넣는 방식이다. 주로 JavaScriptCSS, 글꼴, 이미지 파일 등을 지정한다.

3.5. Prioritization[편집]

웹 페이지를 구성하는 파일의 우선순위를 둘 수 있다. 로딩이 빨리 되어야 하는 파일과 그렇지 않은 파일을 구분해줄 수 있고, 이들 사이에서도 중요도를 차등 배분할 수 있다.

4. 지원[편집]

일단 2015년에 표준안이 나왔기 때문에 인터넷 익스플로러는 11, 그것도 Windows 10 환경에서야 지원한다. Windows 7용 IE11은 HTTP/1.1만 지원하며, Windows 8.1용 IE11은 HTTP/2의 전신인 SPDY를 지원하기는 하나, HTTP/2와의 호환성은 없기 때문에 HTTP/1.1로 로딩된다. 이전 버전의 윈도를 쓴다면 크롬이나 파이어폭스 등 타 브라우저를 쓰는 것을 권장한다. 모바일의 경우 안드로이드누가 이후부터, iOS는 8 버전부터 지원한다.

5. HTTP/2가 적용된 사이트[편집]