HTTP/2 (r20220720판)

문서 조회수 확인중...

1. 개요
2. 상세
3. HTTP/1.1에서의 개선점
3.1. Head of line blocking(HOL)
3.2. 중복 헤더의 제거
3.3. Header compression
3.4. Server push
3.5. Prioritization
4. 지원
4.1. 웹 브라우저
4.2. 웹 서버
4.3. 웹 어플리케이션 서버
5. HTTP/2 지원 사이트



1. 개요[편집]


2015년 IETF에 의해 공식적으로 발표된 HTTP/1.1의 후속 버전이다. HTTP/2의 차기 버전은 HTTP/3이다.


2. 상세[편집]


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

표준에서 TLS를 요구하는 것은 아니지만, SPDY에서 TLS를 요구했던 여파로 인해 모든 메이저 브라우저들이 TLS없이는 HTTP/2를 지원하지 않고 있다. 즉,TLS가 없으면 무조건 HTTP/1.1로 요청한다.

웹2.0과는 전혀 관계가 없다. 웹2.0은 2004년 나온 웹의 포괄적 개념으로 현재는 사문화되었다. HTTP/2는 프로토콜로 분야가 다르다.

2020년부터 HTTP/3 규격도 진행되고 있으며, 구글이나 유튜브 등의 주요 웹사이트들에서는 이미 적용 중이다.


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. 지원[편집]



4.1. 웹 브라우저[편집]


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

모바일의 경우 안드로이드누가 이후부터, iOS는 9 버전부터 지원한다.

맥에서는 2015년 출시된 OS X 10.11부터, 사파리는 9부터 지원한다.


4.2. 웹 서버[편집]


아파치 HTTP 서버는 2.4.12부터 일부 지원하다가 2.4.17부터 완전하게 지원하고 있다. Linux의 경우, 터미널에서 "a2enmod http2"를 입력하고, Apache 사이트 설정 파일에서 "Protocols http/1.1"로 된 부분을 "Protocols h2 http/1.1"로 변경해주면 된다.

NGINX는 1.9.5부터 일부 지원하다가 1.13.9 버전에서 완전하게 지원하고 있다. NGINX의 사이트 설정 파일에서 "listen 443 ssl;"로 된 부분을 "listen 443 ssl http2;"로 변경해주면 된다.

인터넷 정보 서비스는 버전 10부터 지원하고, Windows Server 2016이나 Windows 10 운영체제에서 돌려야 한다.


4.3. 웹 어플리케이션 서버[편집]


톰캣에서 지원하며 server.xml을 수정해야 한다.


5. HTTP/2 지원 사이트[편집]


웹 브라우저의 개발자 도구를 이용해 접속한 웹사이트의 HTTP/2 지원 여부를 확인할 수 있다.

이전까지는 HTTP/2를 지원하는 한국 사이트는 손에 꼽힐 정도였으나, 2020년을 기점으로 꾸준히 증가하여 현재는 대부분의 웹사이트가 지원하고 있다. 일부는 HTTP/3을 선행 적용하기도 한다.


파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2022-07-10 20:19:37에 나무위키 HTTP/2 문서에서 가져왔습니다.