最近の記事
- 4/22 - 思い出の紙時計
- 3/29 - さくらインターネットの VPS リニューアル
- 3/19 - SSHD への攻撃を分析してみた
- 3/9 - キーボードの過酷さ
- 3/8 - .NET のパフォーマンスについて
- 3/7 - phpMyAdmin への攻撃
- 3/1 - ミイラ取りがミイラになりかけた
- 2/22 - URL を知らなければ安全だと?
- 2/16 - 決意
- 1/30 - ルーターの UPnP 対応状況
Entering Passive Mode
昨日は、URL の一部としてフォームを送信する例を見た。
これは、form 要素の action 属性が GET であったため、
HTTP の GET メソッドによって処理が行われたからである。
GET は Web サーバのデータを「取得」するのが目的であり、
フォームの送信によって登録や更新は発生しない。
つまり、これは「検索系」で利用されるメソッドである。
フォームの送信には、POST メソッドを使う方法もある。
POST の場合、Web サーバにデータを送信すると、
Web サーバで登録や更新作業が発生すると考えられる。
つまり、これは「更新系」で利用されるメソッドである。
今日は 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 では実現できなかったのだ。
ここで少し HTTP を離れよう。
ユーザエージェントの代表的なものに Web ブラウザがある。
Web ブラウザは、利用者が容易にサーバ内を巡回するため、
取得した HTML を視覚的に表示する機能を持つ。
HTML は、Hyper Text Markup Language の略である。
超越文章記述言語とでも訳しようか。
HTML の大きな特徴は、別の URL を示すリンクである。
このリンク(ハイパーリンクとも呼ばれる)のお陰で、
1 つの 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 つの要素が含まれる。
まずは、サーバの返信したデータから見てみよう。
見慣れた HTML の前に空行があり、
その上に数行の情報が追加されている。
HTTP/1.1 200 OK
最初の行は、ステータス行と呼ばれ、
HTTP のバージョンと、要求の成否などの情報である。
最初の 「HTTP/1.1」により、
Web サーバがこの通信に使っている、
HTTP のバージョンが 1.1 ということが分かる。
HTTP の通信内容を調べるのには色々な方法がある。
昔からよく行われているのは、
telnet を利用して直接対話してみるという方法だが、
これは今から学ぼうとする人にはちょいと敷居が高い。
例えば、プログラミングを学ぶ際に、
いきなりリファレンスを読み出す人は稀なわけで、
大抵は、サンプルコードを見ながらつ覚えていくだろう。
HTTP などの通信プロトコルを学ぶ際も同じことが言える。
まずは、サンプルを見ながら、
どういう風に通信が進んでいるか確認すれば良い。
ネットワークには色々な通信規格があり、
それらは階層構造を成している。
その 1 つである HTTP は TCP ベースの通信規格である。
TCP は、クライアントとサーバの間で、
双方向にデータを送信することを可能とする
プラットフォーム(通信に関するフレームワーク)だ。
その挙動はよく電話に例えられる。
TCP のサーバは決まった IP とポートで待機しており、
クライアント側からサーバに接続し、
着信を受けたサーバが接続を受理することで通信が始まる。
さて、今まではコーディングを中心とした話題が多かったが、
次のネタは、技術をメインとしてみようかな。
では、複雑化してきている Web と、
その中で使われている多様な技術に着目してみよう。
インターネットという言葉が普及して約 10 年になる。
その中ですごい勢いで進化しているのが Web だ。
最近は何でもインターネットという時代になった。
色々な種類の Web サイトがあり、
多種多様なサービスを提供している。