티스토리 뷰

Infrastructure

HTTP 1.x 과 HTTP 2.0

Hero_O 2022. 8. 4. 22:20

HTTP 1.0

  • 하나의 커넥션에 한 번의 요청과 응답을 진행하는 방식 이다.
  • 하나의 요청이 끝나면 커넥션을 닫는 Non-Persistent Connection 
  • 한 번의 요청마다 커넥션 연결이 진행되어, 서버 부하가 큰 방식

HTTP 1.1

  • 지정한 시간(timeout) 동안 커넥션을 닫지 않고 유지하는 Persistent Connection.
  • 하나의 커넥션으로 여러 개의 요청과 응답을 처리하는 방식

 

HTTP 1.1 문제점

HOL(Head Of Line) Blocking 

하나의 커넥션에서 보낸 여러 요청들이 순차적으로 처리되어야 해, 같은 큐에 있는 앞에 패킷이 지연되어 응답이 지연되고 있는 상황

 

RTT(Rount Trip Time) 의 증가

 

요청을 하고 그 응답을 받기까지의 시간을 RTT라고 하는데, 요청의 개수와 응답의 개수가 많아짐에 따라 요청과 응답의 왕복시간이 증가한다.

중복된 많은 Header

여러 요청이 보내지는 과정에서 중복된 Header가 다 수 존재한다.

 

 

HTTP 2.0

  • 위에 설명한 HTTP 1.x의 문제점을 해결하기 위해 등장.
  • Multiplexed Streams, Stream Prioritization, Server Push, Header Compression 등을 도입하여 HTTP 1.x 에 비해 큰 성능 향상을 이루어냄.

 

Multiplexed Streams

  • 하나의 커넥션으로 동시에 여러 요청과 응답을 순서와 상관없이 주고 받을 수 있다.
  • 바이너리 프레임으로 인코딩하여 파싱•전송 속도를 향상시켰다.
  • 데이터 전송에 메시지를 프레임으로 분할하여 전송해 순서가 상관없어짐에 따라 HOL Blocking 문제를 해결

 

Stream Prioritization

  • 전송 과정에서 순서가 의미 없다고 하더라도, 렌더링 과정에서 먼저 필요하고 후에 필요한 우선순위는 존재할 수 있고 이 때문에 리소스간의 의존관계에 따라 우선순위를 설정할 수 있게 함.

 

Server Push

  • 서버 측에서 클라이언트가 요청하지 않은 자료를 사전에 푸쉬(전송)이 가능하게 되어, 리소스를 미리 다운 받을수 있게 하여 요청의 수를 최소화 할 수 있게함.

 

Header Compression

  • 중복된 헤더를 골라내고, 중복되지 않은 헤더만 작성하도록 하여 압축하는 방식
  • HPACK 압축 방식 (Header Table과 Huffman Encoding)을 사용하여 Header 압축을 하여 전송.

 

 

 

댓글