HTTP/1.x
에서 HTTP/2
로
HTTP/2
로 버전이 업되면서HTTP/1.x
버전의 퍼포먼스 문제를 개선했다.
HTTP/1.x
에서의 몇가지 대표적 문제점들
- HTTP 바디와 달리 HTTP 헤더는 압축이 되지 않았다.
- 사실 연속된 HTTP 메세지를 보낼 때 마다 같은 HTTP 헤더가 반복되는 경우가 매우 많았기 때문에 이는 비효율적이었다.
- 다중 전송 (multiplexing) 이 불가능해서 서버 하나에 커넥션을 여러개 열어야 했다.
- 사실 Warm TCP 커넥션이 Cold TCP 커넥션보다 효율적이라는 점에서 생각해볼 필요가 있다.
이진 프로토콜 (Binary Protocol)
HTTP/1.x
에서는 텍스트 프로토콜을 사용했는데,HTTP/2
에서는 이진 프로토콜을 사용한다.- 이로 인해 데이터 구문 분석, 전송, 압축이 더 효율적으로 처리되어 지연 시간이 단축되고 성능이 향상된다.
다중 전송 (Multiplexing)
- 단일 연결을 통해 여러 요청과 응답을 동시에 전송할 수 있다.
- 이는 클라이언트와 서버 간의 다중 커넥션 필요성을 줄여준다.
- 하나의 느린 요청이 동일한 연결에서 다른 요청을 차단할 수 있는
HTTP/1.x
의 헤드 오브 라인 차단 문제를 해결하는데 도움을 준다.
헤더 압축 (Header Compression)
HTTP/2
에서 헤더를 압축하기 위해HPACK
압축 알고리즘이 도입되었다.- 여러 요청에서 중복된 헤더 정보의 오버헤드를 줄이는데 큰 도움이 됐다.
서버 푸시 (Server Push)
- 클라이언트가 리소스를 요청하기도 전에 서버에서 선제적으로 '리소스 푸시' 가 가능하다.
- 서버는 명시적 요청을 기다릴 필요 없이, CSS 및 JS 와 같은 리소스를 클라이언트에 전송하여 로드 시간을 개선할 수 있다.
스트림 우선순위 (Stream Priortization)
- 클라이언트가 요청에 따라 다른 우선순위 레벨을 할당할 수 있다.
- 이를 통해 중요한 리소스를 빨리 줘서 사용자 경험을 개선할 수 있다.
연결 재사용 (Connection Reuse)
- 새 커넥션을 맺기보다 기존의 커넥션을 재사용하는 것을 권장한다.
- 더 낮은 지연과 효율적인 리소스 사용이 가능하다.
결론
- HTTP/2 를 이용하면 퍼포먼스 관련 개선을 통한 더 나은 사용자 경험이 가능하다.
반응형
'네트워크 > HTTP' 카테고리의 다른 글
HTTP 헤더란? (Http headers) (0) | 2023.04.16 |
---|---|
HTTP 응답 메세지의 구조 (0) | 2023.04.15 |
HTTP 요청 메세지의 구조 (0) | 2023.04.15 |
HTTP Content-Type 헤더란? (0) | 2023.04.14 |
HTTP MIME type 이란? (0) | 2023.04.14 |