HTTP/1
- 연결당 하나의 요청을 처리하도록 설계
- 동시 전송이 불가능하고 요청과 응답이 순차적으로 이루어짐
- HTTP 통신은 TCP를 기반으로 요청
- TCP는 3-way handkshake로 신뢰성을 확보
- SSL과 같은 암호화가 추가 된다면 TLS Handshake로 인한 RTT(Round Trip Time)이 증가한다
- 특정 전송을 받아오지 못한다면 재요청을 하여 다시 데이터를 받아와 신뢰성을 높인다
- 재요청 시간만큼 통신이 지연됨
- 이를 HOL(Head Of Line) 블로킹이라 하고 HTTP 통신의 문제점이다
- RTT : Round Trip Time
- HOLB - Head Of Line Blocking
HTTP/2
- 구글에서 SPDY 프로토콜을 발표하였고 HTTP/2 프로토콜로 SPDY가 채택되어 2015년에 공식적으로 HTTP/2로 발행되었다
- HTTP/2는 헤더 프레임과 데이터 프레임으로 나누어 처리하고 있다
- 이를 바이너리 프레이밍 계층이라고 하며 바이너리 형식으로 인코딩 되어 처리할 수 있다
- HTTP/2는 바이너리 프레이밍 계층을 통해서 스트림 단위로 병렬 처리 한다
- 이를
멀티플렉싱
이라고 하며 이를 통해 TCP의 문제인 HOL로 생기는 재전송 시간 지연을 제거
하였다
- HTTP/2에서는 하나의 요청으로 서버에 모든 데이터를 클라이언트에 푸시할 수 있게 되었다
- 헤더 압축을 통해서 헤더에 중복되는 데이터를 제외한 다른 스트림을 통해서 서버에 요청을 하여 페이지 로드 시간을 감소 시켰다
HTTP/3
- HTTP/3는 QUIC라는 프로토콜을 이용하고, QUIC는 UDP를 사용하여 인터넷 연결을 한다
- 기존 HTTP는 신뢰성을 위해 TCP와 속도를 위한 UDP 방식을 동시에 사용했지만 HTTP/3는 QUIC 기반으로 UDP만을 사용한다.