【入門編】HTTP/2ストリームの概念とライフサイクル – HTTPプロトコル・通信規格実践ガイド

「一本の道で大渋滞?」はもう古い。HTTP/2の「ストリーム」でWeb通信をスマートにこなそう!

こんにちは!ネットワークの世界へようこそ。
普段、何気なくブラウザでWebサイトを見ているとき、裏側で何が起きているか想像したことはありますか?

かつて、Webの世界では「HTTP/1.1」というルールが主流でした。これは、お店のレジが一つしかなくて、前の人が買い物を終えるまで後ろの人が待たされるような、少しもどかしい仕組みでした。

しかし、今のWebはもっと賢い。今回は、その立役者である「HTTP/2のストリーム」という概念を、身近な例えを交えて紐解いていきましょう!

—

1. 「ストリーム」って一体なに?

HTTP/2の最大の特徴は、「一本のTCP接続(道路)を、複数の車線に分割して使う」ことです。

ここで登場するのが「ストリーム」という考え方。難しく考えず、こうイメージしてみてください。

  • 一本の道路(TCP接続): あなたの家からWebサーバーまでの物理的な回線。
  • ストリーム: その道路の中に作られた、「論理的な個別の専用レーン」。

これまでは、「HTMLを送る」→「画像を送る」→「CSSを送る」というように、順番待ちが必須でした。しかし、ストリームを使えば、一つの接続の中で「HTML用のレーン」「画像A用のレーン」「画像B用のレーン」を同時に動かせるようになったんです。これを専門用語で「マルチプレクシング(多重化)」と呼びます。

—

2. ストリームの「一生(ライフサイクル)」を追ってみよう

ストリームは、生成されてから消えるまで、まるで生き物のように状態を変えていきます。郵便配達のやり取りに例えてみましょう。

① 生成(Open)

あなたがWebサーバーに「この画像ちょうだい!」とリクエストを送る瞬間、新しいストリームが「新規作成」されます。ここでストリームにはID(通し番号)が振られます。

② アクティブ(Active)

リクエストを受け取ったサーバーが、データの断片(フレーム)をせっせと送り出している状態です。ブラウザ側も、送られてきた断片をパズルのように組み立てて、画像を表示する準備をしています。

③ 半クローズ(Half-Closed)

サーバーが「はい、画像データ全部送り終わったよ!」と伝えた状態です。まだ接続自体は生きていますが、サーバーからはもう送るものがありません。

④ クローズ(Closed)

ブラウザ側も「無事受け取ったよ、ありがとう!」と確認を終えたら、そのストリームは役目を終えて消滅します。お疲れ様でした!

—

3. 実務で役立つ「ストリーム」の観察方法

インフラエンジニアとして現場に出ると、「なぜか画像が表示されない!」「通信が途切れる!」というトラブルに遭遇します。そんなとき、ブラウザの「開発者ツール(F12キー)」を覗いてみましょう。

Chromeなどの「Network」タブを見てみてください。

開発者ツールで確認できる情報のイメージ
Name: logo.png
Status: 200
Protocol: h2 (これがHTTP/2の証!)
Priority: Highest
Stream ID: 13 <-- これが今使っている「ストリーム番号」です! もし通信が遅いと感じたら、「IDが何番のストリームで止まっているか?」を確認するだけで、「どのファイルのリクエストが詰まっているのか」という原因切り分けが驚くほど速くなります。

—

4. 最後に:一歩ずつ理解すれば大丈夫!

最初は「ストリーム? フレーム? HPACK?」と頭がパンクしそうになるかもしれません。でも、無理にすべてを一度に覚える必要はありません。

まずは、「一本の太いパイプの中に、小さな通り道をたくさん作って、みんなが同時に通行できるようにしたんだな」とイメージするだけで、ネットワークの解像度は格段に上がります。

今日の帰り道、Webサイトを開くときに「あ、今このブラウザの中で、ストリームたちが仲良く並走しているんだな」なんて想像してみてください。それが、ネットワークエンジニアへの第一歩です!

もし「もっと詳しいパケットの中身が知りたい!」という好奇心が湧いてきたら、またいつでもここへ戻ってきてくださいね。一緒に深掘りしていきましょう!

コメント

タイトルとURLをコピーしました