네트워크/HTTP

HTTP/1 에서 HTTP/2 로 가면서 얻는 개선점들 (HTTP1 에서 HTTP2로)

Jake Seo 2023. 4. 16. 01:11

HTTP/1.x 에서 HTTP/2

  • HTTP/2 로 버전이 업되면서 HTTP/1.x 버전의 퍼포먼스 문제를 개선했다.

HTTP/1.x 에서의 몇가지 대표적 문제점들

  • HTTP 바디와 달리 HTTP 헤더는 압축이 되지 않았다.
    • 사실 연속된 HTTP 메세지를 보낼 때 마다 같은 HTTP 헤더가 반복되는 경우가 매우 많았기 때문에 이는 비효율적이었다.
  • 다중 전송 (multiplexing) 이 불가능해서 서버 하나에 커넥션을 여러개 열어야 했다.

이진 프로토콜 (Binary Protocol)

  • HTTP/1.x 에서는 텍스트 프로토콜을 사용했는데, HTTP/2 에서는 이진 프로토콜을 사용한다.
  • 이로 인해 데이터 구문 분석, 전송, 압축이 더 효율적으로 처리되어 지연 시간이 단축되고 성능이 향상된다.

다중 전송 (Multiplexing)

  • 단일 연결을 통해 여러 요청과 응답을 동시에 전송할 수 있다.
    • 이는 클라이언트와 서버 간의 다중 커넥션 필요성을 줄여준다.
  • 하나의 느린 요청이 동일한 연결에서 다른 요청을 차단할 수 있는 HTTP/1.x 의 헤드 오브 라인 차단 문제를 해결하는데 도움을 준다.

헤더 압축 (Header Compression)

  • HTTP/2 에서 헤더를 압축하기 위해 HPACK 압축 알고리즘이 도입되었다.
  • 여러 요청에서 중복된 헤더 정보의 오버헤드를 줄이는데 큰 도움이 됐다.

서버 푸시 (Server Push)

  • 클라이언트가 리소스를 요청하기도 전에 서버에서 선제적으로 '리소스 푸시' 가 가능하다.
    • 서버는 명시적 요청을 기다릴 필요 없이, CSS 및 JS 와 같은 리소스를 클라이언트에 전송하여 로드 시간을 개선할 수 있다.

스트림 우선순위 (Stream Priortization)

  • 클라이언트가 요청에 따라 다른 우선순위 레벨을 할당할 수 있다.
    • 이를 통해 중요한 리소스를 빨리 줘서 사용자 경험을 개선할 수 있다.

연결 재사용 (Connection Reuse)

  • 새 커넥션을 맺기보다 기존의 커넥션을 재사용하는 것을 권장한다.
    • 더 낮은 지연과 효율적인 리소스 사용이 가능하다.

결론

  • HTTP/2 를 이용하면 퍼포먼스 관련 개선을 통한 더 나은 사용자 경험이 가능하다.
반응형