Skip to content

Latest commit

 

History

History
40 lines (27 loc) · 2.06 KB

HTTP3.md

File metadata and controls

40 lines (27 loc) · 2.06 KB

💡 HTTP/3

TCP 위에서 돌아가는 HTTP/2와 달리, HTTP/3은 QUIC 계층 위에서 돌아가며 UDP 기반으로 돌아간다.

HTTP/2보다 나은 점

HTTP/2는 TCP 위에서 스트림을 이용해 멀티플렉싱을 한다.
그런데 TCP의 선형적인 데이터 전송 특성으로 인해, 임의의 스트림이 느려지는 것이 다른 스트림에게 영향을 주는 HOL(Head Of Line) Blocking이 발생한다는 문제가 있다.

이렇게 되면 패킷 손실률이 높은 경우, 오히려 여러 TCP 커넥션을 사용하는 HTTP/1.1의 성능이 더 나을 수 있다.

UDP 기반 QUIC를 사용하는 이유

TCP의 비효율이라고 할 수 있는 Handshake나 HOL Blocking 문제가 있기 때문이다.
따라서 특정 스트림에서 데이터 손실이 발생해도 다른 스트림의 흐름을 막지 않는 UDP의 특성을 이용하면서, 그 위에 신뢰성을 보장해주는 QUIC를 만들어 사용한다.

QUIC도 신뢰성을 보장하기 위해 Handshake 과정이 있지만, TCP와 다르게 암호화와 통신을 위한 handshake 과정이 통합되어 있다.

따라서 첫 연결 설정에 1-RRT만으로 암호화된 데이터를 전달할 수 있기 때문에, 초기 연결 설정 시 지연 시간을 감소할 수 있다.

HTTP/3 특징

QUIC는 HTTP/2가 프레임 같은 데이터 유닛을 TCP의 추상화된 바이트 스트림을 통해 멀티플렉싱하는 것처럼, UDP에서 이렇게 동작하도록 해두었다. 즉, HTTP/2의 장점인 멀티 플렉싱을 가지고 간다는 것이다.

QUIC는 순방향 오류 매커니즘(FEC, Forward Error Correction)이 적용된다.

FEC
전송한 패킷이 손실되었다면 수신 측에서 에러를 검출하고 수정하는 방식으로, 열악한 네트워크 환경에서도 패킷 손실률이 낮다.

현재는 네이버 검색 서비스나 토스 페이먼츠, 구글 유튜브에 사용되고 있다.


References