왜 HTTP/2인가? (HTTP/1.1의 한계)

기존 HTTP/1.1 에서는 Connection 하나당 한 건의 요청만 처리할 수 있게 설계되었다.

즉, 동시전송이 불가능하고, 요청과 응답이 순차적으로 이루어진다.

많지 않은 요청에서는 크게 문제 없겟지만, 리소스 개수가 늘어나면 늘어나는 만큼 요청이 완료될 때 까지 기다리는 시간이 늘어나게 된다.

즉 HOLB (Hold Of Line Blocking; 특정 응답 지연)이 생길 수 있다.

HTTP/1.1에서는 요청과 응답을 순차적으로 진행한다고 설명했다.

예를들어, a.png, b.png, c.png 파일을 순차적으로 받아온다고 생각하면

위와 같은 형태가 될 것이다.

근데 만약, a.png를 받아오는데 걸리는 시간이 길어지게 되면

위처럼 a가 끝날 때 까지 b와 c를 가져오지 못하는 경우가 생긴다.

이를 HTTP HOLB라고 한다.

또한, HTTP/1.1에서는 요청을 할 때 마다 TCP의 Three-way-Handshaking이 발생하는데 (하나의 connection에 하나의 요청을 기본으로 하기 때문), 이는 불필요한 RTT (Round Trip Time)이 증가하게 되고, 네트워크 지연으로 인해 성능저하가 발생할 수 있다.

이런 문제를 해결하기 위해 HTTP/1.1 에서는 여러 아이콘들을 하나의 이미지에 담아 좌표값을 계산하는 방식을 사용하기도 했다. (Image Spriting)