http2에서 바뀐부분들을 간략히 정리.

그동안 http1.1 에서의 한계를 다양한 방법으로 보완하고 있었지만.
http2 에서는 많은 부분들을 개선하여, 보완방법이 없이도 해소 된다고 한다.

또한 단지 http2 로 바꿈으로써 15~50% 의 성능 개선 효과를 얻을수 있다고 한다.

기존 http의 단점으로는

  • 많은 header 들로 인한 요청 사이즈 크기 증가
  • 한번의 커넥션을 재사용하기 위해 keep-alive 가 도입되었지만.
    HOLB (Head Of Line Block) 발생

http2 에서의 Header

Header를 동적 테이블로 관리함으로써 변경되는 헤더에 대해서만 전달하며
요청시마다 Header 전체를 전달할 필요가 없어졌다.
또한 압축되어진다.
- Header key 값이 전부 소문자로 변경되었다.
- 아래와 같은 헤더들이 존재한다 (가상헤더?)
:authority
:method
:path
:scheme
:status
(HPACK: Header Compression for HTTP/2 )

http2 에서의 Request/Response

http2 에서는 request와 response를 Stream으로써 처리한다.
한번에 여러 request를 보낼수 있으며, 순서와 상관없이 서버에서 빨리처리되는 대로 Response가 온다.
간단하게
클라이언트는 서버에 스트림을 열고
여러개의 헤더 프레임을 보낸다 (마지막엔 엔드 헤더)
그런 후 마지막에 스트림을 닫는 요청을 보내 half-close 상태가 된다.
half-close 상태에서는 서버가 응답을 한다.서버는 클라이언트로 여러 헤더 프레임
데이타 프레임을 보낼수 있고
미리 전달되어야할 리소스에 대해서는 server push 할 수 있다.
한번의 연결 스트림상에 여러 요청과 여러 응답이 주고 받아진다.

정리하자면 크게 세가지 이다.

  • 헤더압축
  • Stream
  • Server push

클라이언트는 서버가 http2를 지원하는지 어떻게 알수 있을까 하는 의문이 든다.

Hypertext Transfer Protocol Version 2 (HTTP/2)

RFC 7540 문서의

서버가 http2를 지원하는지 체크 방법

http://itrepreneur.tistory.com/5?category=665807

mac에서 curl명령어를 통해 http2지원 체크하는 방법
https://simonecarletti.com/blog/2016/01/http2-curl-macosx/

curl -I — http2 https://www.naver.com
brew install curl — with-nghttp2
brew link curl — force
/usr/local/Cellar/curl/7.57.0/bin/curl -I — http2 https://www.naver.com

HTTP/2 200
server: NWS
date: Thu, 14 Dec 2017 06:55:27 GMT
content-type: text/html; charset=UTF-8
cache-control: no-cache, no-store, must-revalidate
pragma: no-cache
p3p: CP=”CAO DSP CURa ADMa TAIa PSAa OUR LAW STP PHY ONL UNI PUR FIN COM NAV INT DEM STA PRE”
x-frame-options: SAMEORIGIN
strict-transport-security: max-age=31536000; preload

잘 정리된 블로그들 :

Written by

엘디는 사랑입니다.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store