[Network] HTTP/2에서 multiplexing이란?

양유성
2 min readApr 7, 2019

multiplexing은 단순히 말해서 browser가 하나의 connection 상에서 동시에 여러 개의 request를 보내는 기술을 의미한다. 이 때, 받을 때의 순서는 신경쓰지않는다.

HTTP/1.1에서는 단순히 request를 순서대로 보내곤 했다. 웹사이트로 예를들어보자면, HTML, CSS, JS파일이 있을 때, HTML요청하고, HTML받으면 CSS요청하고, CSS받으면 JS요청하고… 이렇게 작동했다는 것이다. 기본적으로 synchoronous하게 작동한다는 의미다.

초반에는 서버와 클라이언트 사이의 거리가 좁았으니 문제가 없었을테지만, 인터넷이 대중화되며 다른 국가간의 서버 연결또한 잦아지게 되었다. 단순히 데이터 하나 전송하는데 걸리는 시간이 100ms라고 치면, 파일 10개만 받아도 1000ms가 걸린다(웹페이지 하나 로딩하는데 왜 파일 10개를 받냐? 라고 반문할 수도 있지만, 여기서 파일이라는건 index.html 뿐 아니라 내부의 모든 이미지 및 컨텐츠를 포함한다).

그래서 HTTP/1.1에서 새로운 접근 방법이 나오는데, 바로 connection을 여러개 맺어서 동시에 파일을 받는 것. 하지만 이 경우에도 커넥션끼리의 정보를 주고 받는 문제라던가, 너무 많은 컨텐츠를 소비하는 문제 같은 것들이 발생한다.

따라서 HTTP/2에서는 multiplexing이라는 방식을 채택하였다. 동시에 여러 개의 컨텐츠를 받는 것은 동일하지만, queue와 같은 기술을 통해서 하나의 connection만으로 컨텐츠를 동시에 받을 수 있도록 하는 것이다.

아래 홈페이지를 참고하여 애니메이션을 통해 더 쉽게 알아볼 수 있다.

참고 사이트 : https://stackoverflow.com/a/36519379

--

--