[네트워크] HTTP/1.1 과 HTTP/2.0

hyeminn·2021년 1월 29일
0

HTTP/1.1

  • HTTP/1.1은 기본적으로 Connection 당 하나의 요청을 처리하도록 설계

  • HTTP/1.1 성능 개선을 위해 파이프라이닝 기술 도입

    • 하나의 커넥션에서 한 번에 순차적인 여러 요청을 연속적으로 하고, 그 순서에 맞춰 응답을 받는 방식

    • 먼저 받은 요청이 끝나지 않으면 그 뒤에 있는 요청의 처리가 먼저 끝났어도 앞의 요청이 끝날 때 까지 기다려야 함

    • -> HOL Blocking 문제 발생

  • 요청을 병렬로 처리하기 위해 6-8개 정도의 여러 커넥션을 이용해 데이터를 가져오는 방식으로 성능을 개선함

HTTP/2.0

  • 스트림 : 구성된 연결 내에서 전달되는 바이트의 양뱡향 흐름이며, 하나 이상의 메시지가 전달될 수 있음

  • 메시지 : 논리적 요청 또는 응답 메시지에 매핑되는 프레임의 전체 시퀀스

  • 프레임 : HTTP/2.0에서 통신의 최소 단위이며 각 최소 단위에는 하나의 프레임 헤더가 포함됨

http_2

  • 바이너리 프레이밍 계층을 사용해 요청과 응답의 멀티 플렉싱을 지원

  • HTTP 메시지를 바이너리 형태의 프레임으로 나누고, 이를 전송 후 받은 쪽에서 다시 조립함

  • 요청과 응답이 동시에 이루어져 하나의 연결에 여러 요청과 응답이 뒤섞여있음

  • Multiplexed Streams

    • 한 커넥션에 여러개의 메세지를 동시에 주고받을 수 있음
  • 요청이 커넥션 상에서 다중화 되므로 HOL(Head Of Line) Blocking이 발생하지 않음

  • Stream Prioritization

    • 요청 리소스간 의존 관계(우선순위)를 설정
  • Header Compression

    • Header 정보를 HPACK 압축 방식을 이용하여 압축 전송
  • Server Push

    • HTML 문서 상에 필요한 리소스를 클라이언트 요청 없이 보내줄 수 있음
  • HTTP/1.1과 높은 수준의 호환성 - 메소드, 상태코드, URI 및 헤더 필드

  • 페이지 로딩 속도 향상

profile
성장하는 개발자가 되고 싶어요 😁

0개의 댓글