Computer Science/Network

http 1.1과 http 2.0의 차이

2mukee 2024. 9. 28. 20:11
320x100
320x100

HTTP 1.1의 문제점

- connection 한 개 당 하나의 요청을 처리하도록 설계됨

요청과 응답이 순차적으로 이루어지기 때문에 동시에 리소스를 주고 받는 것이 불가능

HTTP 문서 내 포함된 다수의 리소스를 처리하려면 리소스 개수에 비례하여 Latency가 길어진다

 

- HOL (Head Of Line) Blocking이 발생할 수 있다

네트워크에서 같은 큐에 있는 패킷이 첫 번째 패킷에 의해 지연될때 발생하는 성능 저하 가능

 

- RTT (Round Trip Time) 증가

매번 요청 별로 Connection을 만들게되고 TCP 상에서 동작하는 HTTP 특성상 3-way-handshake가 반복적으로 일어나며, 불필요한 RTT 증가와 네트워크 지연을 초래한다

 

- 무거운 Header 구조

매 요청마다 중복된 헤더 값을 전송하게 되며, 서버 도메인에 관련된 쿠키 정보도 헤더에 함께 포함되어 전송되기 때문에 헤더의 크기가 증가한다

 

 

 

HTTP 1.1 개선 방법

- Image Spriting

아이콘을 하나의 큰 이미지로 만들어 CSS에서 해당 이미지의 좌표 값을 지정하여 표시

 

- Domain Sharding

브라우저에서 여러 개의 Connection을 생성해서 병렬로 요청을 보내는 것

그러나 브라우저 별로 도메인 당 Connection 개수 제한이 존재하여 근본적 해결 불가

 

- Minified CSS/JavaScript

CSS와 JavaScript를 최소화

 

- Load Faster

head태그에 자바스크립트를 삽입하고 async나 defer 옵션을 사용해 브라우저의 파싱을 block ㅏ지 않고 로드

 

- Data URI Scheme

HTML 문서 내 이미지 리소스를 Base64 인코딩된 이미지 데이터로 직접 기술하여 서버로의 요청을 줄임

 

- SPDY

구글에서 Latency 관점으로 HTTP를 고속화한 프로토콜

HTTP를 재정의하는 것은 아니고 HTTP를 통한 전송을 재정의 한다

이는 HTTP 2.0 초안의 참고 규격이 됨

 

 

 

HTTP 2.0

HTTP 1.1을 완전하게 재작성 한 것이 아닌 프로토콜 성능 향상에 초점을 맞춰 수정한 버전

 

- Multiplexed Streams

connection 하나로 동시에 여러 개의 메시지를 주고 받을 수 있고, 응답 순서에 상관없이 stream을 주고 받는다

 

- Stream Prioritization

리소스 간의 의존관계에 따른 우선순위를 설정하여 리소스 로드 성능 개선

 

- Server Push

클라이언트가 요청하지 않은 리소스를 서버가 사전에 push하여 전송

 

- Header Compression

헤더 정보를 HPACK방식으로 압축

 

 

 

 

 

Reference

 

HTTP1.1과 HTTP2.0의 차이

가장 큰 차이는 속도이다. 2.0은 헤더를 압축해서 보내기도 하고, 한번의 연결로 동시에 에러메시지를 주고 받을 수도 있다.Connection 한 개당 하나의 요청을 처리하도록 설계됨 \-> 동시에 리소스

velog.io

 

300x250
728x90