Http2가 필요해진 배경
- HTTP/1.1에서 브라우저가
파이프라이닝
을 잘 지원하지 않는다. - HTTP/1.1은
파이프라이닝
중에 먼저 온 요청이 후속요청을 블로킹한다.(HOL Blocking
)- 브라우저는
HOL Blocking
을 해결하기 위해 하나의 도메인에 대해 최대 6개까지의 TCP 커넥션을 제공한다. 6개의 요청을 병렬로 처리할 수 있는 것이다. - 하지만 최근에 6개도 부족하여 하위 도메인에서 처리하도록 해서 추가적인 커넥션을 확보할 수 있도록 하는 방법(
domain sharding
) 으로 우회해서 사용된다.
- 브라우저는
HTTP2의 특징
Binary Framing Layer
- 기존의
text
형식이 아닌binary
형식으로 전송한다. - 하나의 메시지가
frame
이라는 작은 단위로 쪼개져서 전송된다.
Multiplexing
- binary framing layer는 응답 다중화를 지원한다.
- 송신가 메시지를 분해하고, 수신자는 이를 조합하여 메시지를 주고 받는다.
- 여러 요청에 대해 단일 TCP 커넥션을 사용한다.
- 각각의 요청에 대한 스트림은 이에 대한 식별자를 가지고 있어 프레임을 식별한다.
스트림 우선순위
- HTTP/1.1 에서는 선행 요청에 대한 후행요청이 발생하고, 이에 대해 HOL Blocking이 발생하기 때문에 요청에 대한 우선순위가 필요하지 않았다.
- 하지만 HTTP/2 에서는 요청에 대한 응답이 병렬적으로 전송되기 때문에 각각의 요청에 대한 우선순위가 필요하다.
- 요청에 대한 우선순위를 명시할 수 있는데, 우선순위가 높은 요청에 대해 더 많은 프레임 전송을 허용하는 방식으로 처리하는 방식으로 적용한다.
Server Push
- TCP 커넥션을 살려두고, 서버에서 필요한 데이터를 푸시하도록 처리할 수 있다.
'CS' 카테고리의 다른 글
HTTP/1에 대해 (0) | 2024.06.13 |
---|---|
좀비 프로세스와 고아프로세스 (0) | 2024.06.07 |