Http/2에서 변경되는 부분

1 minute read

Spec 문서 : https://tools.ietf.org/html/rfc7540

Github에 올라온 문서 : https://http2.github.io/faq/

 

Http/2정보 몇가지

구글 SPDY스피디에서 몇가지 스펙 덧붙여서 만든 프로토콜(인 것 같다)

Explorer 8(WinXP)에서 지원안함 볼 수 없음.. (현재 사용자의 6%가량)

Http 0.9 1.0 1.1처럼 .x가 안 붙고 Http/2라는것은 버전업을 할 예정이 없어서라고 자신있게 말 했다던데…

 

Http/2의 특징 대표적인 3가지는 아래~

참고정보 : https://b.luavis.kr/http2/http2-overall-operation

1.multiplex streams

http1은 무전기였다면 http2는 전화기. 양방향 데이터 흐름 http1은 request-response가 반복되느라 낭비가 있었는데 http2는 쭉 흘러온다고… stream. 그것도 양방향

http1에서 도메인당 request-response 채널이 보통 10개밑으로 열린다고 했다. 그래서 html, js, css, image. 등등을 다 다른도메인으로 설정하는 꼼수로 속도를 빠르게 할 수 있다고…

2. header compression

압축방식 : zlib(SPDY) -> HPACK(Http/2) Http1.1까지는 text 통신이었는데 Http/2는 binary 통신이다. 압축해서 전달.

그로인한 변화는 text기반인 telnet은 이제 쓸 수 없다. 네트워크 용량이 절약된다.

3. server push

http1에서 html을 요청해서 받고나서 html을 파싱한다음에 리소스를 요청하는식으로 처리를 했다면… http2에서는 예상되는 파일들을 먼저 보내준다. 서버가 해킹당하면 이상한 파일을 먼저 보낼 수 있지 않을까? 라고 생각할 수 있지만.. 어련히 잘 해놨겠지? 나중에 찾아봐야겠다. (인증서라던가 신뢰할 수 있는 서비스에서만 사용할 수 있게 변경되는걸로 되지 않을까)

server push는 websocket과는 다른 기술이다. 관련 포스팅 : https://www.infoq.com/articles/websocket-and-http2-coexist Well, the answer is clearly no, for a simple reason: As we have seen above, HTTP/2 introduces Server Push which enables the server to proactively send resources to the client cache. It does not, however, allow for pushing data down to the client application itself. Server pushes are only processed by the browser and do not pop up to the application code, meaning there is no API for the application to get notifications for those eve 대강 … 이벤트 전달용이 아니라 리소스만 전달한다는 것 같다. WebSocket은 메셰지나 이벤트를 전달하는 용도고

이런이유로 속도가 빨라지고 네트워크 자원이 절약된다고 한다. Google이 죽자고 크롬 만들어서 배포한 이유가 여기 있었다. SPDY프로토콜 이용한 통신으로 네트워크 비용을 많이 절약했겠다.

빼먹은거 하나. Http1.1도 gzip 압축compress해서 전송하는걸 지원하긴했는데 Http/2에서 개선된점은 압축방식이 더 좋다고 한다. 뭔진 모르겠지만… 그리고 Http1에서는 헤더는 압축불가능하고 반복되는게 계속 전달됐는데 Http/2는 헤더와 쿠키의 반복전송을 하지 않는다는점.

웹개발자들은 WindowsXP8 유저들을 위한 대안도 준비해야겠다. 웹개발은 진짜 돈도 안되고 신경쓸것도 많고