連載
» 2016年05月11日 05時00分 UPDATE

リトライ! 触って学ぶTCP/IP(4):「HTTP」の仕組みをおさらいしよう(その3) (1/4)

ネットワークの基礎を支えるTCP/IPを基本から学び直す本連載。第4回では、HTTPのリクエストやレスポンスのヘッダについて、さらに詳しく解説していきます。実際の通信内容を見ながら、理解を深めましょう。

[福永勇二(インタラクティブリサーチ),@IT]
「リトライ! 触って学ぶTCP/IP」のインデックス

連載目次

新サンプルサイトを用意しました!

 HTTPでのやりとりを見るサンプルとして、前回までは@ITのWebサイトを取り上げてきましたが、より細かいやりとりを確認できるように、筆者が独自に新たなサンプルサイトを用意しました。今回からは、このサンプルサイトも使いながらHTTPの動作確認を進めましょう。

 新しいサンプルサイトのサーバ名は「ait-sample.list.jp」です。また、GETする対象の位置は「/rtcp/p00/」などに変わります。Webサーバに対するリクエストの方式は、これまでと同様ですので、分からない方は過去の回をご覧になってください。

「プロトコルビュワー」差し替えのお願い

 本連載では、「プロトコルビュワー」という専用ツールを用いて、HTTP通信の仕組みを解説しています(プロトコルビュワー未導入の方は、始めに第1回を参考に、インストールを行ってください)。

 今回、新しいサンプルサイトの準備に伴い、旧プロトコルビュワーをお使いの方は、新バージョンへの差し替えをお願いします。今回の修正には、「デフォルト通信先の新サンプルサイトへの差し替え」「動作に影響のない細かな修正」が含まれています。

 差し替えには、まずこちらからzipファイルをダウンロードしてください。次に、ダウンロードしたファイルを展開し、中の「index.html」と、既存のプロトコルビュワーが入っているフォルダ内のindex.htmlを置き換えてください。なお、このときプロトコルビュワーが起動していれば、いったん終了し、あらためて起動し直してください。

 なお、まれにセキュリティソフトがこのアプリに反応することがあるようです。その場合は、いったん自動保護を無効にしてから、再度有効に設定することで、通常状態に戻る場合があります。

 また、このアプリは、「個人で本連載の内容を試してみる」目的に限り、自由に使っていただけます。それ以外の目的での使用や再配布については、こちらまでお問い合わせください。このアプリを使用することで万一何らかの不利益などが発生したとしても、筆者は責任を負いかねます。あくまで自己責任の下でご利用いただきますようお願いいたします。

 それではここであらためて、新しいサンプルサイトに対して、GETメソッドを使って情報取得を試みてみましょう。@ITのWebサイトに比べて、サイトの内容がとても単純ですので、より全体構造を見通しやすいはずです。ちなみに、Webブラウザでアクセスする場合のURLは「http://ait-sample.list.jp/rtcp/p00/」です。

図1 HTMLを読み出したときのプロトコルビュワー画面 図1 HTMLを読み出したときのプロトコルビュワー画面
図2 Webブラウザで表示したときの様子 図2 Webブラウザで表示したときの様子

対象名を省略したときのデフォルトドキュメント

 さて、ヘッダの話に入る前に、ここでGETする対象の指定方法について少し補足しておきます。GETメソッドでは、取得する対象のファイル名を明示する形式の他に、ファイル名を省略する形式も許可されています。例えば、上記の「/rtcp/p00/」には、階層を示すディレクトリ名(rtcpとp00)は含まれていますが、具体的なファイル名は示されていません。

 このようにファイル名を明示しない場合には、あらかじめWebサーバに設定されている「デフォルトドキュメント」が指定されたものと見なされます。デフォルトドキュメントには、慣習的に「index.html」「index-j.html」「index.htm」「default.htm」などが使われます。例えば、デフォルトドキュメントがindex.htmlだとすると、ファイル名を省略して「/rtcp/p00/」と指定した場合には、「/rtcp/p00/index.html」が読み出されます。

 なお、多くのWebサーバは複数のデフォルトドキュメントを指定できるようになっており、そのいずれかに該当するものがディレクトリ内に存在すれば、それをデフォルトドキュメントとして扱います。また、該当するファイルが複数存在する場合のために、どれを優先するかの優先順位も併せて決めておくのが一般的です。

 例えば、下図のように「/rtcp/p00」ディレクトリの中に「aaa.html」「bbb.html」「default.htm」「index.html」の4つのファイルがあるとします。また、このサーバでは、デフォルトドキュメントに、(1)index.html、(2)index-j.html、(3)default.htmの順に優先順位が設定されています。

図3 デフォルトドキュメントが決まるまでの流れ 図3 デフォルトドキュメントが決まるまでの流れ

 このとき、「GET /rtcp/p00/ HTTP/1.1」とリクエストすると、Webサーバは、ディレクトリ「/rtcp/p00」の中でデフォルトドキュメントを探します。その結果、1つだけ該当するものがあればその内容を返します。また、該当するものが複数ある場合には、そのうち最も優先順位が高いものを1つ選び、その内容を返します。この図の例では、index.htmlの内容が返されることになります。

 ちなみに、多くのWebサイトのURLが、「http://www.atmarkit.co.jp/」といった形式で表記されますが、これも対象のファイル名を省略した表記です。そのため、上記の考え方に沿ってデフォルトドキュメントが読み出されることになります。

       1|2|3|4 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。