/ PT

21 02 06

주제 : http 0.9 ~ 2.0


HTTP 0.9 ~ 2.0

Alt text


HTTP 0.9

Alt text

  • 요청과 응답이 심플, 확장성이 없음
  • 원 라인 프로토콜이라고도 불림

HTTP 1.0

Alt text

  • Header가 추가됨(버전, 상태코드, Content-Type Header)
  • 특징 : 1 Connection == 1 Request & 1 Response
  • 문제점 : 요청당 Connection 발생(성능저하, 비용증가)

HTTP 1.1

  • Persistent Connection : 지정한 timeout 동안 Connection을 닫지 않는 방식 Alt text

  • Pipelining : 하나의 커넥션에서 응답을 기다리지 않고 순차적인 여러 요청을 연속적으로 보내 순서에 맞춰 응답 받는 방식 (시간 절감)
    Alt text

  • 문제점
    Alt text
  • 첫번째요청이 처리하는 시간이 오래걸리면 두번째요청부터는 기다려야함
  • 연속된 요청일 경우 중복 Header 전송

HTTP 2.0

  • 기존 HTTP/1.X 버전의 성능 향상에 초점
  • 표준의 대체가 아닌 확장

HTTP 2.0 특징

1. Http 메세지 전송 방식의 변화 Alt text

  • 바이너리 프레이밍 계층 사용 -> 파싱,전송 속도 증가, 오류 발생 가능성 낮아짐

Alt text

  • Stream : 연결된 커넥션 사이에서 바이트의 양방향 흐름. 하나 또는 하나 이상의 message를 전송함
  • Message : 프레임들의 완성된 배열. Request/Response의 논리적인 배열이라고 보면 된다.
  • Frame : HTTP/2.0 통신에서 가장 작은 단위의 유닛.
    각각의 frame 은 헤더를 포함하고 있음. 헤더는 현재 전송되는 프레임이 어디에 포함되는 것인지 알려주는 최소 단위.

2. Request & Response Multiplexing Alt text

  • 요청과 응답이 다중화가 가능해짐
  • Frame으로 쪼개짐으로서 메세지간의 순서가 사라짐
  • 1.1에서 Head Of Line Blocking 문제 해결
  • interleaving(끼워넣기) 방식 또한 제공

3. Stream Prioritization

  • 리소스간의 전송 우선순위를 설정
  • 각 스트림에는 1~256 사이의 정수 가중치가 할당될 수 있습니다.
  • 각 스트림에는 다른 스트림에 대한 명시적 종속성이 부여될 수 있습니다. Alt text

4. Server push Alt text

  • 클라이언트가 요청 하지 않은 리소스들을 서버에서 자동 푸쉬

5. 헤더 압축(Header Compression) Alt text

  • 기존 1.1에서는 header의 중복에 문제가 있었는데 2.0에서 해결
  • Static dynamic table 도입(중복된 내용은 인덱스만 뽑고, 새로추가된 내용은 허프만 인코딩으로 압축)
  • 헤더의 크기를 줄여 페이지 로드 시간 감소

References.

https://velog.io/@taesunny/HTTP2HTTP-2.0-%EC%A0%95%EB%A6%AC https://ijbgo.tistory.com/26 https://developer.mozilla.org/ko/docs/Web/HTTP https://developers.google.com/web/fundamentals/performance/http2?hl=ko https://www.youtube.com/watch?v=xcrjamphIp4