[목차] == 개요 == 2015년 IETF에 의해 공식적으로 발표된 HTTP/1.1의 차기 버전이다. [[http://tools.ietf.org/html/rfc7540|Hypertext Transfer Protocol Version 2 (HTTP/2)]] == 상세 == 1999년에 발표된 HTTP/1.1은 텍스트 위주의 전송 프로토콜이었다. 하지만 웹 기술이 발전함에 따라 사진, 동영상 등과 같은 고용량의 멀티미디어 데이터를 전송하는 일이 많아졌고, 모바일 시장이 엄청나게 성장했다. 이에 따라 새로운 버전의 HTTP가 필요하다고 주장되었다. 이에 [[구글]]은 자체적으로 SPDY라는 프로토콜을 개발함으로써 HTTP/2 개발에 불을 지폈다. 이후 2012년, IETF에서 HTTP/2의 첫 Draft로 SPDY의 구조를 채택함으로써 현재의 HTTP/2의 구조와 기능이 SPDY와 유사하다. [[http://lists.w3.org/Archives/Public/ietf-http-wg/2012OctDec/0447.html|First draft of HTTP/2]] 표준에서 [[TLS]]를 요구하는 것은 아니지만, SPDY에서 TLS를 요구했던 여파로 인해 모든 메이저 브라우저들이 TLS없이는 HTTP/2를 지원하지 않고 있다. (TLS가 없으면 무조건 HTTP/1.1로 요청한다.) [[웹2.0]]과는 그다지 관계없다. 이쪽은 HTTP/2보다 훨씬 먼저 나온 웹의 포괄적 개념이다. 2020년 말 들어서는 [[https://en.wikipedia.org/wiki/HTTP/3|HTTP/3]] 규격도 논의되고 있다. [[구글]]이나 [[유튜브]] 등에 선행 적용 중이다. == HTTP/1.1에서의 개선점 == === Head of line blocking(HOL) === HTTP/1.1까지는 [[한 번에 한 놈 법칙|한 번에 한 파일밖에 못 보냈다]]. 그래서 특정 파일의 [[로딩]]이 늦어지면 다른 파일까지 줄줄이 느려지는 [[병목 현상]]이 생기게 된다. 그래서 여러 파일을 한꺼번에 병렬 전송을 하는 식으로 로딩 시간을 줄이는 방법을 사용한다. === 중복 헤더의 제거 === 같은 내용의 헤더를 보낼 경우, 생략해버리는 식으로 처리함으로써 속도를 높이는 방식이다. === Header compression === 이전까지는 HTTP 헤더가 평문이었지만, HTTP/2에서는 헤더를 압축하여 용량 대비 처리 효율성을 높이는 방법을 사용한다. 압축을 하기 때문에 헤더 크기 자체도 크게 줄어든다. === Server push === 특정 파일을 서버에 지정해서 HTTP 전송 시 같이 밀어 넣는 방식이다. 주로 [[JavaScript]]나 [[CSS]], [[글꼴]], 이미지 파일 등을 지정한다. === Prioritization === 웹 페이지를 구성하는 파일의 우선순위를 둘 수 있다. 로딩이 빨리 되어야 하는 파일과 그렇지 않은 파일을 구분해줄 수 있고, 이들 사이에서도 중요도를 차등 배분할 수 있다. == 지원 == === 웹 브라우저 === 일단 2015년에 표준안이 나왔기 때문에 [[인터넷 익스플로러]]는 11, 그것도 [[Windows 10]] 환경에서야 지원한다. [[Windows 7]]용 IE11은 HTTP/1.1만 지원하며, [[Windows 8.1]]용 IE11은 HTTP/2의 전신인 SPDY를 지원하기는 하나, HTTP/2와의 호환성은 없기 때문에 HTTP/1.1로 로딩된다. 이전 버전의 윈도를 쓴다면 [[크롬(웹 브라우저)|크롬]]이나 [[파이어폭스(웹 브라우저)|파이어폭스]] 등 타 브라우저를 쓰는 것을 권장한다. 모바일의 경우 [[안드로이드(운영체제)|안드로이드]]는 [[안드로이드(운영체제)/누가|누가]] 이후부터, [[iOS]]는 8 버전부터 지원한다. 맥에서는 OS X 10.11부터, 사파리는 9부터 지원한다. === 웹 서버 === [[아파치 HTTP 서버]]는 2.4.12부터 일부 지원하다가 2.4.17부터 완전하게 지원하고 있다. mod_http2 모듈을 추가 설치하는 작업이 필요하다. [[NGINX]]는 1.9.5부터 일부 지원하다가 1.13.9 버전에서 완전하게 지원하고 있다. ngx_http_v2_module을 추가 설치해야 한다. [[인터넷 정보 서비스]]는 버전 10부터 지원하고, Windows Server 2016이나 [[Windows 10]] 운영체제에서 돌려야 한다. === 웹 어플리케이션 서버 === [[톰캣]]에서 지원하며 server.xml을 수정해야 한다. == HTTP/2가 적용된 사이트 == [[웹 브라우저]]의 개발자 도구를 이용해 프로토콜을 확인하거나, [[크롬]] 확장 프로그램 [[https://chrome.google.com/webstore/detail/http-indicator/hgcomhbcacfkpffiphlmnlhpppcjgmbl|HTTP Indicator]]를 사용하면 접속한 웹사이트의 HTTP/2 지원 여부를 확인할 수 있다. 일부는 HTTP/3을 선행 적용(★)하기도 한다. * [[4chan]] * [[5ch]] * [[9GAG]] * [[Cloudflare]] * [[CNET]] * [[DeviantArt]] * [[DLsite]] * [[FANDOM]] * [[IBM]] * [[IGN]] * [[IMDb]] * [[Nyaa]] * [[Node.js]] 공식 사이트 * [[pixiv]] * [[reddit]] * [[Tumblr]] * [[개드립넷]] * [[게임메카]] * [[구글]] ★ * [[유튜브]] ★ * [[딥마인드]] * '''[[나무위키]]''' * [[네이버]] * [[로튼 토마토]] * [[루리웹]] * [[리브레 위키]] * [[리눅스 민트]] 공식 사이트 * [[모질라 재단]] * [[백괴사전]] * [[아마존닷컴]] * [[아이커뮤]] * [[에펨코리아]] * [[오라클(기업)|오라클]] * [[오픈크리틱]] * [[위키백과]] * [[위키하우]] * [[인스타그램]] * [[전자 프런티어 재단]] * [[제타위키]] * [[카카오스토리]] * [[토라노아나]] * [[트게더]] * [[페이스북]] * [[핀터레스트]] [[분류:인터넷]][[분류:통신]]