インターネット概論 第9回12月11日 Webって、どんなシステム?.

Slides:



Advertisements
Similar presentations
1 PHP プログラムの実行(まと め) 担当 岡村耕二 月曜日 2限 平成 22 年度 情報科学 III (理系コア科目・2年生) 本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明 准教授等による以前の講義資料をもとにしています。
Advertisements

EPnetFaN (2014/02/28) EPWWW サーバ 2013 北海道大学大学院 理学院宇宙理学専攻 修士 1 年 渡辺 健介.
目次 このドキュメントについて・・・前提条件……………………………………… 2
インターネットのアプリケーション 情報ネットワーク 後藤(2) 教科書:  第8章 アプリケーション プロトコル pp
WWW のおはなし 神戸大学理学部地球惑星科学科 4 回生 佐伯 拓郎 (地球および惑星大気科学研究室) 藤田 哲也 (宇宙物理学研究室)
神戸大学理学部地球惑星科学科 4回生 柏本 光司
情報基礎A 情報科学研究科 徳山 豪.
The Perl Conference Japan ’98 朝日奈アンテナによる コンテンツ情報の取得と利用
JXTA Shell (3) P2P特論 (ソフトウェア特論) 第6回 /
情報実験:ネットワークコンピューティング入門
第1回.
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
Webアプリケーションの 通信メカニズム WEBアプリ研究プロジェクト 第2回.
第2章 ネットサービスとその仕組み(前編) [近代科学社刊]
Ibaraki Univ. Dept of Electrical & Electronic Eng.
IPアドレス、IPパケットとはなにか? 情報塾( ) URLとの関係は? コンピュータ同士はどう繋がっているか?
インターネットの通信メカニズム 概要 WEBアプリ研究会 2回目.
アプレット (Applet)について.
第14回 今日の目標 §4.3 情報セキュリティー 情報化社会の特徴を社会的な面から概観する 情報に関わる危険の要因を示す
EpWWWサーバ 北海道大学 理学院 宇宙理学専攻 M1 古田裕規.
CGI Programming and Web Security
WWW (=World Wide Web)とは
TCP (Transmission Control Protocol)
「コンピュータと情報システム」 07章 インターネットとセキュリティ
ネットワークコミュニケーション よく使われるアプリケーション DNS 7/5/07.
第4回 個人の動画配信補足のためのWeb構築
OpenID 勉強会 (OpenID Authentication1.1)
30分でわかるTCP/IPの基礎 ~インターネットの標準プロトコル~ 所属: 法政大学 情報科学研究科 馬研究室 氏名: 川島友美
佐賀大学 理工学部知能情報システム学科 講師 大月 美佳
ネットワーク コミュニケーション トランスポート層 TCP/UDP 6/28/07.
担当教官:大月 美佳(佐賀大学) 2001年度 総合科目
インターネット メールサーバ DNSサーバ WWWサーバ ファイアウォール/プロキシサーバ クライアント.
第13回 今日の目標 §4.3 情報セキュリティー 情報化社会の特徴を社会的な面から概観する 情報に関わる危険の要因を示す
一歩進んだインターネットの利用 ~Firefox と qwikWeb~
HTTPプロトコルとJSP (1) データベース論 第3回.
HTTPプロトコル J2EE I 第7回 /
Telnet, rlogin などの仮想端末 ftp などのファイル転送 rpc, nfs
情報コミュニケーション入門 総合実習(1) 基礎知識のポイント(2)
第2章 第1節 情報通信の仕組み 1 ネットワークの仕組み 2 通信プロトコル 3 認証と情報の保護
第8章 Web技術とセキュリティ   岡本 好未.
Microsoft PowerPoint98 Netscape Communicator 4.06[ja]
HTTPとHTML 技術領域専攻 3回 中川 晃.
Linux リテラシ 2006 第4回 ネットワーク CIS RAT.
ネットワークアプリケーションと セキュリティ
第7回ネットワークプログラミング 中村 修.
卒業論文発表 「Web アクセスに伴う脅威の特徴分析」
Java Bytecode Modification and Applet Security
インターネットにおける真に プライベートなネットワークの構築
セキュリティ 05A2013 大川内 斉.
情報コミュニケーション入門e 第11回 Part2 Web入門(1)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
UDPマルチキャストチャット    空川幸司.
Webプロキシ HTTP1.0 ヒント CS-B3 ネットワークプログラミング  &情報科学科実験I.
端末およびサービス透過的な 情報閲覧支援システムの構築
ネットワークプログラミング (3回目) 05A1302 円田 優輝.
JXTA Shell (1) P2P特論 (ソフトウェア特論) 第4回 /
コンピュータ プレゼンテーション.
JXTA Shell (2) P2P特論 (ソフトウェア特論) 第5回 /
最低限インターネット ネットワークにつなぎましょ!
gate登録システム: 設計ポリシーから使い方まで
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
Step.8 ファイアウォール PC 3 PC 1 PC 2 許可したアクセス のみ通過させる アクセスする ファイアウォール
ネットワークプロトコル.
第2回 Webサーバ.
アプリケーションゲートウェイ実験 2001.10.5 鬼塚 優.
TCP/IPの通信手順 (tcpdump)
ポートスキャン実習 2002年9月19日 修士1年 兼子 譲 牧之内研究室「インターネット実習」Webページ
プロトコル番号 長野 英彦.
ユーザ認証の盗聴 2002/9/10 峯 肇史 牧之内研究室「インターネット実習」Webページ
HTTPプロトコルの詳細 M1 峯 肇史.
Presentation transcript:

インターネット概論 第9回12月11日 Webって、どんなシステム?

WWW World Wide Web の略 語源:世界規模の蜘蛛の巣 世界中の情報を蜘蛛の巣状に関連付けた情報ネットワークサービス

WWWの起源 1989年、CERN(欧州合同原子核研究機関)で文書情報のやり取りを目的として開発された 互いに公開可能な情報を持っていたが、その情報を円滑に共有しあう手段がなかった Tim Berners-Lee氏が文書情報を簡単に共有できるシステムを開発した

関連付け(Hyper Link) 1989年に開発された情報共有機構の特徴 他のコンピュータにある情報に対してLinkを張れる この情報は こっちにあるよ

初期型WWW NeXT社のSTEPでしか動作しなかった 考案者は仕様をインターネットで公開した 瞬く間にみんなが作った HTML言語など 今日では、どんなOSでもWWWが見れる

Webを実現する コンピュータネットワーク WWWの普及には異種OS間通信の実現がある ネットワーク上のプロトコルだけが決まっている OSが違っていても通信可能 LinuxとWindowsでも通信できる WindowsとMacでも通信できる UnixとWindowsでも通信できる どんなOSでもプロトコルに沿って通信をすれば通信できる

通信プロトコル 「こういう風に聞いてきたら、こういう風に答えなさい」みたいな決まりの集合 例えば、WWWでは、 GET /index.html HTTP/1.0 というと index.html というファイルの中身が見れる

プロトコル プロトコル:議定書、条件などの原案 共通のコミュニケーションルール 全員が同じルールで通信をするのでお互いに理解が可能 日本語と日本語だと理解し合えるが、日本語とスワヒリ語だと会話が成り立たない

インターネットとWWW インターネットの通信プロトコルは公開されている WWWのプロトコルも公開されていた 異種OS間で通信ができた インターネットの代表的なアプリケーションになった WWWは爆発的に広がった

WWWはWebサーバの集合体 インターネットは膨大な数のコンピュータが互いに手を取り合う世界規模のネットワーク

Webを構成する3つの重要な概念 URL: Universal Resource Locator 情報オブジェクト(リソース)の位置を記述するためのシンタックスあるいはその記述 HTTP: HyperText Transfer Protocol トランスポートプロトコル HTML: HyperText Markup Language マークアップ(プレゼンテーション)記述言語

Webサーバの動作 WWW = ‘‘クライアント・サーバ’’ アプリケーション Web ブラウザからのドキュメント取得要求を受け付ける 個々の要求から必要なファイル(オブジェクト)や動作を決定する 結果を送る サーバ Request Response クライアント

サーバ・クライアントプロトコル HTTP Webのブラウザは、クライアントとして動く Webは、他のインターネットアプリケーションも包含する http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-v10-spec-01.txt Webのブラウザは、クライアントとして動く Webは、他のインターネットアプリケーションも包含する FTP, Gopher, WAIS, NNTP and telnet

HTTPとHTMLの関係 Request Line Payload (Entity Body) HTTP Headers Status Line HTTP メッセージ リクエスト レスポンス CRLF ペイロードがHTML (ハイパーテキスト ドキュメントの場合)

Webサーバとデータ形式 Web Server Knows: Does Not Know: HTTPのリクエストの受け付けかたと返事の仕方 サービスに必要なドキュメントの探しかた Does Not Know: ドキュメント間のハイパーテキストのリンクの意味 インライン イメージ ドキュメントの作者が正しくMIMEタイプをつけているか ほかのWebサーバのこと(Proxyサーバは、唯一ほかのサーバも知っている

Webドキュメントのいろいろ ドキュメントタイプ HTML Plain ASCIIテキスト 整形済みのドキュメント(PS) 静止画(GIF, JPEG) 音声(AU, AIFF) 動画像(Quicktime, MPEG) 3次元空間(VRML) Java ‘applet’ ...

HTTPにとってのWebドキュメント どんなタイプのドキュメントもバイナリデータとして保管、転送される Webサーバはドキュメントの内容に関知しない ブラウザ側で正しく処理するためにタイプ情報を用いる データを送る前にデータに関する情報を送っている タイプは、Content-typeを使って送る サーバがタイプ情報を知る方法 ファイル名の拡張子からのマッピング HTMLドキュメン: .html GIFフォーマット: .gif

タイプと拡張子 html, htm ps gif jpeg wrl, vrml txt au tiff mpeg java PostScript gif GIFイメージ jpeg JPEGイメージ wrl, vrml VRMLシーン記述 txt フォーマットなしASCIIテキスト au Audio (Sun) tiff TIFFイメージ mpeg MPEGイメージ java JAVAアプレット

HTML Hypertext Markup Language WWWの基本言語 ブラウザは、必ず処理できなければいけない Anchorをいれることができる http://www.w3.org/hypertext/WWW/MarkUp/html-spec/html-spec.ps.gz

外部プログラム ブラウザの取り扱えない動作や知らないタイプの情報を扱う方法 helperプログラム 外部ビューワ イメージや音の再生など

Content-Encoding 型(ドキュメントのタイプ)とは別に、データストリームのエンコーディングをヘッダ中で指定することが可能 圧縮がかけられているドキュメント Content-type: application/postscript Content-encoding: gzip HTTPヘッダ PSデータ gzipで圧縮 されている HTTPペイロード

HTTP: Hypertext Transfer Protocol 単純なRequest/response クライアントは、サーバとコネクションを設定する クライアントがサーバにリクエストを投げる サーバがリクエストにしたがってリプライを返す TCP上で実装されていることが多い。

リクエスト (クライアントから サーバへ) HTTPリクエストの構成要素 Method: 可能な動作のうち一つ URI: Universal Resource Identifier プロトコルバージョン (Optionally) その他の情報(ヘッダ情報)

URLと URI 3つの部分から構成されている URI: URLのサブセット 転送に用いるプロトコルの識別子 サービス(サーバプロセス)識別子 ドキュメントの名前 URI: URLのサブセット サービス = サーバ名 + ポート番号 (TCP/IPの場合) ドキュメント名 = ファイルシステム上のパス名 http://ds.internic.net:80/rfc/rfc1630.txt メソッド サーバ名+ポート番号 フルパス名

TCPポート80 ! HTTPのデフォルトポート番号: 80 http://www.server.org/sample.html (port 80) http://www.server.org:8000/sample.html (port8000)

HTTPメソッド = リクエストの種類 GET: オブジェクトを返す。つまり情報を引き出す。 HEAD: オブジェクトに関する情報 (e.g.: タイムスタンプ)のみを返し、オブジェクトそのものは返さない。 POST: サーバへデータを送る。 普通はスクリプトへの入力に用いる。 PUT: データの蓄積を目的としてサーバへデータ を送る。 DELETE: データを削除する。 Other

クライアントからサーバに送る(ヘッダ)情報 User-Agent ブラウザ名 If-Modified-Since キャッシュのファイルのタイムスタンプを送り、変更されていた場合にのみファイルを受け取る Accept ブラウザが受け取れるMIME-type Authorization パスワードやその他の認証子

リクエストの例 GET /Staff/Funny/silly.html HTTP/1.0 User-agent: NCSA Mosaic for the X Window System/2.5 Accept: text/plain Accept: text/html Accept: application/postscript Accept: image/gif (Accept: */* )

レスポンス (サーバからクライアント) ステータス メタ情報 実際のデータ 要求が成功したか失敗したか レスポンス (サーバからクライアント) ステータス 要求が成功したか失敗したか HTTP-version Status-code Reason メタ情報 返送する情報の情報 コンテント・タイプ コンテント・エンコーディング 実際のデータ

HTTPのステータスコード (抜粋1) 200: Document follows 301: Moved Permanently HTTPのステータスコード (抜粋1) 200: Document follows リクエストは受け付けられた。続いてデータの転送が行われる 301: Moved Permanently 指定されたドキュメントは新しいURLに移動した 302: Moved Temporarily 指定されたドキュメントは一時的に新しいURLに移動している 304: Not Modified 指定されたドキュメントは、リクエストのパラメータで指定された日付より後に変更されていない

HTTPのステータスコード (抜粋2) 401: Unauthorized 403: Forbidden 404: Not Found HTTPのステータスコード (抜粋2) 401: Unauthorized 情報へのアクセスは制限されており、正しい認証が行われる必要がある 403: Forbidden アクセスは禁止されている 404: Not Found 指定された情報が見つからないか、アクセス制限が働いた 500: Server Error サーバの内部エラーが発生した

HTTPトランザクション例 Telnet CRLF CRLF Telnet is26e0s00[3] telnet shinoda-www.jaist.ac.jp 80 Trying 150.65.190.124 ... Connected to shinoda-www.jaist.ac.jp. Escape character is '^]'. GET / HTTP/1.0 HTTP/1.0 200 OK Date: Sat, 30 Nov 1996 11:07:39 GMT Server: Apache/1.1b2 Content-type: text/html Content-length: 975 Last-modified: Fri, 08 Nov 1996 07:28:11 GMT <HTML> <HEAD> <TITLE>Shinoda Lab. Home Page (In English)</TITLE> </HEAD> ... </BODY> </HTML> Connection closed by foreign host. Telnet リクエストライン リクエスト (HTTPヘッダ+Entity Body = 空) CRLF レスポンス ステータスライン HTTPヘッダ (空) CRLF Telnet

ダイナミックドキュメント CGI --- Common Gateway Interface 独立したプログラムが起動 リクエストの入力はプログラムの入力へ プログラムの出力がクライアントに渡される SSI --- Server Side Include html中にコメントの形でプログラム実行を記述 プログラムの出力は、元のドキュメントに埋め込まれる Other サーバ拡張API: NSAPI, Apache Modules, ... Remote Program Execution: Java, JavaScript, mBED...

WWWサーバ: 基本中の基本 GET methodのみを処理する簡単なWebサーバ もっともコンパクトなサーバの大きさはどれくらいか コネクションを受け付ける リクエストラインを入力し、URI(パス名)を取り出す 適当なステータスラインとヘッダを出力する URIで指定されたオブジェクトを出力する 掃除をしてから最初に戻る もっともコンパクトなサーバの大きさはどれくらいか

#!/usr/local/bin/perl use IO::Socket; $sock = new IO::Socket::INET (LocalAddr => "localhost:8007", Listen => 5); die "can not create socket : $!\n" unless $sock; $sockNew = $sock->accept (); $message = <$sockNew>; $message2 = <$sockNew>; print $message; chop $message; @msg = split (" ", $message); if ($msg[0] eq "GET") { if ($msg[2] eq "HTTP/1.0") { open (FILE, $msg[1]) || &errMsg(); while (<FILE>) { print $sockNew $_; } close (FILE); sub endProg () { $sockNew->close (); $sock->close (); exit; } sub errMsg () { $date = `date`; print $sockNew <<ERRMSG HTTP/1.0 404 Not Found Date: $date Server: SIMPLE SAMPLE SERVER (Unix) Connection: close Content-Type: text/html ERROR MESSAGE ERRMSG &endProg();

WWW Webサーバに問い合わせることにより実現 この情報見せて DATA DATA 表示

Java、ActiveXなど WWW上で動作なども記述できるようになった しかし、できることが多くなった分、セキュリティホールも増えた 無防備に使っていると問題が発生する事もある

WWWまわりで危険なこと 知らないうちに個人情報を抜き取られる 知らないうちにウィルスに感染する 手元のコンピュータが停止させられる ウィルスに感染し、自分自身が知らない間に加害者になっている

WWWでサーバに送信される情報 実は、WWWクライアントからもサーバに情報は送信されている クライアントのIPアドレス WWWブラウザの種類 その他

それらからわかること 例えば、REMOTE_HOSTが「paexxxx.tokyont01.so-net.ne.jp」だった場合 WWWページを見にきた人は SO-NETに入会している 東京から接続している フレッツISDNユーザである といった感じのことがわかります 例 http://www.sfc.wide.ad.jp/InternetGairon2001/printenv.cgi

自分のマシンのIPアドレスがばれて何が嫌か? 例えば、WWW上の掲示板などで悪態をついて、恨みを買ったとする 自分のIPアドレスがばれると、恨みを持った人達が徒党を組んで攻撃してくる 不正進入を試みたり DoSアタックをかけたり

DoS(Denial of Service) サービスを中断させる 簡単なDoS パケットを大量に送信する 防ぐことが難しい 例えば、128kpbsの回線に100Mbps分のパケットを送信する 回線は混雑しすぎて何もできなくなる

IPアドレスが分かってしまう問題 対応策 IPアドレスを分からないようにすることは、“基本的には出来ない!!” 信頼できそうもないようなWebサーバにはアクセスしない 他人に迷惑や不快な思いはさせない システムとしては、分からないような情報を不用意に入力しない

ソフトウェアのバグ ウィルスなどはソフトウェアのバグを利用している 全てのソフトウェアにはバグがある 中には悪用できるものもある 本来あり得ない情報を送り込むことでユーザ情報を取得する ページを見るだけでシステムハングアップさせる

バグ ソフトウェアのバグの修正プログラムの多くは配布されている しかし、修正プログラムを使わない人も多い 皆様 Windows Update してますか?

IEのバグを悪用した例 IEの新しいウィンドウを数千個(もしくは無限に)出す メモリがなくなって、システムが止まってしまう 「このページは見てはいけません」と書いたリンクを作ってそれをクリックした人がはまる

Java, javascript, activeX 便利な機能を備えている HTMLだけでは実現できないことができる しかし、危険も伴う 得体の知れないファイルを勝手にダウンロードされて、実行される ウィルスを注入される

防衛策 「インターネットオプション」の「セキュリティ」項目でセキュリティレベルを「中」以上にする セキュリティレベル「低」は使わない やばそうな場所を見るときには「高」にする

その他の危険 WWWを見なくても、ネットワークに接続しているだけでも侵入される ネットワークにつながるということは、他のマシンもこちらを見れるということ

インターネットにつなげているだけで進入される例 Nimdaなどのワームに攻撃される IISというWWWサーバをWindows上で起動していると侵される IISは、マイクロソフトの特定のソフトウェアをインストールすると勝手にインストールされるので注意!!! 研究室に対する攻撃数 Nimdaだけで、大体、1日8000件ぐらい

Nimda IIS、メール、共有、WWW閲覧などを通じて感染 マイクロソフトの Well Known セキュリティホールを惜しまず使ったウィルス 自己増殖型ウィルス 万能型ウィルス

Nimda Nimdaに感染すると、数万個のホストからIISが起動しているものを探し始める 大量にWWWコネクションを張りにいく 成功すると自分自身をコピーする 侵入されたホストは、また、インターネット上のIISを探し始める

Nimda Nimdaは、ウィンドウズの「共有」も利用する 感染すると、同じセグメントのマシン全部を攻撃し始める 攻撃が成功すると自分自身を対象のホストにコピーする

Nimda Outlookも利用する Nimdaに感染すると、アドレス帳上のメールアドレスに対してウィルスを添付して送信する

Nimda NimdaにやられたマシンがWWWサーバだった場合、WWWページにウィルスが仕込まれる WWWページを古いIEで見ると見た人が感染する

まとめ こまめにWindows Updateをする 自分が通信できるということは、他人も自分のところまで通信できるということであることを忘れない 注意を怠らない インターネットは匿名性があると言われるが、必ずしもそうとは言い切れない