본문 바로가기

개발몰입과정 개념스터디/2차

[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 기법으로 인코딩하여 전송한다.

 

 


[참고]

https://goldfishhead.tistory.com/26

 

https://it-mesung.tistory.com/159

https://snow-line.tistory.com/153

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

'개발몰입과정 개념스터디 > 2차' 카테고리의 다른 글

Prettier & ESLint  (0) 2022.02.04
쿠키와 세션  (0) 2022.02.04
[HTTP] HTTP vs TCP vs IP  (0) 2022.02.04
[HTTP] HTTP vs HTTPS  (0) 2022.02.04
[HTTP] 상태코드와 요청메서드  (0) 2022.02.04