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なども同じようにコマンドと応答のやり取りでファイル転送を行います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA