[cs 스터디] 2-5. HTTP - HTTP/2

YooJeeun·2025년 1월 3일

cs 스터디

목록 보기
24/65

HTTP/2

HTTP/2는 SPDY 프로토콜에서 파생된 HTTP/1.x보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있으며 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리를 지원하는 프로토콜이다.

바이너리 포맷 계층

애플리케이션 계층과 전송 계층 사이에 바이너리 포맷 계층을 추가한다.
HTTP1.0은 일반텍스트 메시지를 전송하고 줄바꿈으로 데이터를 나눴다면 HTTP 2.0은 0과 1로 이루어진 바이너리 데이터로 변경되었고 더 작은 메시지가 프레임으로 캡슐화 되어서 전송된다. 이러한 것들이 멀티플랙싱의 토대가 된다.

멀티플랙싱

여러 개의 스트림을 사용하여 송수신 한다는 것이다.
이를 통해 특정 스트림의 패킷이 손실되었다고 하더라도 해당 스트림만 영향을 미친다.

스트림: 시간이 지남에 따라 사용할 수 있게 되는 일련의 데이터 요소를 가리키는 데이터 흐름

병렬적인 스트림(stream) 들을 통해 데이터를 서빙하고 있다. 또한, 스트림 내의 데이터들도 쪼개져있는데 이는 애플리케이션에서 받아온 메시지를 독립된 프레임으로 조각내어 서로 송수신한 이후 다시 조립하며 데이터를 주고받는다.

단일 연결 사용 -> 병렬로 여러 요청을 받을 수 있고 응답을 줄 수 있다.
HTTP/1.x에서 발생하던 HOL Blocking 문제 해결 가능.

헤더 압축

HTTP/1.x의 문제 -> 크기가 큰 헤더
이를 HTTP/2에서 헤더 압축을 통해 해결한다.
허프만 코딩 압축 알고리즘을 사용하는 HPACK 압축 형식

허프만 코딩
문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트 수를 사용하여 표현하고, 빈도가 낮은 정보는 비트 수를 많이 사용하여 표현해서 전체 데이터의 표현에 필요한 비트양을 줄이는 원리

서버 푸시

HTTP/1.x에서는 클라이언트가 서버에 요청해야 파일을 다운로드 받을 수 있었다.
HTTP/2에서는 클라이언트 요청 없이 서버가 바로 리소스를 푸시할 수 있다.

html에는 css나 js 파일이 포함되기 마련인데 html을 읽으면서 그 안에 들어 있던 css 파일을 서버에서 푸시하여 클라이언트에 먼저 줄 수 있다.

우선순위

서버에서 원하는 순서대로 우선순위를 정해 리소스를 전달할 수 있다.

profile
제니벨로그

0개의 댓글