TL;DR
Head-of-Line Blocking の略。列の先頭のデータが遅れたり失われたりすると、それに関係のない後ろのデータまで処理できずに待たされる現象。HTTP では、HTTP/1.1 のパイプライン化や、TCP 上の HTTP/2 で問題になった。
仕組み
HTTP/1.1 のパイプライン化
HTTP/1.1 のパイプライン化では、サーバはリクエストを受けた順にレスポンスを返す必要がある。そのため、1 つのレスポンスが遅れたり失われたりすると、それ以降のレスポンスも使えなくなる。HTTP/1.1 には多重化の仕組みがないので、並行してリクエストを送るには複数の TCP 接続を使うことが多い。
TCP 上の HTTP/2
HTTP/2 は 1 つの TCP 接続の上で複数のストリームを多重化する。しかし RFC 9114 によると、この多重化は TCP の損失回復の仕組みからは見えない。そのため、パケットが 1 つ失われたり順番が入れ替わったりすると、そのパケットに関係のないものも含め、すべての通信が止まる。
HTTP/3 と QUIC
HTTP/3 が使う QUIC は、ストリームの多重化とストリームごとのフロー制御を持つ。信頼性をストリームごとに、輻輳制御を接続全体で提供することで、HTTP の性能を改善している。