top of page
작성자 사진지현 배

[HTTP] HTTP 1.1 / 2.0


[출처 : https://medium.com/@shlee1353/http1-1-vs-http2-0-차이점-간단히-살펴보기-5727b7499b78]


HTTP 1.1

클라이언트의 리퀘스트의 순서와 서버의 응답순서는 동기화해야 되야함.

아래는 이것으로 발생하는 문제점이다.


    • 하나의 응답이 올 때까지 같은 큐(같은 Output)에 들어간 나머지 패킷들은 무한대기.

    • 단순히 연결을 여러개 두면 될 것 같지만, 브라우저는 동시에 6개정도 접속을 유지할 수 있기 때문에 리소스가 6개 이상인 경우 HOL(Head of Line)Blocking이 발생.

    • HOL(Head of Line)

    • 일반적으로 패킷은 입력포트에서 스위치패브릭을 거쳐 출력 포트로 전송됨. 입력포트에서 패킷이 출력포트로 전달되지 못하고 스위치 패브릭에서 대기하고 있는 현상.HOL 증가

[출처 : 위키피디아]

  • RTT(Round Trip TIme)증가

    • RTT

    • 패킷이 목적지에 도달하고 나서 해당 패킷에 대한 응답이 출발지로 다시 돌아오기까지의 시간. ⇒ 패킷 왕복시간


  • 무거운 Header구조

  • 헤더에는 많은 쿠키와 다양한 정보를 갖고 있고 매 요청시 마다 이것들이 포함된 중복된 헤더 값을 전송

즉, 연결당 하나의 요청과 응답을 처리하기 때문에 동시 전송문제와 다중 리소스를 처리하기에 속도, 성능이 느림.

HTTP 2.0

  • Multiplexed streams

  • 하나의 연결에 여러개의 메세지를 동시에 주고 받을 수 있음.

  • Stream Prioritization : 요청 리소스간 의존관계(우선순위) 설정

    • 예) 클라이언트가 요청한 HTML 문서 안에 CSS 파일 1개와 Image 파일 2개가 존재할 때, 만약 Image 보다 CSS 수신이 늦어지면 브라우저 렌더링이 늦어질 수 있음.

    • 리소스간의 우선순위를 정함으로써 해결이 가능.


  • Server Push : html문서상에 필요한 리소스를 클라이언트 요청없이 보내줄 수 있음.

    • 클라이언트가 여러개의 리소스(CSS, Image 등)가 포함된 HTML을 요청할 경우 HTTP 1.1는 HTML문서를 해석하기 위해 필요한 리소스를 재 요청할 수 있는데, HTTP 2.0에서는 재 요청없이 Server Push 기법을 활용하여 해석이 가능.


  • Header Compression : 헤더 정보를 HPACK압축방식을 이용하여 압축 전송

    • 예를들어, 클라이언트가 두번의 요청을 보낼 경우, HTTP 1.1은 두개의 요청 Header를 중복값이 존재해도 그냥 중복 전송을 진행한다. 하지만, HTTP 2.0에서는 Header에 중복값이 존재하는 경우 static/Dynamic Header Table 개념을 사용하여 중복 Header를 검출하고 중복된 Header는 index값만 전송하고 중복되지 않은 정보 값은 Huffman Encoding 기법으로 인코딩하여 전송한다.


[참고]

조회수 2회댓글 0개

최근 게시물

전체 보기

Comments


bottom of page