WWWその3
目次
情報の転送
WWW(World Wide Web)の3回目ではネットワークに直接関わってくるHTTP(Hyper Text Transfer Protocol)です。そのまま日本語で考えてみると、「ハイパーテキストを転送するためのプロトコル」ということですね。
HTTP
HTTPの階層構造は以下の通りです。
トランスポート層にはTCPを使い、ポート番号は80です。TCPを使うことによって、HTTPは信頼性のある通信を行うことが可能です。またフロー制御やエラー制御などもTCPに任せることができます。
基本的にHTTPはクライアント/サーバ型のプロトコルです。ブラウザでリンクをクリックすると、まず目的のWEBサーバに対してTCPコネクションの確立を行います。もちろん、TCPコネクションの確立の前にはDNSサーバにWWWサーバのホスト名を問い合わせてIPアドレスを求めてくるという手順が必要です。
TCPコネクションが無事に確立できれば、HTTPのやり取りが始まります。HTTPではクライアントからの要求コマンドとそれに対するサーバからの応答コードがやり取りされていきます。
次に示すのがクライアントからサーバに送られる主なHTTP要求コマンドと、サーバからクライアントに送る応答コードです。応答コードは3桁の数字です。
コマンド名 | 機能 |
GET | 指定されたURLのデータを取り出します。 |
HEAD | 指定されたURLのヘッダだけを取り出します。 |
POST | 指定したURLにデータを登録します。 |
PUT | 指定したURLにデータを保存します。 |
DELETE | 指定したURLのデータを削除します。 |
TRACE | 受信したリクエストをクライアントに戻します。 |
応答コード | |
100 | 継続 |
101 | プロトコル変更 |
200 | 成功 |
201 | 作成完了 |
400 | 不正なリクエスト |
401 | 認証されていない |
404 | URLが見つからない |
500 | サーバエラー |
HTTPによるファイル転送
これらの要求コマンドと応答コードのやり取りを表したのが次の図です。
クライアントからWWWサーバに対して、GETコマンドによって「このURLのファイルをください!」とお願いしています。それを受け取ったWWWサーバは指定されたファイルがあれば、「OKです」と返事をくれます。これは”200″という数字で返ってきます。そして、そのあとに該当のファイルをクライアントに対して送っていきます。クライアントは要求したファイルを受け取ると、それをブラウザが解釈して、実際のパソコンの画面に表示されます。
なお、要求コマンドや応答コードはそれぞれ一番最後に改行コードが入ります。改行コードは特別なASCII文字コードで”CR(0x0D)+LF(0X0A)”です。改行コードはプログラミングをされている方ならおなじみですね。また各URLなどのパラメータは空白で区切られます。
もし、指定したURLがなければどうなるか?
その場合はサーバから”404″という応答コードが返ってきます。これは誰もが一度は見たことがあるんじゃないかと思います。URLが間違っていたり、ページが移動していたりするときに返されてくるコードです。
以前は、こうした要求コマンドとそれに対する応答コードはHTMLファイルやGIF、JPGファイルごとにTCPコネクションを張ってやり取りしていたのですが、HTTP1.1になって1つのTCPコネクションで複数のファイルを要求できるようになっています。
TCP/IPのアプリケーションはHTTPのように、ASCII文字列のコマンドと応答コードのやり取りを行っているものが多いです。たとえば、FTPなども同じようにコマンドと応答のやり取りでファイル転送を行います。