TCP vs QUIC
HTTP/2의 남은 HOL은 TCP 손실 복구에서 온다
HTTP/2는 여러 스트림을 한 TCP 연결에 올린다. 패킷 손실이 생기면 TCP의 순서 보장 때문에 뒤 바이트 전달이 함께 멈출 수 있고, HTTP/3는 QUIC 스트림으로 이 영향을 줄인다.
HTTP/2 over TCP: 손실된 바이트 앞뒤 순서 때문에 여러 스트림이
대기
HTTP/3 over QUIC: 손실은 주로 해당 QUIC 스트림에 국한
혼잡 제어와 애플리케이션 의존성은 여전히 성능에 영향
HTTP/2 + TCP
하나의 순서 있는 바이트 스트림
TCP 전달 순서
S1
S3
손실
S5 대기
S1 대기
손실 구간을 재전송받기 전까지 뒤쪽 바이트를 애플리케이션에 넘기기 어렵다.
HTTP/3 + QUIC
스트림별 손실 복구
QUIC 스트림
S1 진행
S3 진행
S5 손실
S5만 대기
S1 완료
손실된 스트림은 복구를 기다리지만 다른 스트림은 독립적으로 전달될 수 있다.
HTTP/2HTTP HOL 완화
프레임 멀티플렉싱으로 요청/응답 순서 대기를 줄인다.
HTTP/3TCP HOL 제거
TCP 대신 QUIC을 사용해 스트림 간 전송 계층 대기를 줄인다.
QPACK압축도 재설계
HTTP/3는 HPACK 대신 QPACK으로 out-of-order 전달 환경을 다룬다.