10. HTTP/2.0

HTTP 의 성능 문제를 개선하기 위해 HTTP/2.0 을 만드는 작업을 한창 진행중이다.

  • HTTP/2.0을 만들기 시작한 배경

  • HTTP/1.1과의 주요차이점

  • 현재까지 알려진 보안 이슈에 대해 이야기한다.

1) HTTP/2.0 등장 배경

HTTP/1.1 메시지 포맷은 구현의 단순성접근성에 주안점을 두고 최적화 되었다.

그러다보니 성능은 어느정도 희생시키지 않을 수 없었다.

커넥션 하나를 통해 요청을 하나 보내고, 응답하나만 받는 교환방식은 단순하지만 응답을 받아야만 다음 요청을 보낼수 있으므로 회전지연(latency)를 피할 수 없었다. 병렬커넥션, 파이프라인 커넥션이 도입되었으나 근본적인 해결책이 되지는 못했다.

구글은 웹을 더 빠르게하겠다는 목표로 'SPDY(스피디)'라는 프로토콜을 내놓았다. 기존 HTTP 속도를 개선하고 여러 기능을 추가했다. 헤더를 압축해서 대역폭을 절약하고 하나의 TCP 커넥션에 여러 요청을 동시에 보내 회전지연을 줄였으며, 클라이언트가 요청을 보내지 않아도 서버가 능동적으로 리소스를 푸시하는 기능도 갖추고있다.

이를 기반으로 HTTP/2.0 프로토콜을 설계하였고 책을 쓴 시점에 8번째 초안까지 나와있고 SPDY의 특징을 거의 유지하고있다. 큰 변경은 헤더 압축에 deflate 알고리즘을 사용하지 않는다는 점 정도.

2) HTTP/2.0 개요

  • 스트림에 대한 흐름제어와 우선순위 부여기능 제공

  • 기존 요청-응답과는 다른 새로운 상호작용 모델인 '서버 푸시'를 도입했다.

  • 기존 웹 애플리케이션과 호환성 유지를 위해 HTTP/2.0 은 요청과 응답 메시지의 의미를 HTTP/1.1과 같도록 유지하고있다.

3) HTTP/1.1과 차이점

  • 프레임

  • 스트림과 멀티 플렉싱

  • 헤더 압축

  • 서버 푸시

4) 알려진 보안 이슈

  • 중개자 캡슐화 공격: HTTP/2.0 메시지를 프락시가 HTTP/1.1 메시지로 변환할 때 메시지의 의미가 변질될 가능성이 있다.

  • 긴 커넥션 유지로 인하 개인정보 누출 우려

Last updated