HTTP/3의 등장

황씨·2022년 3월 13일
0

👀 알고 싶어요 새로운 기술!

최근 HTTP/3에 대한 기사가 많이 보여서 흥미를 가지고 관련 내용을 찾아보고 공부하며 재미있게 읽을 수 있도록 정리해보았다.

💬 서론

HTTP/1.1이 1999년에 공개된 이후 개정된 적이 없었지만, SPDY나 WebSocket 등의 등장으로 웹에서 적합한 프로토콜이라고 말할 수 없게 되었다. 하지만 내가 읽은 책에서는 HTTP/1.1을 표준으로 설명하고 있었다. 책은 2012년에 쓰여졌고 HTTP2은 2015년에 표준으로 지정되었기 때문이다. 그렇다면 HTTP/1.1과 2의 차이점은 무엇이고 3는 어떻게 등장하게 된 것일까?

🔎 HTTP/1.1의 문제점

HTTP/1.1은 한 Connection으로 하나의 Request밖에 보내지 못한다.

때문에 동시 전송이 불가능하고 모든 요청과 응답이 순차적으로만 이루어지게 되어, 이미지 파일 등을 처리하려면 리소스 개수에 따라 대기 시간이 길어지는 HOLB (Head of Line Blocking) 현상이 발생하게 된다.

✨ 더 나은 속도를 위한 HTTP/2

HTTP/2는 1.1 버전과 호환성을 유지하며 2.0 프로토콜을 사용할 수 있는 메카니즘이다. 앞서 말한 것처럼 HTTP/2가 등장하게 된 목적은 사용자가 웹을 이용할 때 체감 속도를 개선하기 위해서이다.

다음과 같은 방법들을 이용하여 지연 시간을 감소시켜 웹 브라우저의 페이지 로드 속도 개선한다.

  • HTTP 헤더 데이터 압축

  • 서버 푸시 기술

  • 요청을 HTTP 파이프라인으로 처리

  • 한 커넥션에 여러 개의 메세지를 동시에 주고 받아 HTTP 1.x의 HOLB 문제 해결

  • TCP 연결 하나로 여러 요청을 다중화 처리

  • 데스크탑 브라우저, 모바일 웹 브라우저, 웹 API, 웹 서버, 프록시 서버, 리버스 프록시 서버, 방화벽, 콘텐츠 전송 네트워크 등 자주 쓰이는 것들을 지원

모든 기능을 이해하기는 어렵지만 속도 개선과 사진, 동영상과 같은 데이터를 더 많이, 빠르게 보내기 위한 방법들이라고 알아두면 좋을 것 같다.

🌐 HTTP/2 브라우저 지원

크롬, 사파리, 파이어폭스 등 대부분의 브라우저에서 지원하고 인터넷 익스플로러는 11이 윈도우 10 OS에 한정되어 지원한다.

리빙 포인트 : 줄이어폰이 아니라 이어폰이고, 이어폰이 아니라 무선 이어폰인 것처럼 HTTP/1.1도 그냥 HTTP라고 부르는 사람들이 많다.


🌠 HTTP/3의 등장

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 프로토콜을 사용한 연결이다.

🔥 더x1000 빠른 속도를 추구하는 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는 첫 핸드셰이크 때 연결 정보와 함께 데이터를 전부 전송하기 때문에 굉장히 빠르다는 것을 알 수 있다.


그래서 HTTP/3가 자주 쓰일까?

  • 사실 한국에서 개발자들이 HTTP/2를 사용하든 HTTP/3를 사용하든 사용자들은 체감을 못 할 것이다. 그도 그럴 게 땅이 작고 통신 인프라가 잘 되어 있기 떄문에 핸드셰이크에 걸리는 시간까지 신경쓰지 않아도 충분히 빠르다. 하지만 상대적으로 통신 인프라가 빈약한 나라에서는 큰 차이가 느껴질 것 같다고 한다.
  • 간단하게 설명하느라 UDP의 장점만 얘기했지만, 문제점이 없을 수가 없다. 하지만 한계를 돌파하기 위해 TCP에서 UDP를 선택하고 갈아타려는 시도가 굉장히 좋은 것 같다.
    • GPU를 CPU처럼 쓰려고 했던 시도가 이와 비슷하지 않을까...

후일담

사실 웹 3.0이랑 HTTP/3.0 을 헷갈렸었다. 흥미를 가진 건 웹 3.0인데 웹 3.0은 마케팅 방식에 가깝고 HTTP/3.0은 메카니즘 기술이라 둘은 완전히 다른 개념인 것을 정리하면서 알게 되었다. 그래도 재밌었으니 됐다...

출처

profile
그냥 기록하기

0개의 댓글