Computer Network 3 Document 12
通信ネットワーク実習3第12回補足資料

8.5 WWW (World Wide Web)

8.5.1 インターネットブームの火付け役

装飾のない文字列だけからなるデータをテキストという もともとコンピュータはテキストを扱うように設計されていた. テキストの一部に他の関連するテキストへジャンプするための ハイパーリンク(または単にリンク)を 設定し,テキストからテキストへリンクを辿って自由に移動できるシステムを ハイパーテキストとよぶ. 現在のコンピュータは画像や動画などの マルチメディアを扱えるためにハイパーテキストを拡張して ハイパーメディアとよばれることもある.

世界中にハイパーテキストを公開するサーバーを設置し, クライアントアプリケーションを使ってハイパーテキストを 閲覧できる仕組みがWWW(World Wide Web)である. WWW のサーバーをウェブサーバー,クライアントを ウェブブラウザという.

ユーザーはウェブブラウザでリンクをマウスでクリックする だけでハイパーリンクの仕組みを使って他のサーバーの ハイパーテキストへジャンプし,世界中のウェブサーバーを 渡り歩くことができるという簡単で直感的な操作のために 急速に人気が高まった. また,実用的な意味では世界中にある膨大なハイパーテキストから必要な ものを探し出すサーチエンジンの存在も WWW の普及に 重要な役割を果たした.こうして WWW は インターネットブームの火付け役となった.

TCP/IPで動作する世界規模のネットワークそのものが インターネットだが,インターネットブームのなかで WWW の利用が占める割合は大きく,WWW だけをさして 「インターネット」とよぶ誤用が広まったほどである.

8.5.2 WWW の基本概念

WWWでは下の三つの定義が行われていてそれぞれ表12.1のように対応する.

表12.1 WWWの三つの定義

情報へのアクセス手段と位置の定義URI
情報の表現フォーマットの定義HTML
情報の転送などの操作の定義HTTP

8.5.3 URI (Uniform Resource Identifier)

URIは資源を表す識別子で,ウェブコンテンツだけに限らず広く一般的なものを 扱える(教科書p.316-317表8.7). URIのうち,ウェブコンテンツの場所を示すものがURLである.

ウェブコンテンツの基本的なURI(URL)は,大きく分けると スキームとサーバーとサーバー内でのファイルの位置の3つにわけられる. コロン「:」までが「スキーム」「://」から「/」までが「サーバー」 それ以降が「サーバー内でのファイルの位置」である(参考 RFC3986第3章).

それに加えて検索エンジンへの入力のようにパラメータの指示があると 「サーバー内でのファイルの位置」の後に「?」を置き,その後に 「変数名=値」の形式で書く.リンクを押したときにページの先頭ではなく 文書内の特定の位置にジャンプさせたいときはあらかじめ文書の ソースコードのジャンプ先の位置に "id=タグ名"の形でタグ名をセットしておき ジャンプ元のリンクURLの最後に「#タグ名」を追加する.

例えば,第2回補足資料の 図2.1付近のソースコードは図12.1 のようになっている. 図2.1が書かれているp(パラグラフ)要素に「fig2_1」というタグ がセットされているのがわかる.

 <p id="fig2_1">
  <img src="../img/fig2_1.png" alt="図2.1" width="450" height="144">
 </p>

図12.1 第2回補足資料の図2.1 付近のソース

第5回補足資料の冒頭に上のタグへのリンクがある.リンクの 部分のソースコードを図12.2に示す.

<p>
  <a href="cn3_02.html#fig2_1">第2回補足資料図2.1</a>
  で示したように,TCP/IP は OSI参照モデルという概略設計を実際に動く
  プロトコルに具体化したものという位置付けになる.
  OSI<strong>プロトコル</strong>も同じ位置付けで,ライバルにあたる関係だが,
  実際に普及したのは TCP/IP のほうである.
</p>

図12.2 第5回補足資料のジャンプ元のソース

こうすることで「第2回補足資料図2.1」の部分をクリックすると 第2階補足資料の冒頭ではなく図2.1の部分へジャンプする.

8.5.4 HTML (HyperText Markup Language)

HTML はリンク機能やマルチメディア扱えるハイパーテキスト を記述する文法である.

HTML の説明でよく「<H1>タグは文字を大きくするタグ」 というような説明がある,結果的にそうなっているだけで,HTMLの 設計思想としては正しい説明ではない. HTMLは「ハイパーテキスト」「マークアップ」するという設計思想で 作られている.つまり文書の中で,これは「見出し」これは「本文」 という文章構造上での位置付けを「マークアップ」することが本質で, それによって結果的に見出しが大きく表示され(<H1>は大見出しで あることを示す),本文は小さく表示される. 「文章構造での位置付け」と「見栄えのコントロール」を分離することで スマートフォンからのアクセスであれば自動的に適当な大きさで表示する, ということがやりやすくなる利点がある.

HTML はハイパーテキストの表現形式を規定するものだから, OSI 参照モデルでは第6層のプレゼンテーション層にあたる。

XMLはタグで要素をマークアップする,HTMLと似た構造の言語である. HTML は人間の手でソースを記述することも念頭に置かれたものであるが, XML はデータのフォーマットを柔軟に規定できる特徴をもち, 主にアプリケーション間でデータをやりとりするときの フォーマットとして利用される.

アプリケーションプログラムが動作するために必要な 環境をプラットフォームという.この場合,ハードウェアとOS, ミドルウェアと「プログラム実行環境」からなる.プログラム実行環境 はアプリケーションプログラムの命令を,動作させるコンピュータのOS, ハードウェアで動作するように変換して実行する仕組みである.

Java コンパイラは統一したJava仮想マシン(JVM: Java Virtual Machine) に対する命令を生成する. 仮想マシンへの命令をプラットフォームごとに適切な命令に変換する プログラム実行環境(JRE: Java Runtime Environment) を用意して動作させる.このため,Java アプリケーションは同じものを 異なるプラットフォームで使用できる利点がある.

HTML5 で文書構造を指定し,CSS3でデザインを指定することで 両者の指定が明確に分離される.HTMLの元々の設計思想である文書構造を 指定する言語という性格が強調される.

8.5.5 HTTP (HyperText Transfer Protocol)

HTTP はOSI参照モデルでは第7層のアプリケーション層のプロトコルである (教科書p.79).TCP/IPの階層モデルではアプリケーション層の プロトコルになる(教科書p.295).

HTTP は下位層のトランスポート層としてTCPを使う. 標準でHTTPに割り当てられたポート番号は80番である. ウェブサーバーソフトウェアが動作しているホストの 80番ポートへの通信があればウェブサーバーソフトウェア に渡され,送信元のホスト,ポート番号へレスポンスを返す.

HTTP は標準ではクライアントの状態を保持しない. これは,ネットショッピングサービスのように ユーザーの操作によりカートの中のものが変わってゆく ようなアプリケーションを作るにはユーザーの状態を 保持する工夫が別に必要であることを意味する. ユーザーの状態保持は「クッキー」と呼ばれるデータをユーザーに保管させ, 再接続のときに送らせることで行われている.

HTTP ではユーザークライアント間では教科書p.320図8.18 のようにテキストでメッセージがやりとりされている. ブラウザはサーバーのアプリケーションと自動的に メッセージのやり取りを行なって,ウェブコンテンツのデータを 受け取り,整形して画面に表示する.メッセージは テキストで送られるので教科書p.322囲み記事にあるように telnet コマンドでブラウザのシミュレーションを行うと メッセージを実際に確認できる.

HTTP では送受信データは暗号化されないため,傍受される 可能性がある.かわりにHTTPS を使うことで送受信データを 暗号化できる.HTTP では Basic 認証でパスワードを 知っているユーザーしかアクセスできないコンテンツを 作ることができるが,HTTP で Basic 認証を行うと ユーザーが入力したパスワードが平文で流れてしまうので HTTPSを使うべきである.

HTTP の使われ方が広がったのでより高速な通信ができるように HTTP/2,HTTP/3 が開発されている.


Updated in July 30, 2020, Yamamoto Hirosh