【入門編】HTTPステータスコード1xx(Informational)の役割と継続処理 – HTTPプロトコル・通信規格実践ガイド

HTTPの「ちょっと待ってね!」を理解する。1xxステータスコードの舞台裏

こんにちは!ネットワークの世界へようこそ。

普段、私たちがブラウザでWebサイトを見たり、アプリでデータをやり取りしたりするとき、裏側では「HTTP」という共通の言葉で会話が行われています。この会話の中で、たまに遭遇するのが「1xx(ワンエックスエックス)」というステータスコード。

200(成功!)や404(見つからない!)は有名ですが、この100番台は少し特殊な「調整役」です。今回は、この影の功労者たちが、ネットワークの現場でどんな役割を果たしているのか、郵便配達に例えて紐解いていきましょう。

—

1xxは「本番前の打ち合わせ」

HTTPのステータスコードは、サーバーからクライアント(ブラウザなど)への「返事」です。1xx系のコードは、「まだ途中だよ、準備中だから待っててね」という中間報告の役割を持っています。

例えるなら、巨大な荷物を郵便局へ持ち込んだときを想像してください。

1. あなた(クライアント): 「このクソ重い荷物を送りたいんだけど、受け取ってくれる?」
2. 郵便局員(サーバー): 「中身を確認しますね。……よし、受け入れ準備はOKです。続きをどうぞ!」
3. あなた: 「じゃあ、荷物を渡します!」

この「続きをどうぞ!」という合図がないまま、いきなり重い荷物を突き出されたら、郵便局員も困ってしまいますよね。この「あ、今準備するから、ちょっと待ってて!」を伝えるのが1xxの正体なんです。

—

主役の「100 Continue」:無駄な通信を減らす知恵

一番よく使われるのが「100 Continue」です。これは「リクエストの続きを送っても大丈夫ですよ」という合図です。

例えば、数ギガバイトある巨大なファイルをアップロードするとしましょう。もし、サーバーが「容量オーバーだ」とか「認証エラーだ」という理由で受け取り拒否する予定なのに、クライアントが律儀に全データを送り続けてしまったら……回線も時間も大損ですよね。

そこで、クライアントはまず「これから送るけど、いい?」という小さな手紙(ヘッダーのみ)を先に送ります。

100 Continue の流れ

1. クライアント: 「これだけのサイズのデータを送る予定だけど、送っていい?」(ヘッダーのみ送信)
2. サーバー: 「OK、準備できたよ!」(100 Continue を返す)
3. クライアント: 「じゃあ、本番データを送るね!」(データ本体を送信)

このように、100 Continueは「失敗するかもしれない無駄な送信を未然に防ぐ」ための、ネットワークにとって非常に経済的で賢い仕組みなのです。

—

「101 Switching Protocols」:会話の言語を変える合図

もう一つ、知っておくべき重要なものが「101 Switching Protocols」です。

これは「今の通信方式(プロトコル)から、別の方式に切り替えましょう」という合図です。例えば、普通のWebページ閲覧(HTTP)から、リアルタイムな双方向通信(WebSocket)に切り替えるときによく使われます。

「日本語で話していたけれど、ここからは暗号のような専門用語で話そうか」と、会議のルールそのものを変更するようなイメージですね。

—

現場でどう動く?:開発者が意識すべきポイント

実際にプログラミングでこの挙動を扱う際、多くのライブラリは裏側で自動的に100 Continueを処理してくれます。しかし、トラブルシューティングの際にはここを意識する必要があります。

例えば、Node.jsでサーバーを立てる際、以下のようなイメージで「継続」の合図を扱います。

// HTTPサーバーの簡易的なイメージ
const http = require(‘http’);

const server = http.createServer((req, res) => {
// クライアントが「Expect: 100-continue」を送ってきた場合
if (req.headers[‘expect’] === ‘100-continue’) {
// サーバー側で受け入れ可能かチェック
console.log(“クライアントから送信準備の打診がありました”);

// 「準備OKだよ」と伝える(これが100 Continue)
res.writeContinue();
}

// 続きのデータを受け取る準備
req.on(‘data’, (chunk) => {
console.log(“データを受信中…”);
});
});

server.listen(8080);

もし「1xx」が無視されたら?

初心者が陥りがちなのが、古いプロキシサーバーや、100 Continueに対応していない古い設備を通ることで、この信号がうまく届かないケースです。その場合、クライアントは「サーバーから返事がない……」と戸惑い、通信がタイムアウトしてしまうことがあります。

—

まとめ:一歩ずつ理解しよう

  • 1xx は「まだ途中だよ」という中間報告。
  • 100 Continue は「本番データを送る準備はいい?」という確認作業。
  • 101 Switching Protocols は「通信ルールの切り替え」の合図。

ネットワークエンジニアの仕事は、こうしたパケット同士の「会話」を読み解くことです。最初は難しく感じるかもしれませんが、「相手と自分の間で行われる、人間味あふれる確認作業」だと考えると、少し親近感が湧いてきませんか?

次にブラウザの「開発者ツール(F12)」を開いたとき、ネットワークタブで100番台の数字を見かけたら、「お、今まさに打ち合わせ中なんだな」と優しく見守ってあげてくださいね。

また次回の記事で、お会いしましょう!

コメント

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