はじめに HTTP/3も出てきて今更感があるが、改めてHTTP/2についてまとめてみました。 HTTP1.1とその問題点 HTTP/2誕生前から使用されているHTTP/1.1では基本的には1つのリクエストが完了しレスポンスが返ってくるするまで、次のリクエストを送ることができません。 HTTPパイプラインという仕組みを使えばHTTP/1.1でも完了を待たずに、複数のリクエストを送信することが可能ですが サーバーはリクエストの順番通りにレスポンスを返さなければならないという制約があります。 3つのリクエストを送信して、 1つめのリクエストのレスポンスが最も重い場合は 2つめ以降のレスポンスが待たされる結果となります。 これをHTTP HOL Blockingといいます。 HTTP/1.1で速度を上げ場合には TCP接続を多重化するしかないです。では多重化する場合どこに問題があるのでしょうか?
![gRPCから見たHTTP/2 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/058e72a3d8a7625b48c56ff40c1e94f0749d5098/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9Z1JQQyVFMyU4MSU4QiVFMyU4MiU4OSVFOCVBNiU4QiVFMyU4MSU5RkhUVFAlMkYyJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz1jOWUzNTYxNjM3MTJlMGJhMGU4Y2UyNjc5NDUyODYxZQ%26mark-x%3D120%26mark-y%3D96%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDBtdXJvb24mdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWYwMjhlYTFjMTA2MGIwMmY1MWQ3MWU5MWYxMmNkNzFl%26blend-x%3D120%26blend-y%3D500%26blend-mode%3Dnormal%26s%3Dffdc595ccd43adb8b13f2fe59b59638a)