Multiplexing

Protocol

개요

멀티플렉싱은 하나의 연결 위에서 여러 요청·응답 스트림을 동시에 주고받는 기술로, HTTP/2의 핵심 개선입니다.

각 메시지를 프레임 단위로 쪼개 스트림 ID를 붙여 인터리빙하므로, 앞 요청의 완료를 기다리지 않고도 여러 리소스를 병렬로 전송할 수 있습니다.

자세히

HTTP/1.1은 한 연결에서 요청을 순차 처리했기에 브라우저가 오리진당 여러 개의 연결을 열어야 병렬성을 흉내 낼 수 있었습니다. HTTP/2는 단일 연결에서 스트림을 다중화해 이 트릭을 불필요하게 만들고, 헤더 압축(HPACK)과 스트림 우선순위·서버 푸시(현재는 대부분 폐기) 같은 기능을 더했습니다. 연결 수가 줄어 TLS 핸드셰이크와 혼잡 제어가 효율화됩니다.

중요한 한계가 있습니다. HTTP/2 멀티플렉싱은 애플리케이션 계층의 Head-of-Line 블로킹은 해결하지만, 여전히 단일 TCP 연결 위에 있으므로 TCP 계층에서 패킷 하나가 손실되면 그 뒤 모든 스트림의 데이터가 재전송을 기다리며 멈춥니다(전송 계층 HoL 블로킹). QUIC은 UDP 기반으로 각 스트림을 독립적으로 처리해 이 마지막 병목까지 제거했고, 그 위에서 동작하는 것이 HTTP/3입니다.

관련 타입