본문 바로가기

Programming

HTTP 2.0 에 관하여...

HTTP 2.0 에 대하여...

  1. HTTP 2.0 등장배경
  2. HTTP 2.0 특징
  3. 정리

https://github.com/itdar/TIL/commit/533167fb17d0c7d0a25ec6dcc9f905778a5b93fd

 

chore: HTTP 2.0 에 관하여... · itdar/TIL@533167f

+ HTTP Message

github.com


1. HTTP 2.0 등장배경 (2015)

  • 과거의 웹 요청 및 전송속도에 쓰던 전송기술이 현대와 맞지 않음
    • HTTP 1.1 이 1999년도에 나온 후 웹 전송기술의 표준이 게속 유지되었음
    • 옛날의 웹 요청과 다르게 최근에는 요청의 횟수와 요청 리소스 용량도 많아짐
    • 전송속도도 옛날에 비해 100배 이상 빨라지게 됨

2. HTTP 2.0 특징

  1. 바이너리 프로토콜
    • 텍스트가 아닌 Binary 프레임으로 구성
      • 파싱이 더 빠르고 오류 발생 가능성이 낮음
    • HEADERS frame(헤더), DATA frame(바디) 으로 구성됨
  2. 멀티플렉싱
    • 하나의 TCP Connection 내에서 다수의 Stream 생성
    • 하나의 요청이 지연되면 나머지 응답도 늦어지는(HOL) HTTP Pipelining 과 다르게 각각의 요청/응답을 독립적으로 처리
      • 다수의 요청/응답을 동시에 처리 가능
    • 프레임마다 관련된 요청 순서번호 (Stream #) 을 기재해서 요청 순서에 상관없이 데이터 전송 가능 (하나의 TCP 세션 사용)
  3. 헤더 압축
    • 반복적으로 사용되는 헤더를 헤더 테이블 내의 인덱스로 표기
      • 헤더 크기를 80% 정도 줄임
    • 이전 헤더 내용을 테이블에 저장, 다음 요청에서 동일 헤더 사용 시 테이블 인덱스 번호만 사용함
  4. 우선순위 설정
    • Stream 별로 우선 순위를 지정
      • 중요한 리소스의 처리 지연을 방지
  5. 서버 푸시
    • 클라이언트가 요청하지 않아도 필요가 예상되는 리소스를 서버가 미리 전송함 (추가 프로그래밍 필요)

3. 정리

  • 변화된 웹서비스 및 네트워크 환경에 맞게 15년여만에
    HTTP 표준 개정
  • HTTP 2.0을 통해 웹서비스 성능 향상을 기대
    • 다만, 환경에 따라서는 오히려 성능 저하가 올 수 있음
  • 웹서비스 최적화 기법의 재검토가 필요
  • 주요 브라우저의 h2(https) only 정책으로 인해 기존 웹서비스에 대한 수정/보완 작업이 필요

Reference