Entering Passive Mode

2006-08 - カテゴリ 'WWW' の記事

本体としてのフォームの送信

Fiddler

昨日は、URL の一部としてフォームを送信する例を見た。
これは、form 要素の action 属性が GET であったため、
HTTP の GET メソッドによって処理が行われたからである。

GET は Web サーバのデータを「取得」するのが目的であり、
フォームの送信によって登録や更新は発生しない。
つまり、これは「検索系」で利用されるメソッドである。

フォームの送信には、POST メソッドを使う方法もある。
POST の場合、Web サーバにデータを送信すると、
Web サーバで登録や更新作業が発生すると考えられる。
つまり、これは「更新系」で利用されるメソッドである。

URL の一部としてのフォーム送信

Fiddler 文字コード表

今日は Fiddler を使ってフォームの動作を眺めてみよう。
サンプルとして、用語辞典の Web サイト e-Words を使う。

■ IT用語辞典 e-Words
http://e-words.jp

まず Fiddler を起動し、上記のページにアクセスする。
e-Words のトップページの左上には、
「IT 用語検索」のシンプルなフォームがあるので、
これを題材にすることにしよう。

フォーム: 利用者からサーバへ情報を送る

WWW が公開されたのは 1991 年である。
初期の WWW は、HTML も HTTP も力不足であった。

HTML 1.0 にはフォームが存在しなかったため、
利用者は、Web サーバが用意した HTML に含まれる
ハイパーリンクを順に辿ることで情報を閲覧した。

現在の Yahoo や Google などを代表とする、
Web サイトを検索するサービスなどは、
初期の WWW では実現できなかったのだ。

HTML: 文書の論理構造

ここで少し HTTP を離れよう。

ユーザエージェントの代表的なものに Web ブラウザがある。
Web ブラウザは、利用者が容易にサーバ内を巡回するため、
取得した HTML を視覚的に表示する機能を持つ。

HTML は、Hyper Text Markup Language の略である。
超越文章記述言語とでも訳しようか。

HTML の大きな特徴は、別の URL を示すリンクである。
このリンク(ハイパーリンクとも呼ばれる)のお陰で、
1 つの HTML 文書から、他の文書へと、
順々にたどることができるのである。

HTTP と HTML

HTTP では、クライアントがリクエストを送信した後、
サーバが返信するというのが一連の流れとなる。
そのため、1 度の通信で取得できるのは、
基本的に 1 つのデータだけとなる。

http://www.efc-editor.org にアクセスすると、
Fiddler に複数の通信が表示されたが、
最初の通信は HTML を取得するためのものだ。

リクエストを送信した Web ブラウザは HTML を理解する。
そのため、受け取った HTML を解析し、
それを元に画面を作成して表示した。

ユーザエージェントの要求

今度は逆に、ユーザエージェントが送信した内容を見てみよう。

Web サイトへのアクセスには Web ブラウザを利用したが、
利用者が Web ブラウザ上で入力したのは、
http://www.efc-editor.org という URL だけだが、
実際には多数のデータが送信されていることが分かる。

    GET / HTTP/1.1

クライアントのリクエストでも、最初の行は特別だ。
この行はリクエスト行と呼ばれ、3 つの要素が含まれる。

Web サーバの応答

まずは、サーバの返信したデータから見てみよう。
見慣れた HTML の前に空行があり、
その上に数行の情報が追加されている。

    HTTP/1.1 200 OK

最初の行は、ステータス行と呼ばれ、
HTTP のバージョンと、要求の成否などの情報である。

最初の 「HTTP/1.1」により、
Web サーバがこの通信に使っている、
HTTP のバージョンが 1.1 ということが分かる。

Fiddler: HTTP デバッグツール

Fiddler

HTTP の通信内容を調べるのには色々な方法がある。
昔からよく行われているのは、
telnet を利用して直接対話してみるという方法だが、
これは今から学ぼうとする人にはちょいと敷居が高い。

例えば、プログラミングを学ぶ際に、
いきなりリファレンスを読み出す人は稀なわけで、
大抵は、サンプルコードを見ながらつ覚えていくだろう。

HTTP などの通信プロトコルを学ぶ際も同じことが言える。
まずは、サンプルを見ながら、
どういう風に通信が進んでいるか確認すれば良い。

通信の基本: HTTP

ネットワークには色々な通信規格があり、
それらは階層構造を成している。
その 1 つである HTTP は TCP ベースの通信規格である。

TCP は、クライアントとサーバの間で、
双方向にデータを送信することを可能とする
プラットフォーム(通信に関するフレームワーク)だ。
その挙動はよく電話に例えられる。

TCP のサーバは決まった IP とポートで待機しており、
クライアント側からサーバに接続し、
着信を受けたサーバが接続を受理することで通信が始まる。

Web にまつわるエトセトラ

さて、今まではコーディングを中心とした話題が多かったが、
次のネタは、技術をメインとしてみようかな。

では、複雑化してきている Web と、
その中で使われている多様な技術に着目してみよう。

インターネットという言葉が普及して約 10 年になる。
その中ですごい勢いで進化しているのが Web だ。

最近は何でもインターネットという時代になった。
色々な種類の Web サイトがあり、
多種多様なサービスを提供している。

このページのトップへ戻る
© 2008 Project Loafer/Project Fireball and all blog writers. Powered by Nucleus CMS