최근 HTTP/3에 대한 기사가 많이 보여서 흥미를 가지고 관련 내용을 찾아보고 공부하며 재미있게 읽을 수 있도록 정리해보았다.
HTTP/1.1이 1999년에 공개된 이후 개정된 적이 없었지만, SPDY나 WebSocket 등의 등장으로 웹에서 적합한 프로토콜이라고 말할 수 없게 되었다. 하지만 내가 읽은 책에서는 HTTP/1.1을 표준으로 설명하고 있었다. 책은 2012년에 쓰여졌고 HTTP2은 2015년에 표준으로 지정되었기 때문이다. 그렇다면 HTTP/1.1과 2의 차이점은 무엇이고 3는 어떻게 등장하게 된 것일까?
HTTP/1.1은 한 Connection으로 하나의 Request밖에 보내지 못한다.
때문에 동시 전송이 불가능하고 모든 요청과 응답이 순차적으로만 이루어지게 되어, 이미지 파일 등을 처리하려면 리소스 개수에 따라 대기 시간이 길어지는 HOLB (Head of Line Blocking) 현상이 발생하게 된다.
HTTP/2는 1.1 버전과 호환성을 유지하며 2.0 프로토콜을 사용할 수 있는 메카니즘이다. 앞서 말한 것처럼 HTTP/2가 등장하게 된 목적은 사용자가 웹을 이용할 때 체감 속도를 개선하기 위해서
이다.
다음과 같은 방법들을 이용하여 지연 시간을 감소시켜 웹 브라우저의 페이지 로드 속도 개선한다.
HTTP 헤더 데이터 압축
서버 푸시 기술
요청을 HTTP 파이프라인으로 처리
한 커넥션에 여러 개의 메세지를 동시에 주고 받아 HTTP 1.x의 HOLB 문제 해결
TCP 연결 하나로 여러 요청을 다중화 처리
데스크탑 브라우저, 모바일 웹 브라우저, 웹 API, 웹 서버, 프록시 서버, 리버스 프록시 서버, 방화벽, 콘텐츠 전송 네트워크 등 자주 쓰이는 것들을 지원
모든 기능을 이해하기는 어렵지만 속도 개선과 사진, 동영상과 같은 데이터를 더 많이, 빠르게 보내기 위한 방법
들이라고 알아두면 좋을 것 같다.
크롬, 사파리, 파이어폭스 등 대부분의 브라우저에서 지원하고 인터넷 익스플로러는 11이 윈도우 10 OS에 한정되어 지원한다.
리빙 포인트 : 줄이어폰이 아니라 이어폰이고, 이어폰이 아니라 무선 이어폰인 것처럼 HTTP/1.1도 그냥 HTTP라고 부르는 사람들이 많다.
HTTP/3은 사실 이미 2019년에 상용화 단계까지 개발이 되었다고 한다.
2.0이 2015년에 표준화로 지정된 것을 생각하면 4년이라는 짧은 시간 내에 버전을 바꾸려 하는 것이다.
프로토콜은 인터넷 규약이고 소프트웨어 제조사 사이 합을 맞추는 기간이 필요하기 때문에 이렇게 단기간에 급격한 변화가 이루어지지 않는다.
이미 google이나 유튜브, 페이스북에서는 HTTP/3를 적용해서 사용하고 있으며, 점유율이 25%나 된다.
구글 크롬, 파이어폭스에서 HTTP/3를 지원하고 있지만 기본적으로 비활성화 되어 있다.
만약 프로토콜을 사용해보고 싶다면 터미널에서 해당 명령어를 실행하여 활성화 하면 된다.
$ open -a Google\ Chrome --args --enable-quic --quic-version=h3-23
응답 프로토콜에 http/2+quic/46라고 적혀 있는 게 HTTP/3 프로토콜을 사용한 연결이다.
HTTP1.1/2.0은 TCP 기반으로 통신을 하고 HTTP3는 UDP 기반으로 통신을 한다는 것
이 가장 큰 차이점이 되겠다.
정확히는 UDP 기반의 프로토콜인 QUIC를 사용하여 통신한다.
그렇다면 왜? HTTP/3는 UDP를 사용하는 걸까? UDP를 사용하여 어떤 이점을 얻을 수 있는 걸까?
정말 간단하게 설명하자면 TCP는 신뢰성이 높고 느리고, UDP는 신뢰성이 낮고 빠르다고 정리할 수 있다. 여기서 말하는 신뢰성이란 데이터 패킷을 유실하지 않고 송수신 하는 측에 전달할 수 있는지를 말한다.
TCP는 3 Way Handshake를 통해 통신을 진행하기 때문에 데이터의 신뢰성이 높은 대신 느리다는 단점이 있다.
UDP를 사용하는 HTTP/3는 이 핸드쉐이크 과정 자체를 날려버리고 다른 방법으로 연결의 신뢰성을 확보
한다.
비교를 하자면 TCP는 좋은 기능이 다 들어있는 무거운 라이브러리이고 UDP의 QUIC은 필요한 기능만 들어있는 라이브러리라는 것이다.
TCP 통신과 UDP 통신의 흐름 비교를 살펴보자.
UDP는 첫 핸드셰이크 때 연결 정보와 함께 데이터를 전부 전송하기 때문에 굉장히 빠르다는 것을 알 수 있다.
사실 웹 3.0이랑 HTTP/3.0 을 헷갈렸었다. 흥미를 가진 건 웹 3.0인데 웹 3.0은 마케팅 방식에 가깝고 HTTP/3.0은 메카니즘 기술이라 둘은 완전히 다른 개념인 것을 정리하면서 알게 되었다. 그래도 재밌었으니 됐다...
출처
- 그림으로 배우는 Http Network Basic
- 위키피디아
- 블로그