第 2 回の内容 クライアントサーバモデル URI HTTP
Web のクライアントサーバモデル
クライアントサーバモデル ユーザークライアントサーバ 処理要求の入力 処理要求 結果の提示 処理結果 処理
Web のクライアントサーバモデル ユーザー Web ブラウザ Web サーバ URI の指示 HTTP リクエスト Web ページの描画 HTTP レスポンス
URI
Web ブラウザのアドレスバー http://www.ouj.ac.jp/hp/gaiyo/ict.html
URI の例 http://www.ouj.ac.jp/
URI の例 http://www.ouj.ac.jp/hp/kamoku/h26/kyouyou/b/joho/1570102.html
URI の例 http://www.kantei.go.jp/
URI の例 http://p-search.kantei.go.jp/ja_kantei/search.x?q=%e6%95%99 %E8%82%B2&ie=UTF-8&page=1&submit.x=0&submit.y=0
URI の構造 URI の例 http://www.example.ac.jp:8080/path/to/resource?qt=%e3%81%82&page=1#r5 構文 <scheme>://<host>:<port><path>?<query>#<fragment>
URI の構造 http://www.example.ac.jp:8080/path/to/resource?qt=%e3%81%82&page=1#r5 http <scheme>://<host>:<port><path>?<query>#<fragment>
URI の構造 http://www.example.ac.jp:8080/path/to/resource?qt=%e3%81%82&page=1#r5 http www.example.ac.jp <scheme>://<host>:<port><path>?<query>#<fragment>
URI の構造 http://www.example.ac.jp:8080/path/to/resource?qt=%e3%81%82&page=1#r5 http 8080 www.example.ac.jp <scheme>://<host>:<port><path>?<query>#<fragment>
URI の構造 http://www.example.ac.jp:8080/path/to/resource?qt=%e3%81%82&page=1#r5 http 8080 www.example.ac.jp /path/to/resource <scheme>://<host>:<port><path>?<query>#<fragment>
URI の構造 http://www.example.ac.jp:8080/path/to/resource?qt=%e3%81%82&page=1#r5 http 8080 qt=%e3%81%82&page=1 www.example.ac.jp /path/to/resource <scheme>://<host>:<port><path>?<query>#<fragment>
URI の構造 http://www.example.ac.jp:8080/path/to/resource?qt=%e3%81%82&page=1#r5 http 8080 qt=%e3%81%82&page=1 www.example.ac.jp /path/to/resource r5 <scheme>://<host>:<port><path>?<query>#<fragment>
URI の構造 スキーム名 <scheme>://<host>:<port><path>?<query>#<fragment> http://www.example.ac.jp:8080/path/to/resource?qt=%e3%81%82&page=1#r5 スキーム名 : リソースにアクセスする方法 スキーム名 http https 説明 HTTP TLS でセキュリティ保護された HTTP
URI の構造 ホスト名とポート番号 <scheme>://<host>:<port><path>?<query>#<fragment> http://www.example.ac.jp:8080/path/to/resource?qt=%e3%81%82&page=1#r5 ホスト名とポート番号 : リソースを提供する Web サーバの名前とポート ポート番号 スキーム 既定値 http 80 https 443 既定値の場合は : も含めて省略
URI の構造 パスとクエリ <scheme>://<host>:<port><path>?<query>#<fragment> http://www.example.ac.jp:8080/path/to/resource?qt=%e3%81%82&page=1#r5 パスとクエリ : Webサーバ内でのリソースの名前 key=valueの組を & でつないだ形式 key 1 =value 1 &key 2 =value 2 & パスは / 区切りの階層構造 クエリがない場合は? も含めて省略
リソースの特定 スキーム名からクエリまででリソースを特定 <scheme>://<host>:<port><path>?<query>#<fragment> http://www.example.ac.jp:8080/path/to/resource?qt=%e3%81%82&page=1#r5 アクセス手段 Web サーバ Web サーバ内におけるリソース
URI の構造 フラグメント識別子 <scheme>://<host>:<port><path>?<query>#<fragment> http://www.example.ac.jp:8080/path/to/resource?qt=%e3%81%82&page=1#r5 フラグメント識別子 リソース内の一部分を指し示す フラグメント識別子がない場合は # も含めて省略
URI の構造の例 http://www.ouj.ac.jp/
URI の構造の例 http://www.ouj.ac.jp/ スキーム名 http
URI の構造の例 http://www.ouj.ac.jp/ スキーム名 http ホスト名 www.ouj.ac.jp ポート番号 ( 省略 )
URI の構造の例 http://www.ouj.ac.jp/ スキーム名 http ホスト名 www.ouj.ac.jp ポート番号 ( 省略 ) パス / クエリ ( なし ) フラグメント識別子 ( なし )
URI の構造の例 http://www.ouj.ac.jp/hp/kamoku/h26/kyouyou/b/joho/1570102.html
URI の構造の例 http://www.ouj.ac.jp/hp/kamoku/h26/kyouyou/b/joho/1570102.html スキーム名 http ホスト名 www.ouj.ac.jp ポート番号 ( 省略 )
URI の構造の例 http://www.ouj.ac.jp/hp/kamoku/h26/kyouyou/b/joho/1570102.html スキーム名 http ホスト名 www.ouj.ac.jp ポート番号 ( 省略 ) パス /hp/kamoku/h26/kyouyou/b/joho/1570102.html クエリ ( なし ) フラグメント識別子 ( なし )
URI の構造の例 http://www.kantei.go.jp/
URI の構造の例 http://www.kantei.go.jp/ スキーム名 http ホスト名 www.kantei.go.jp ポート番号 ( 省略 ) パス / クエリ ( なし ) フラグメント識別子 ( なし )
URI の構造の例 http://p-search.kantei.go.jp/ja_kantei/search.x?q=%e6%95%99 %E8%82%B2&ie=UTF-8&page=1&submit.x=0&submit.y=0
URI の構造の例 http://p-search.kantei.go.jp/ja_kantei/search.x?q=%e6%95%99 %E8%82%B2&ie=UTF-8&page=1&submit.x=0&submit.y=0 スキーム名 http
URI の構造の例 http://p-search.kantei.go.jp/ja_kantei/search.x?q=%e6%95%99 %E8%82%B2&ie=UTF-8&page=1&submit.x=0&submit.y=0 スキーム名 http ホスト名 p-search.kantei.go.jp ポート番号 ( 省略 )
URI の構造の例 http://p-search.kantei.go.jp/ja_kantei/search.x?q=%e6%95%99 %E8%82%B2&ie=UTF-8&page=1&submit.x=0&submit.y=0 スキーム名 http ホスト名 p-search.kantei.go.jp ポート番号 ( 省略 ) パス /ja_kantei/search.x
URI の構造の例 http://p-search.kantei.go.jp/ja_kantei/search.x?q=%e6%95%99 %E8%82%B2&ie=UTF-8&page=1&submit.x=0&submit.y=0 スキーム名 ホスト名 http ポート番号 ( 省略 ) パス クエリ フラグメント識別子 ( なし ) p-search.kantei.go.jp /ja_kantei/search.x q=%e6%95%99%e8%82%b2&ie=utf-8&page=1 &submit.x=0&submit.y=0
URI の構造の例 http://p-search.kantei.go.jp/ja_kantei/search.x?q=%e6%95%99 %E8%82%B2&ie=UTF-8&page=1&submit.x=0&submit.y=0 スキーム名 ホスト名 http ポート番号 ( 省略 ) パス クエリ フラグメント識別子 ( なし ) p-search.kantei.go.jp /ja_kantei/search.x q=%e6%95%99%e8%82%b2&ie=utf-8&page=1 &submit.x=0&submit.y=0
URI の構造の例 http://p-search.kantei.go.jp/ja_kantei/search.x?q=%e6%95%99 %E8%82%B2&ie=UTF-8&page=1&submit.x=0&submit.y=0 スキーム名 ホスト名 http ポート番号 ( 省略 ) パス クエリ フラグメント識別子 ( なし ) p-search.kantei.go.jp /ja_kantei/search.x q=%e6%95%99%e8%82%b2&ie=utf-8&page=1 &submit.x=0&submit.y=0
URI の構造の例 http://p-search.kantei.go.jp/ja_kantei/search.x?q=%e6%95%99 %E8%82%B2&ie=UTF-8&page=1&submit.x=0&submit.y=0 スキーム名 ホスト名 http ポート番号 ( 省略 ) パス クエリ フラグメント識別子 ( なし ) p-search.kantei.go.jp /ja_kantei/search.x q=%e6%95%99%e8%82%b2&ie=utf-8&page=1 &submit.x=0&submit.y=0
URI の構造の例 http://p-search.kantei.go.jp/ja_kantei/search.x?q=%e6%95%99 %E8%82%B2&ie=UTF-8&page=1&submit.x=0&submit.y=0 スキーム名 ホスト名 http ポート番号 ( 省略 ) パス クエリ フラグメント識別子 ( なし ) p-search.kantei.go.jp /ja_kantei/search.x q=%e6%95%99%e8%82%b2&ie=utf-8&page=1 &submit.x=0&submit.y=0
URI の構造の例 http://p-search.kantei.go.jp/ja_kantei/search.x?q=%e6%95%99 %E8%82%B2&ie=UTF-8&page=1&submit.x=0&submit.y=0 スキーム名 ホスト名 http ポート番号 ( 省略 ) パス クエリ フラグメント識別子 ( なし ) p-search.kantei.go.jp /ja_kantei/search.x q=%e6%95%99%e8%82%b2&ie=utf-8&page=1 &submit.x=0&submit.y=0
パスの階層構造 /a/c/g / a c g
絶対パスと相対パス 絶対パス 相対パス / から始まるパス 現在のパスを起点としたパス絶対パスに変換できる. は現在の階層.. は 1 つ上の階層
絶対パスと相対パス 現在のパス : /a/c/g / a b c d e f g h i j
絶対パスと相対パス 現在のパス : /a/c/g 相対パス h 絶対パス /a/c/h / a b c d e f g h i j
絶対パスと相対パス 現在のパス : /a/c/g 相対パス h 絶対パス /a/c/h /. /a/c/ a b c d e f g h i j
絶対パスと相対パス 現在のパス : /a/c/g 相対パス h 絶対パス /a/c/h /. /a/c/./h /a/c/h c a d e b f g h i j
絶対パスと相対パス 現在のパス : /a/c/g 相対パス h 絶対パス /a/c/h /. /a/c/./h /a/c/h.. /a/ c a d e b f g h i j
絶対パスと相対パス 現在のパス : /a/c/g 相対パス h 絶対パス /a/c/h /. /a/c/./h /a/c/h.. /a/ c a d e b f../d/i /a/d/i g h i j
絶対パスと相対パス 現在のパス : /a/c/g 相対パス h 絶対パス /a/c/h /. /a/c/./h /a/c/h.. /a/ c a d e b f../d/i /a/d/i../.. / g h i j
絶対パスと相対パス 現在のパス : /a/c/g 相対パス h 絶対パス /a/c/h /. /a/c/./h /a/c/h.. /a/ c a d e b f../d/i /a/d/i../.. / g h i j../../b/e /b/e
絶対パスと相対パス 現在のパス相対パス絶対パス. /a/ /a/b.. /. /a/b/ /a/b/.. /a/
絶対 URI と相対 URI ベース URI 絶対 URI 相対 URI 現在の URI スキーム名から始まる完全な URI ベース URI からの相対的な URI 絶対 URI の先頭からいくつかの構成要素を省略省略された部分はベース URI の対応する構成要素と同じ
絶対 URI と相対 URI 相対 URI ベース URI http://host1/a/b?k1=v1 絶対 URI
絶対 URI と相対 URI ベースURI http://host1/a/b?k1=v1 相対 URI 絶対 URI //host2/a/b http://host2/a/b
絶対 URI と相対 URI ベースURI http://host1/a/b?k1=v1 相対 URI 絶対 URI //host2/a/b http://host2/a/b /c/d http://host1/c/d
絶対 URI と相対 URI ベースURI http://host1/a/b?k1=v1 相対 URI 絶対 URI //host2/a/b http://host2/a/b /c/d http://host1/c/d./ http://host1/a/
絶対 URI と相対 URI ベースURI http://host1/a/b?k1=v1 相対 URI 絶対 URI //host2/a/b http://host2/a/b /c/d http://host1/c/d./ http://host1/a/../e http://host1/e
絶対 URI と相対 URI ベースURI http://host1/a/b?k1=v1 相対 URI 絶対 URI //host2/a/b http://host2/a/b /c/d http://host1/c/d./ http://host1/a/../e http://host1/e?k2=v2 http://host1/a/b?k2=v2
絶対 URI と相対 URI ベースURI http://host1/a/b?k1=v1 相対 URI 絶対 URI //host2/a/b http://host2/a/b /c/d http://host1/c/d./ http://host1/a/../e http://host1/e?k2=v2 http://host1/a/b?k2=v2 #f1 http://host1/a/b?k1=v1#f1
絶対 URI と相対 URI ベースURI http://host1/a/b?k1=v1 相対 URI 絶対 URI //host2/a/b http://host2/a/b /c/d http://host1/c/d./ http://host1/a/../e http://host1/e?k2=v2 http://host1/a/b?k2=v2 #f1 http://host1/a/b?k1=v1#f1../g?k3=v3#f3 http://host1/g?k3=v3#f3
相対 URI でのハイパーリンク http://www.ouj.ac.jp/hp/kamoku/h26/ kyouyou/b/joho/1570102.html http://www.ouj.ac.jp/hp/kamoku/h26/ kyouyou/b/ippan_shizen/1234188.html../ippan_shizen/1234188.html へハイパーリンク
http 以外のスキーム スキーム https 例 https://upo-net.ouj.ac.jp/
http 以外のスキーム スキーム https ftp 例 https://upo-net.ouj.ac.jp/ ftp://ftp.freebsd.org/pub/freebsd/readme.txt
http 以外のスキーム スキーム https ftp mailto 例 https://upo-net.ouj.ac.jp/ ftp://ftp.freebsd.org/pub/freebsd/readme.txt mailto:yamada@example.ac.jp
http 以外のスキーム スキーム https ftp mailto tel 例 https://upo-net.ouj.ac.jp/ ftp://ftp.freebsd.org/pub/freebsd/readme.txt mailto:yamada@example.ac.jp tel:+81-43-276-5111
HTTP の基礎
Web のクライアントサーバモデル ユーザー Web ブラウザ Web サーバ URI の指示 HTTP リクエスト Web ページの描画 HTTP レスポンス
URI の解釈 http://www.example.ac.jp:8080/path/to/resource?qt=%e3%81%82&page=1#r5 アクセス手段 Web サーバ Web サーバ内におけるリソース www.example.ac.jp の 8080 番ポートに接続し HTTP で /path/to/resource?qt=%e3%81%82&page=1 を要求
HTTP のリクエストメッセージの例 http://www.example.ac.jp/test.html GET /test.html HTTP/1.1 Host: www.example.ac.jp User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ja,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive
HTTP のレスポンスメッセージの例 HTTP/1.1 200 OK Date: Mon, 14 Apr 2014 07:25:45 GMT Server: Apache Last-Modified: Mon, 14 Apr 2014 06:58:19 GMT Etag: "b0-4f6fb355798c0" Accept-Ranges: bytes Content-Length: 176 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=utf-8 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title> テストページ </title> </head> <body> <h1> テストページ </h1> </body> </html>
HTTP のリクエストメッセージ ヘメッッダセージ ボメデッィセージ リクエストライン GET /test.html HTTP/1.1 Host: www.example.ac.jp User-Agent: Mozilla/5.0 (Windows NT 6.1; Accept: text/html,application/xhtml+xml, Accept-Language: ja,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive 空行
リクエストライン GET /test.html HTTP/1.1 HTTP/1.1 を使って /test.html を 取得 (GET) する
HTTP のレスポンスメッセージ ヘメッッダセージ ボメデッィセージ HTTP/1.1 200 OK Date: Mon, 14 Apr 2014 07:25:45 GMT Server: Apache Connection: Keep-Alive Content-Type: text/html; charset=utf-8 <!DOCTYPE html> <html lang="ja"> </html> ステータスライン 空行
ステータスライン HTTP/1.1 200 OK 200 ステータスコード ステータスコード 意味 200 リクエストに成功した 404 リソースが存在しない 403 権限がない 500 サーバ側でエラーが起こった
ステータスコード 404
送り返されるリソース メディアタイプ リソース HTTP/1.1 200 OK Date: Mon, 14 Apr 2014 07:25:45 GMT Server: Apache Connection: Keep-Alive Content-Type: text/html; charset=utf-8 <!DOCTYPE html> <html lang="ja"> </html>
メディアタイプ タイプ / サブタイプ タイプ text image audio video application 説明テキスト情報画像データ音声データ映像データその他の種類のデータ
メディアタイプ メディアタイプ application/octet-stream application/pdf application/xhtml+xml application/zip image/jpeg image/png text/css text/html text/plain 説明任意のバイナリデータ PDF XHTML 文書 ZIP 書庫 JPEGフォーマットの画像 PNG 画像 CSS HTML 文書プレーンテキスト
メディアタイプのパラメータ タイプ / サブタイプ ; パラメータ charset パラメータ 文字コード text/html; charset=utf-8 UTF-8 で書かれた HTML 文書
送り返されるリソース メディアタイプ リソース HTTP/1.1 200 OK Date: Mon, 14 Apr 2014 07:25:45 GMT Server: Apache Connection: Keep-Alive Content-Type: text/html; charset=utf-8 <!DOCTYPE html> <html lang="ja"> </html>
第 2 回の内容 クライアントサーバモデル URI HTTP