mir.pe (일반/어두운 화면)
최근 수정 시각 : 2024-10-09 05:10:46

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. 지원
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 전송 시 같이 밀어 넣는 방식이다. 주로 JavaScript CSS, 글꼴, 이미지 파일 등을 지정한다.

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 운영체제에서 돌려야 한다.

WebtoB는 버전 5.0 SP 0 Fix #4 (5.0.0.4) 부터 지원한다. *NODE.HTTP2Flag = Y 옵션을 추가하면 된다.

4.3. 웹 어플리케이션 서버

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

5. HTTP/2 지원 사이트

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

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

분류