일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바 ORM 표준 JPA 프로그래밍 7장
- 코틀린인액션
- 기능개발 python
- 고급매핑
- 7장 고급매핑
- 스프링 컨테이너와 스프링 빈
- KotlinInAction
- 코틸린인액션
- 코틀린
- 백준
- 스프링 핵심 원리
- 20055
- Kotlin
- 스프링 핵심 원리 이해
- 백준 20055 컨베이어 벨트 위의 로봇
- 백준 13460 Python
- 스프링 핵심 원리 - 기본편
- 싱글톤 컨테이너
- kotlin in action 정리
- 객체 지향 설계와 스프링
- Kotlin in action 5장
- Kotlin in action 6장
- 컨베이어 벨트 위의 로봇 Python
- Kotlin in action 3장
- Kotlin In Action
- spring
- Kotlin in action 10장
- 20055 컨베이어 벨트 위의 로봇
- Python
- 13460 구슬탈출 2
- Today
- Total
기록하는 습관
[북스터디] HTTP 완벽 가이드 10장 본문
HTTP 완벽 가이드 10장
10.1 HTTP/2.0의 등장 배경
HTTP/1.0의 메시지 포맷은 구현의 단순성과 접근성에 주안점을 두고 최적화 되었기에, 성능을 희생시킨 면이 있다. 대표적으로 커넥션 하나를 통해 요청 하나를 보내고 응답을 받아야만 다음 요청을 보낼 수 있기 때문에 심각한 회전 지연이 생겼다.
이 문제를 해결하기 위해, 병렬 커넥션, 파이프라인 커넥션이 도입되었지만 근본적인 해결책은 되지 못했다.
성능 개선을 위한 여러 아이디어들이 제시가 됐고, 그 중 구글의 SPDY 프로토콜을 기초로 HTTP/2.0이 설계되었다.
SPDY: 비표준 개방형 네트워크 프로토콜로, 기존의 HTTP에 속도를 개선하기 위해 여러 가지 기능을 추가.
- 헤더를 압축하여 대역폭 절약
- 하나의 TCP 커넥션에 여러 요청을 동시에 보내 회전 지연을 줄이는 것 가능
- 클라이언트가 요청을 보내지 않아도 서버가 능동적으로 리소스를 푸시하는 기능
이 모든 것은 회전 지연을 줄이기 위한 것이다.
10.3 HTTP/1.1과의 차이점
10.3.1 프레임
HTTP/2.0에서 모든 메시지는 프레임에 담겨 전송된다.
기존에 Plain Text(평문)를 사용하고, 개행으로 구별되던 HTTP/1.x 프로토콜과 달리, HTTP/2.0에서는 바이너리 format으로 인코딩 된 Message, Frame으로 구성된다.
10.3.2 스트림과 멀티플렉싱
HTTP/2.0에서는 하나의 커넥션에 여러 개의 스트림이 동시에 열릴 수 있다. 따라서 여러 개의 요청을 동시에 보낼 수 있게 된다.
10.3.3 헤더 압축 HTTP Header Data Compression
이전 Header의 내용과 중복되는 필드를 재전송 하지 않도록 하여, 데이터를 절약한다. 또한 기존에 HTTP Header가 Plain Text(평문)이었지만, HTTP/2.0에서는 Huffman Coding을 사용하는 HPACK이라는 Header 압축방식을 이용하여 데이터 전송 효율을 높였다.
10.3.4 서버 푸시
서버가 클라이언트에서 어떤 리소스를 요구할 것인지 미리 알 수 있는 상황이라면 클라이언트가 요청하지 않은 JavaScript, CSS, Font, 이미지 파일 등과 같이 필요하게 될 특정 파일들을 서버에서 단일 HTTP 요청 응답 시 함께 전송할 수 있다.
** HTTP 1.x의 HOL(Head of line) Blocking 문제 해결
HTTP/1.1 까지는 한 번에 하나의 파일만 전송이 가능했다. 이는 여러 파일을 전송 할 경우, 선행하는 파일의 전송이 늦어지면, 전체 파일 전송의 시간이 늘어나는 문제가 발생하였다. HTTP/2.0에서는 여러 파일을 한 번에 병렬 전송하여, 문제를 해결하였다.
하나의 커넥션에서 여러 병렬 스트림이 존재할 수 있다. Stream number를 이용해 순서가 바뀌어도 수신측에서 재 조합 할 수 있다.
'스터디 > HTTP 완벽 가이드' 카테고리의 다른 글
[북스터디] HTTP 완벽 가이드 2장 (0) | 2021.05.28 |
---|---|
[북스터디] HTTP 완벽 가이드 7장 (0) | 2021.05.28 |
[북스터디] HTTP 완벽 가이드 6장 (0) | 2021.05.28 |
[북스터디] HTTP 완벽 가이드 4장 (0) | 2021.05.28 |
[북스터디] HTTP 완벽 가이드 9장 (0) | 2021.05.28 |