2022. 10. 25. 14:25ㆍweb
SPDY를 기반으로 더 빠르게_HTTP2.0
구글에서 2009년 SPDY하는 새로운 프로토콜을 발표한다.
SPDY
SPDY는 웹 콘텐츠를 전송할 목적으로 구글이 개발한 비표준 개방형 네트워크 프로토콜로
웹 페이지의 로딩 시간을 줄이기 위한 목적으로 설계되었다.
기존의 HTTP 메세지는 사람이 읽을 수 있는 텍스트 기반과 달리 SPDY 헤더는 압축되어 같은 메세지라도 더 작은 용량을 차지한다.
또한 SPDY는 암호화되지 않은 연결을 지원하지 않으며, 반드시 SSL 또는 TLS로 암호화되어야 한다.
HTTP 2.0
1) Mutiplexed Streams
그림에서 볼 수 있듯이 HTTP 1.0 버전은 HOL(Head Of Line) Blocking(특정 응답 지연) 이란 특징을 가지고 있다.
HOL Blocking 이란 네트워크에서 같은 큐에 있는 패킷이 첫번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상이다. HTTP 요청 순서에 맞게 응답을 보낼 수 있었던 HTTP 1.1 버전과 달리
- 이전 요청에 대한 응답이 오지 않아도 먼저온 응답을 받을 수 있도록 하였다. (응답 순서에 상관없이 Stream으로 주고 받는것.)
또한 1.1버전은 하나의 요청에 하나의 응답인 1:1 대응을 가지고 있었지만 2.0 버전에서는
2. 한번에 여러개의 메세지를 받을 수 있게 되었다.
지금까지의 내용을 정리하자면
한 커넥션으로 동시에 여러 개의 메세지를 주고 받으며, 응답 순서에 상관없이 Stream으로 주고받을 수 있게 되었고 이를 Multiplexed Streams 라고 한다.
(각 패킷에는 하나의 Frame Header가 포함되어있고 내부에 식별자가 있어 수신 측에서 응답 순서에 상관없이 순서대로 재배치가 가능하다.)
2) 헤더 압축
HTTP 메세지에는 Header부분이 포함되는데 HPACK 를 이용해 중복된 정보를 제거하고 헤더를 압축시켜 같은 메세지라도 크기가 더 작아지고 효율적으로 전달할 수 있다.
3) Server Push
클라이언트가 요청하지 않아도 서버에서 미리 필요한 리소스들을 푸시함으로서 더 높은 성능과 빠른 속도를 보장해준다.
<HTTP 2.0 정리>
SPDY를 기반.
- 한번의 요청으로 순서 없이 여러개의 메세지를 받을 수 있는 Multiplexed Streams
- HPACK을 이용한 중복제거와 헤더 압축 > 더 작은 크기 > 빠른 속도
- 요청하지 않아도 서버에서 미리 필요한 리소스들 푸시해놓는 Server Push > 빠른 속도, 효율성 증가
이런 기술이 사용될수 있었던건 바로 바이너리 프레이밍(Binary Framing) 덕분이다.
바이너리 프레이밍 HTTP 메세지가 텍스트 기반이었던 1.x 버전과 달리
바이너리 형태로 구성되어있으며, 더 작은 단위로 쪼개서 관리한다.
이 바이너리 프레이밍을 통해 위의 기능을 가능하게 할 수 있게 되었다.
'web' 카테고리의 다른 글
Servlet (0) | 2022.10.28 |
---|---|
HTTP의 발전_HTTP 1.x (0) | 2022.10.25 |
IP (0) | 2022.10.25 |
웹 서버와 WAS (0) | 2022.10.25 |