520 likes | 600 Views
ネットワークアーキテクチャ 第 07 回 (2003/11/26) 「 WWW のアーキテクチャ」. 村井 純. 09/29 (1) 講義概要 / インターネットのアーキテクチャ 10/06 (2) もうインターネットを分かっちゃおう 10/13 体育の日 10/20 (3) DNS のアーキテクチャ 10/27 (4) インターネット自動車のアーキテクチャ 11/03 文化の日 11/10 (5) SOI のアーキテクチャ 11/17 (6) メールのアーキテクチャ 11/24 勤労感謝の日の振替休日
E N D
ネットワークアーキテクチャ第07回(2003/11/26)「WWWのアーキテクチャ」ネットワークアーキテクチャ第07回(2003/11/26)「WWWのアーキテクチャ」 村井 純 Network Architecture 2003f
09/29 (1) 講義概要/インターネットのアーキテクチャ09/29 (1) 講義概要/インターネットのアーキテクチャ 10/06 (2) もうインターネットを分かっちゃおう 10/13 体育の日 10/20 (3) DNSのアーキテクチャ 10/27 (4) インターネット自動車のアーキテクチャ 11/03 文化の日 11/10 (5) SOIのアーキテクチャ 11/17 (6) メールのアーキテクチャ 11/24 勤労感謝の日の振替休日 11/26(7)WWWのアーキテクチャ<-(水曜日) 12/01 (8) セキュリティーのアーキテクチャ 12/08 (9) インターネット上の様々なサービスを見てみよう 12/15 (10) P2Pとオーバレイネットワーク 12/22 (11) これからのネットワークアーキテクチャ(1) ~ 冬休み 01/08 (12) これからのネットワークアーキテクチャ(2) <-(木曜日) 01/12 成人の日 01/19 (13) 最終試験 2003年度秋学期授業日程 (最新情報はSoI*で確認してください) 今日はここ Network Architecture 2003f
今日のお品書き • WWWのアーキテクチャ • WWWのプロトコル(HTTP) • メールの拡張 • メールのセキュリティー Network Architecture 2003f
インターネットでの情報公開 Network Architecture 2003f
前回のおさらい • メールは、指定した個人やグループにデータを届けることが出来た • 不特定多数の人に情報を伝えたい • 色んな種類のデータを取り扱えるようにしたい • 相手からのフィードバックも受けたい →どうするの? 特定の個人 メール マルチメディアデータ ? ? 特定のグループ フィードバック Network Architecture 2003f
情報を公開したい! • 自分の情報を他の人に見てほしい! • 実世界ではどうする? • 回覧板に書いて回し読む • チラシをばらまく • みんなが見ている(例:α館)掲示板に貼り付ける • インターネットでは? • 管理者も閲覧者も分散している。 • 集中して管理しているところがない。 Network Architecture 2003f
WWW: World Wide Web • クライアント・サーバ型の情報公開システム • 世界規模の分散型データベース • 公開者は、リソース(文書、画像、プログラム等)をHTTPで取得できるようにする。 • リソースから別のリソースにハイパーリンクする。 • 相互にリンクを張り合う様子を絵に描くと「クモの巣」の様に見える。 • World Wide Web:世界中に張り巡らされたクモの巣 Network Architecture 2003f
WWWのアーキテクチャ ファイルの中身を送るね! www.sfc.wide.ad.jp HTML WWWブラウザ 表示 HTTP URL http://www.soi.wide.ad.jp/が見たい! Network Architecture 2003f
ハイパーリンク www.sfc.keio.ac.jp www.mitasai.com ハイパーリンク 三田祭へのリンク Network Architecture 2003f
WWWのアーキテクチャ Network Architecture 2003f
WWWを構成する要素技術 • WWWは三つの機能からなりたっている。 • 識別子:URI(Uniform Resource Identifier) • ファイルの場所を示す • 転送方式:HTTP(Hyper Text Transfer Protocol) • 示した場所のファイルを転送する • 記述言語:HTML(Hyper Text Markup Language) • 転送されたファイルを整形して表示する Network Architecture 2003f
URL: Uniform Resource Identifier • リソース(資源)を示す識別子 • 特にリソースの場所を示すものをURLと呼ぶ。 http://www.soi.wide.ad.jp:80/contents.html サーバのホスト名 パス・データ名 ポート番号省略時はスキームの初期値(HTTPなら80)に従う スキームアクセスに使うプロトコル プロトコル・サーバ名・サーバ内のファイルの場所の三つによってファイルを一意に特定する。 Network Architecture 2003f
HTTP: Hyper Text Transfer Protocol • URIの示すファイルを転送する。 • リクエストとレスポンスという単純な構造からなる。 • いくつかのメソッドによって目的を指示する。 • GET (ファイルの取得) • POST (情報の更新) • PUT (ファイルの送信) • ステートレス(状態を保持しない)である。 • ファイルの種類や更新日付などの情報を付ける事ができる。 Network Architecture 2003f
HTTPメッセージ例: http://www.soi.wide.ad.jp/ HTTPリクエスト GET / HTTP/1.1 ←メソッド、ファイル名、プロトコルHost: www.soi.wide.ad.jp ←接続しようとしているサーバ名 ←空行で終了 HTTPレスポンス HTTP/1.1 200 OK ←プロトコル、ステータスコードDate: Fri, 21 Nov 2003 00:20:23 GMT ←現在時刻Server: Apache/1.3.26 (Unix) ←サーバのソフトウェア名Last-Modified: Mon, 06 Oct 2003 12:49:46 GMT ←最終更新時刻ETag: “10173-3c4-3f8164ea“ ←内容が変わると変化する固有値Accept-Ranges: bytes ←取得範囲を指定できるかどうかContent-Length: 964 ←ファイルサイズ(964bytes)Content-Type: text/html ←ファイルの種別(HTML形式) ←空行でヘッダの終了<!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 3.2//EN”><HTML> ←以降はHTMLドキュメント内容 Network Architecture 2003f
HTTPによるやりとり例(GET) WWWブラウザ WWWサーバ GET /index.html 内容 /index.html に含まれる画像をみつける。 • /picture/wide_big.gif • /picture/titlesoi.gif GET /picture/wide_big.gif 内容 GET /picture/titlesoi.gif 内容 画像を含んだページを表示する。 Network Architecture 2003f
更新成功 HTTPによるやりとり例(POST) WWWブラウザ WWWサーバ フォームの内容を送信 email: jun@sfc.keio.ac.jppassword: junjunmessage: おはようございます。 POST /form.cgiemail=jun@sfc.keio.ac.jppassword=junjun message=おはようございます。 情報の更新 更新結果 更新結果を表示する。 Network Architecture 2003f
HTTPの拡張 • ちょっと単純すぎるので色々拡張された。 • Cookie (RFC2965) • 閲覧者の識別子をページを跨いで保存する。 • 基本認証 (RFC2617) • 閲覧に必要なユーザ名とパスワードを送信する。 • 持続的接続(persistent connection) (HTTP/1.1) • 一回ごとに接続し直していると効率が悪いので、複数のファイルを接続を切らずに続けて転送する。 • 転送エンコーディング • 転送時に内容を圧縮したりする。 Network Architecture 2003f
HTML • Hyper Text Markup Language • 文書にしるしを付けて(マークアップ)、ハイパーリンクを可能とする記述方式 • CERN(欧州原子核研究機構)のTim Berners-Leeらが開発 • 元々、文書の構造や論理関係を定義することができる汎用言語としてISOによって標準化された「SGML」(Standard Generalized Markup Language)の一種 • 命令文は< >で挟まれた「タグ」によって表記される • 基本構造は、< tag name> 対象となるコンテンツ</tag name>という開始タグと終了タグの対になっており、ブラウザはこれを処理して表示する Network Architecture 2003f
HTMLの例 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"http://www.w3.org/TR/html4/strict.dtd"><html> ←文書の種類(HTML4.01) <html> ←HTMLの開始 <head> ←HTMLヘッダ <title>ネットワークアーキテクチャ第07回</title> ←ページのタイトル </head> <body> ←文書の内容 <h1>第07回 WWWのアーキテクチャ</h1> ←表題 <h2>今日のお品書き</h2> ←小表題 <p>今回はWWWのアーキテクチャです。</p> ←テキスト <p><a href="http://www.soi.wide.ad.jp/">SOIのトップページ</a> に戻る。</p> ←SOIのページにリンク </body> </html> ←HTMLの終了 Network Architecture 2003f
HTMLのアーキテクチャ 文書の種類はHTML4.01(文書型宣言) HTML文書 (html要素) ヘッダ (head要素) ネットワークアーキテクチャ第07回 (title要素:ページのタイトル) 本文 (body要素) 第07回 WWWのアーキテクチャ (h1要素:表題 レベル1) 今日のお品書き(h2要素:表題 レベル2) 今回はWWWのアーキテクチャです。 に戻る。 SOIのトップページ (a要素:http://www.soi.wide.ad.jp/にリンク) Network Architecture 2003f
WWWの拡張機能 Network Architecture 2003f
ここまでで… • 不特定多数の人に情報を公開する仕組みはできた! • でも相手の人たちはどんな人? • どちらかというと一方通行なコミュニケーション → もっとインタラクティブなコミュニケーションを取りたい! URL 表示するもの:WWWブラウザ www.sfc.wide.ad.jp HTTP 伝えたいデータ 表示 HTML ? OK NG Network Architecture 2003f
CGI: Common Gateway Interface • WWWサーバでプログラムを実行する機能 プログラムを実行 • 掲示板 • アクセスカウンター • データベースからの検索 プログラムに渡すオプションを送信 プログラムの実行結果を内容として返す Network Architecture 2003f
JAVAアプレット • WWWブラウザ上で動くJavaのプログラム • サーバに格納されたアプレットをクライアントのブラウザにダウンロードして実行することができる ブラウザに実装されたJava VMがプログラムを実行 プログラム自体をダウンロード 必要に応じて実行結果を送信 Network Architecture 2003f
REST: Representational State Transfer • Architectural Styles andthe Design of Network-based Software Architectures • HTTP/1.1の設計者R. Fieldingの博士論文 • Chap.5: Representational State Transfer (REST) • WWWのアーキテクチャをあらわしたもの • ウェブサイトが保持・公開しているリソースをURIによって示す。 • メソッド:PUT(作成)、GET(取得)、POST(更新)、DELETE(削除)よってリソースにアクセスでき、その処理結果が返される。 • リソースの現在の状態を表現(Representational State)し、それを転送する(Transfer)アーキテクチャ • SFCのトップページの含む情報をHTMLで表現し、それをURL(http://www.sfc.keio.ac.jp)として示す。 • 自分の課題をテキストで表現して、SOIの課題提出のURLから送信(POST)する。 Network Architecture 2003f
HTTPをとりまくアプリケーション Network Architecture 2003f
WWW上のアプリケーション Network Architecture 2003f
WWWは膨大なコンテンツを含んだデータベース • どうやって目的のコンテンツを見つける? • URLが分からない場合は? • 目的のサイトが頻繁に更新される場合は? たくさんのWWWサーバ 大量のWWWコンテンツ 頻繁な更新作業 欲しいデータ × URL どうやって探す? 更新はどうやったら分かる? Network Architecture 2003f
検索エンジン • 分散しているWWWサイトの検索機能を提供 • WWWサイトの内容を取得、データベースを作成 • 様々なメトリックから順序づけして表示 • 大別すると2種類に分かれる • 「ディレクトリ型検索エンジン」: • ロボットではなく人間ウェブサイトを審査 • カテゴリーごとにデータベースに登録 • 例:「Yahoo!」など • 「ロボット型検索エンジン」: • ロボットがウェブ上を自動的に巡回してデータを収集 • 構文解析プログラムなどでキーワードを抽出し、自動的にデータベースを作成する • 例:「Google」「goo」「Infoseek」など Network Architecture 2003f
Google PageRank™ • WWWのリンクを利用したページの評価 • 他からリンクされているページは良いページだ • 良いページからリンクされているページはもっと良い Network Architecture 2003f
アンテナ • 複数のサイトの最終更新時刻の取得・一覧 • 例:SFC Antenna X • 主に日記のような更新頻度の高いページに対して利用されている。 • HTTPヘッダの最終更新時刻やファイルサイズを見て更新時刻を判断 • ちょっと泥臭い。 Network Architecture 2003f
Weblog • Weblogあるいはblog • 定義は色々。 • 広義にはWeb上の日記のような更新頻度の高いサイト • 狭義には、あるトピック毎にURLを紹介してそれに対するコメントを書き、下のような技術によって相互言及を行うサイト • いくつかの面白い要素技術 • RSS:ウェブサイトの要約情報 • TrackBack:リンク先に対して言及した内容を送りつける • SFCでも最近流行りだしている(らしい)。 Network Architecture 2003f
要素技術1:RSSによる要約の提供 • RDF Site Summary • ウェブサイトの概要をメタデータとして記述する形式 • ページ毎のタイトルや内容の要約、更新時刻を提供 • 再利用性の向上 • 複数のウェブサイトからRSSを収集し、再利用 情報の集約 RSS RSS RSS 閲覧 RSS Network Architecture 2003f
要素技術2:Trackbackによる相互言及支援 • 自分がリンクを張った相手に、そのことを通知 • AさんがBさんの記事Cにリンクを張り、記事Dを追加 • BさんのウェブサイトにTrackback Ping(言及通知)を送信 • Bさんの記事Cから記事Dにリンクを張り返す リンクの張り返し 記事D Bさんご飯食べれば? ↑Bさんの記事Cへのリンク 記事C おなかすいたー!!!! 記事の追加 Trackback to 記事DBさんご飯食べれば? Aさん Trackback Ping(言及通知) Aさんのウェブサイト Bさんのウェブサイト Network Architecture 2003f
WebDAV (Web-based Distributed Authoring and Versioning) • HTTP1.1を拡張し、Webコンテンツなどの編集(Authoring)やリビジョン管理(Versioning)を行うことを目的に規定されたプロトコルの名称 • RFC2291で提唱、RFC2518で定義 コンテンツの閲覧 どちらも80番ポートを利用 コンテンツの編集 クライアント WebDAVサーバ Network Architecture 2003f
Webアプリケーション • RPC • SOAP • Amazon Network Architecture 2003f
WWWのセキュリティ Network Architecture 2003f
WWWにおけるセキュリティ • 通信路の暗号化 • SSL • ブラウザのセキュリティホール • 個人情報の保護 • Cookieによるトラッキング • Amazon(良い例) • バナー広告 (悪い例) • P3P • プライバシーポリシーの表現の標準化 Network Architecture 2003f
SSLによる通信路の暗号化 • Secure Socket Layer • HTTPとTCPの間で暗号化を行う。 • 盗聴の防止 • 証明書による相手の認証 • なりすましの防止 証明書を見せてみろ! 正しかったら信用しよう。 私がサーバAですよー。 …え、証明書なんてないよ! サーバA 閲覧者 サーバAになりすました人 Network Architecture 2003f
ブラウザのセキュリティホール • 表示することによってプログラムを自動実行 • 本来は、表示しただけではコンピュータに悪影響を与えるプログラムは実行できないようになっている。 • ブラウザのセキュリティホールによって、ファイルの削除や、勝手に情報を送信してしまう。 • HTMLメールによっても感染してしまう。 Network Architecture 2003f
個人情報の保護 • 何を守るのか: • こんなケースを考える • 通販サイトAで自分の住所と名前を入力した。 • 掲示板サイトBで社長を告発する書き込みをした。 • サイトBの管理者が実はサイトAも管理していたら? • 書き込みした人と住所・名前が結びついてしまうかも… • IPアドレス • Cookie Network Architecture 2003f
トラッキングの例:Amazon.com • 利用者の閲覧情報を保存 • 保存される個人情報 • 本名、住所、クレジットカード番号 • 過去に買ったもの • 例えば同じ物を買った人の傾向を出してくれる。 • 全ての情報はAmazonが保持し、そのプライバシーポリシーに従う。 Network Architecture 2003f
トラッキングの例:バナー広告 • 複数のサイト上に設置されている。 • 広告が設置されているサイトと別の広告会社が運営 • 保存される個人情報 • その人はどのサイトをいつ閲覧したか • 「ある誰か」の行動や趣味が特定される。 • 広告会社に情報を提供しているサイトで本名や住所を入力してしまうと、知らない間に本名とその行動が結びつけられてしまう危険性がある。 Network Architecture 2003f
Webバグ • HTMLメールに埋め込む監視カメラ • HTMLから外部のファイルを読み込む • 「いつ」メールを読んだかが分かってしまう。 • IPアドレスから、「どこ」に接続しているかが分かってしまう。 • 「意図しない情報収集」であることが問題 Network Architecture 2003f
WWWのこれから Network Architecture 2003f
コンテンツ管理 • WWWコンテンツの肥大化 • サイト管理が大変 • データベースとの連携が必須 Network Architecture 2003f
Webサービス • 従来のWebサイト • サイトにアクセスするのは人間 • 何らかの人間の作業が必要 • Webサービス • 人間の作業を介在せず、コンピュータ同士が直接情報をやり取りできるようにする 絵の書き換えが必要 Network Architecture 2003f
webサービスの仕組み 絵の書き換えが必要 1.提供者はサービスをUDDIビジネスレジストリに登録する 2.サービス利用者は、利用したサービスをUDDIを使って検索 3.WSDLと別途用意された該当webサービスのメソッドの仕様を見て、そのwebサービスを利用できるアプリケーションを開発 4.開発したアプリケーションを用いて、該当webサービスを利用 Network Architecture 2003f
Semantic Web • Webの進化 • HTML: 表示のためのWeb • XML:シンタックスをもったWeb →セマンティックスをもったWebへ • HTMLベースのWeb • →人間が読んで意味を解釈する • SemanticWeb • →構造化されたメタデータ群(オントロジー)に基づいてコンピュータが推論を行い、意味的な解釈をする • シンタックス[syntax] とは?(1)統語論。統辞論。構文論。(2)コンピューターのプログラム言語における字句間の関係。構文。 • セマンティックス[semantics]=意味論(1)〔言〕 言語の意味現象を研究する分野。意味の本質探究、意味構造の分析、意味変化の原因・類型の分析などを行う。意義学。(2)〔論〕 記号論の一分科。記号とそれが指し示す対象や事態との間の関係を取り扱う。特に論理学では、記号の解釈と真理概念を扱う分野を指す。 • 三省堂提供「大辞林 第二版」より Network Architecture 2003f
誰でも見れるように • ユニバーサルデザイン • 身体に障害がある人も、ない人も同じ情報にアクセスできる Network Architecture 2003f