HTTPはHyperText Transfer Protocolの略称です。通常ポート番号は80番です。
おそらくHTTPは初心者でも見たことがあると思います。ブラウザを利用すれば必ず見ることができます。
HTTPに基づいて、ブラウザの動作を簡単に説明してみます。
まず、ブラウザでhttp://www.hoge.com/と打つと、www.hoge.comサーバーの80番ポートを探しにいきます。80番が開放されていれば、コネクションが確立します。そして、サーバーにHELLOと挨拶します。で、欲しいファイルを要求します。例のように打つとサーバーの初期設定ページ(index.htmlなど)を要求していることになります。
サーバーはそのファイルを転送してきます。これによりホームページが表示できるんです。
おそらく言葉で説明してもわかりづらいと思います。ここでBetterTelnetの登場なわけです。
ではBetterTelnetでHTTPを利用してホームページを見ます。
ここで疑問に思う人もいるかもしれませんが、Telnetクライアントはやろうと思えばどんなプロトコルも取り扱えます。ただ、プロトコルが自動化されないので、使用者が自分でプロトコルを打ち込む必要があるだけです。自分で打ち込むといっても、ほとんどの場合英単語なので、たいして大変ではありません。
ここでは、例としてぼくのホームページをTelnetで見てみましょう。
これは全く違法でもないですし、禁止もされてません。たんにブラウザがやってる事を自分の手でやるだけなんで、ネットにつなげられれば、だれでもできます。
BetterTelnetを立ち上げ、メニューの「File」から「New Connection…」を選択して、Host Nemに「www.linkclub.or.jp 80」とうち、Connectポタンを押します。
接続が確立されると、ウィンドウが表示されます。
このウィンドウに以下のように打ち込んでください。
Get /~sakito/public_html/index.html HTTP/1.1
Host: www.linkclub.or.jp
Connection: Keep-Alive
User-Agent: BatterTelnet
Accept-Charset: Shift_JIS,*,utf-8
Accept-Langage: ja
Accept: text/*, image/gif, image/jpege, image/png, */*
Referer: http://www.linkclub.or.jp/
(ここに改行をいれる)
これにより次の用にな文章が表示されるはずです。(実際と異なります。)
HTTP1.1/ 200 OK
Date: Mon, 1 Jan 2000 1:00:00 GMT
Server: FreeBSD/3.4
Content-Type: text/html
(改行がはいる)
(ここからHTMLソースが表示される)
当然BatterTelnetにはタグを解釈する機能はないので、表示がおかしいと思いますが、どうなっているかなんとなく理解できるはずです。
上の方法で上手く行かない場合は、
Get / HTTP/1.0
Host: www.linkclub.or.jp
(ここに改行をいれる)
のようにしてみてください。LinkclubのホームページのトップのHTMLソースが得られます。
では、ホームページを表示できたので、各命令に関して詳しく説明します。説明の前に再度命令を書いておきます。説明の便宜のために行数も書いておきます。
1:Get /~sakito/public_html/index.html HTTP/1.1
2:Host: www.linkclub.or.jp
3:Connection: Keep-Alive
4:User-Agent: BatterTelnet
5:Accept-Charset: Shift_JIS,*,utf-8
6:Accept-Langage: ja
7:Accept: text/*, image/gif, image/jpege, image/png, */*
8:Referer: http://www.linkclub.or.jp/
9:(ここに改行をいれる)
Getで始まる1行目を「リクエストライン」と呼びます。これにより、転送して欲しいテキストファイルをサーバーに伝えています。
リクエストラインは次の様な書式になります。
メソッド(半角スペース)リクエストURI(半角スペース)HTTPバージョン
「メソッド」ではデータ転送の手法を指定します。またHTTPには0.9、1.0、1.1のバージョンがあり、サーバーがそのバージョンに対応していないと利用できないメソッドがあります。
HTTPのメソッドには以下の物が有ります。
メソッド | 説明 | 対応バージョン |
---|---|---|
GET | 指定したURIのデータを取得 | 0.9以上 |
HEAD | 指定したURIのデータのヘッダのみを取得 | 1.0以上 |
POST | 指定したURIへデータを登録 | 1.0以上 |
PUT | 指定したURIのにデータを保存 | 1.0以上 |
DELETE | 指定したURIからデータを削除 | 1.1以上 |
TRACE | リクエストメッセージを返答 | 1.1以上 |
OPTION | 利用可能オプション一覧を取得 | 1.1以上 |
説明ではよくわからなくても利用してみるとわかる場合もあります。
・2行目は、要求ホストの名前です。ホームページを見るには1行目と2行目しか実際は必要ありません。これ以外はオプションになってきます。
・3行目は、通常HTTPではデータを取得するとそこで接続を切ってしまいます。Keep-Alive指定を行うことにより、接続を維持できます。
・4行目のUser-Agentは一般には利用ソフトの名前です。Netscapeの場合「Mozila/4.7[ja](PPC;I)」などを自動的に送信してくれます。これで、掲示板などの書き込み時ブラウザが判明しています。
・5行目のAccept-Charsetは文字コードです。これを適切にしていしないとホームページが文字化けします。Netscapeなどは自動で判断してくれますが、Telnetの場合は指定する必要があります。しかし、この場合は指定しても実際にはほとんど意味がありません。
・6行目のAccept-Langageは言語指定です。Netscapeなどのブラウザはこれによりフォントを選択しています。Telnetではあまり意味がありません。
・7行目のAcceptは、メディアタイプを指定します。メディアタイプというのがよく分からないかもしれませんが、たとえばHTMLファイルにはtext/htmlというタイプ設定がされています。これは一種の取り決めですので、こまかく気にしない方がよいです。
・8行目のRefererは直前にいたホームページのURIを実際は書きます。Netscapeなどのブラウザはこれを自己の中に保持して置けます。このため、戻るとか進むボタンが利用できるのです。これを利用すれば、自分のホームページがどこからリンクされているのか簡単に分かります。
・9行目の改行は、HTTPの実行を指定しています。1行の改行からが実行の始まりと決まっているからです。
ほかにもNetscapeなどの高度なブラウザではいろいろなオプションを持っています。これはホームページを見るよりも、掲示板などの利用を便利にするためのものです。
簡単ですが、HTTPの応用的利用に関して説明します。
たとえばPOSTメソッドを利用すれば、掲示板に投稿する事が可能です。(以下の例は架空です)
POST /cgi-bin/bbs.cgi HTTP/1.1
Host: www.hoge.com
From: hoge@hoge.com
Content-Type: text/plain
Content-Length: 23
(改行)
またOPTIONメソッドではサーバーの機能が分かります。(以下の例は架空です)
OPTION /hoge.cgi HTTP/1.1
Host: www.hoge.com
From: hoge@hoge.com
(改行)
表示はサーバーによって違います。
Cookieを見ることもできます。Cookieというのは、個々のユーザーの情報をブラウザに蓄えておく機能です。この機能で、あなたが、そのページに何回ぐらいいっているのかが分かるわけです。企業系のホームページではCookieを利用しているサイトが多いので、TELNETで接続してみるとどのようなCookieを利用しているのか分かる場合があります。
Set-cookieという行があればそれがCookieを利用している証拠です。
さて、TELNETでHTTPをやってみていかに自分が普段情報を垂れ流しているか分かってきたと思い間す。普通にブラウザを利用する場合、おかしなことをすればほとんどの場合分かってしまうわけです。
これは、将来的には個人情報の面で何らかの問題が生じる場合もあり得ます。いろいろと知識を持っておいて損は有りません。