Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

HTTPのお話

HTTPのお話 at digiporo #3
http://digiporo.connpass.com/event/24503/
2016/01/15

  • Login to see the comments

  • Be the first to like this

HTTPのお話

  1. 1. HTTPのお話HTTPのお話 NASA9084NASA9084 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 1 / 54 2016年01月15日 20:07
  2. 2. 準備準備 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 2 / 54 2016年01月15日 20:07
  3. 3. URIとURL,URNURIとURL,URN URL Uniform Resource Locator URN Uniform Resource Name ↓ URI Uniform Resource Identi�er (RFC2396→RFC3986) HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 3 / 54 2016年01月15日 20:07
  4. 4. URIの形式URIの形式 scheme://user:password@domain:port/resource scheme http, ftp, mailto, … domain hogehoge.com port TCP/IP Port resource /path/to/resource.extension HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 4 / 54 2016年01月15日 20:07
  5. 5. TCP/IPPORTTCP/IPPORT TCP/IPで使用する番号 情報の出入り口や港のようなもの →これでどのアプリケーションの通信なのか判断できる HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 5 / 54 2016年01月15日 20:07
  6. 6. WELL-KNOWNPORTWELL-KNOWNPORT 慣例的に、用途が固定化しているTCP/IPポート番号 ポート番号 サービス/プロトコル 20 FTP 22 SSH 80 HTTP 110 POP3 443 HTTP over SSL/TLS 465 SMTP over SSL/TLS 993 IMAP over SSL/TLS HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 6 / 54 2016年01月15日 20:07
  7. 7. TLSTLS Transport Layer Security 通信相手の認証 通信内容の暗号化 改竄の検出 トランスポート層とアプリケーション層の間 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 7 / 54 2016年01月15日 20:07
  8. 8. TCP/IP4階層モデルTCP/IP4階層モデル 現在のインターネット通信で最も利用されている通信プロトコル 群 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 8 / 54 2016年01月15日 20:07
  9. 9. HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 9 / 54 2016年01月15日 20:07
  10. 10. TCP/IPモデルの流れTCP/IPモデルの流れ 送信側は上層から下層へ、受信側は下層から上層へ 送信時は順に情報を付加する 受信時は順に情報を外していく HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 10 / 54 2016年01月15日 20:07
  11. 11. HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 11 / 54 2016年01月15日 20:07
  12. 12. 今回のベース今回のベース HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 12 / 54 2016年01月15日 20:07
  13. 13. HTTPHTTP Hypertext Transfer Protocol ネットワークで情報をやり取りするための決めごと サーバーとクライアントという2つの「役割」がある よく使われるのはHTTP/1.1 (RFC2616, RFC7230 - RFC7235) 今後はHTTP/2 (RFC7540) トランスポートプロトコルとしてTCPを利用 リクエスト - レスポンス型プロトコル URIでリソースを指定 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 13 / 54 2016年01月15日 20:07
  14. 14. 具体的には・・・具体的には・・・ HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 14 / 54 2016年01月15日 20:07
  15. 15. HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 15 / 54 2016年01月15日 20:07
  16. 16. HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 16 / 54 2016年01月15日 20:07
  17. 17. HTTP通信の基本的な流れHTTP通信の基本的な流れ HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 17 / 54 2016年01月15日 20:07
  18. 18. HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 18 / 54 2016年01月15日 20:07
  19. 19. HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 19 / 54 2016年01月15日 20:07
  20. 20. HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 20 / 54 2016年01月15日 20:07
  21. 21. HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 21 / 54 2016年01月15日 20:07
  22. 22. REQUESTとRESPONSEREQUESTとRESPONSE HTTPとは要求を送って、その返答を返してもらう仕組み 要求をRequest, 返答をResponseという 要求・返答の時に送るメッセージをそれぞれ、Request Message, Response Messageという これらのメッセージをまとめてHTTP Messageという HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 22 / 54 2016年01月15日 20:07
  23. 23. HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 23 / 54 2016年01月15日 20:07
  24. 24. HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 24 / 54 2016年01月15日 20:07
  25. 25. REQUESTMETHODの種類REQUESTMETHODの種類 主に使うのは2つ Method 用途 GET データの取得要求 POST データの送信要求 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 25 / 54 2016年01月15日 20:07
  26. 26. HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 26 / 54 2016年01月15日 20:07
  27. 27. RESPONSECODEの大まかな種類RESPONSECODEの大まかな種類 三桁の数字で大まかな情報がわかる コード 種別 意味 1xx 情報 処理継続 2xx 成功 理解、受理済み 3xx リダイレクション 追加処理が必要 4xx クライアントエラー リクエストに誤り 5xx サーバーエラー 処理に失敗 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 27 / 54 2016年01月15日 20:07
  28. 28. RESPONSECODEの例RESPONSECODEの例 code メッセージ 意味 200 OK リクエスト成功 301 Moved Permanently 恒久的に移動した 401 Unauthorized 認証が必要 403 Forbidden 禁止 404 Not Found 未検出 451 Unavailable For Legal Reasons 政治的検閲による閲 覧禁止 500 Internal Server Error サーバ内部エラー 503 Service Unavailable サービス利用不可 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 28 / 54 2016年01月15日 20:07
  29. 29. HTTPの歴史HTTPの歴史 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 29 / 54 2016年01月15日 20:07
  30. 30. HTTP/0.9HTTP/0.9 最初のHTTP 1991年に最初にドキュメント化されたHTTP 非常にシンプルで、紙一枚で済む程度 メソッドはGETのみ ヘッダもなし HTMLのみが使われることを想定 GET /index.html HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 30 / 54 2016年01月15日 20:07
  31. 31. HTTP/1.0HTTP/1.0 1995年にRFC1945として初版が発行 メソッドが増えた レスポンスにヘッダがつくように ステータスコード リクエストにバージョンをつけることに GET /index.html HTTP/1.0 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 31 / 54 2016年01月15日 20:07
  32. 32. HTTP/1.1HTTP/1.1 1997年にRFC2068として初版が発表 その後二回改定 RFC2616 RFC7230 - 7235 バーチャルホストのサポート Hostヘッダの登場 持続的接続のサポート GET /index.html HTTP/1.1 Host: hoge.fuga.com HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 32 / 54 2016年01月15日 20:07
  33. 33. SPDYSPDY Google発の通信プロトコル HTTPを基にして高速化を行ったプロトコル TLS接続の上にセッション層を追加 単一のSPDYセッションで複数のリクエストを送受信 データの先読み機能 HTTPS必須 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 33 / 54 2016年01月15日 20:07
  34. 34. HTTP/2HTTP/2 16年ぶりHTTPバージョンアップ SPDYをベースに策定 2015年にRFC7540として文書化 HTTP/1.1との後方互換性を維持 非同期接続の多重化 ヘッダ圧縮 リクエスト・レスポンスのパイプライン化 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 34 / 54 2016年01月15日 20:07
  35. 35. HTTPの問題HTTPの問題 HTTPにはいくつかの問題点がある 認証問題 セッションステートレス問題 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 35 / 54 2016年01月15日 20:07
  36. 36. (セッション)ステートレス問題(セッション)ステートレス問題 HTTPは非常に簡単な仕組み 声をかけて返事してもらうだけ 返事が終わったら会話(session)は終わり →状態(state)を記憶できない(less) HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 36 / 54 2016年01月15日 20:07
  37. 37. ステートフルとステートレスステートフルとステートレス ハンバーガー店を例に 参考 : http://yohei-y.blogspot.jp/2007/10/blog-post.html HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 37 / 54 2016年01月15日 20:07
  38. 38. ステートフルなセッションステートフルなセッション 客「こんにちは」 店員「いらっしゃいませ。○○バーガーへようこそ」 客「ハンバーガーセットをお願いします」 店員「サイドメニューは何になさいますか?」 客「ポテトで」 店員「ドリンクは何になさいますか?」 客「ジンジャーエールで」 店員「+50円でドリンクをLサイズにできますがいかがですか?」 客「Mでいいです」 店員「以上でよろしいですか?」 客「はい」 店員「かしこまりました」 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 38 / 54 2016年01月15日 20:07
  39. 39. ステートレスなセッションステートレスなセッション 客「こんにちは」 店員「いらっしゃいませ。○○バーガーへようこそ」 客「ハンバーガーセットをお願いします」 店員「サイドメニューは何になさいますか?」 客「ハンバーガーセットをポテトでお願いします」 店員「ドリンクは何になさいますか?」 客「ハンバーガーセットをポテトとジンジャーエールでお願いします」 店員「+50円でドリンクをLサイズにできますがいかがですか?」 客「ハンバーガーセットをポテトとジンジャーエール(M)でお願いします」 店員「以上でよろしいですか?」 客「ハンバーガーセットをポテトとジンジャーエール(M)でお願いします。以上」 店員「かしこまりました」 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 39 / 54 2016年01月15日 20:07
  40. 40. なぜステートレスなのかなぜステートレスなのか HTTPの通信を考えると、ステートレスの利点が大きい HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 40 / 54 2016年01月15日 20:07
  41. 41. ステートレスの利点ステートレスの利点 スケーラビリティがある HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 41 / 54 2016年01月15日 20:07
  42. 42. 同時受付対応のセッション同時受付対応のセッション 客「こんにちは」 店員1「いらっしゃいませ。○○バーガーへようこそ」 客「ハンバーガーセットをお願いします」 店員2「サイドメニューは何になさいますか?」 客「ハンバーガーセットをポテトでお願いします」 店員3「ドリンクは何になさいますか?」 客「ハンバーガーセットをポテトとジンジャーエールでお願いします」 店員4「+50円でドリンクをLサイズにできますがいかがですか?」 客「ハンバーガーセットをポテトとジンジャーエール(M)でお願いします」 店員5「以上でよろしいですか?」 客「ハンバーガーセットをポテトとジンジャーエール(M)でお願いします。以上」 店員6「かしこまりました」 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 42 / 54 2016年01月15日 20:07
  43. 43. HTTPCOOKIEHTTPCOOKIE ウェブサーバとウェブブラウザ間で状態を管理するプロトコル 保存された情報そのものもCookieと呼ぶ HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 43 / 54 2016年01月15日 20:07
  44. 44. ステートレス問題の解決ステートレス問題の解決 HTTPだけではステートレス問題が存在 いくつかの解決策を考案 IPアドレスにより区別 プライベートネットワークからのアクセスを区別できない 状態をURLに含める 本来二度起きない状態が何度も発生してしまう →ネットスケープ・ナビゲータがCookieを実装 HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 44 / 54 2016年01月15日 20:07
  45. 45. HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 45 / 54 2016年01月15日 20:07
  46. 46. RESTFULAPIRESTFULAPI HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 46 / 54 2016年01月15日 20:07
  47. 47. RESTREST REpresentational State Transfer 分散システムで複数のソフトを連携させるのに適した設計原則 セッションなどの状態管理を行わない 情報を操作する命令の体型が予め定義・共有されている すべての情報は汎用的な構文で一意に識別される 情報内に別の情報や状態へのリンクを含めることができる →HTTPと非常に相性が良い HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 47 / 54 2016年01月15日 20:07
  48. 48. RESTをHTTPに対応付けると・・・RESTをHTTPに対応付けると・・・ セッションなどの状態管理を行わない HTTPはステートレス 情報を操作する命令の体型が予め定義・共有されている GET/POSTなど すべての情報は汎用的な構文で一意に識別される URI 情報内に別の情報や状態へのリンクを含めることができる HTML,XMLなど HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 48 / 54 2016年01月15日 20:07
  49. 49. APIAPI Application Programming Interface プログラムの機能・情報を外部から利用するための規約 例えば・・・ File IO API(OSが提供) HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 49 / 54 2016年01月15日 20:07
  50. 50. WEBAPIWEBAPI あるURIにHTTPリクエストを送信すると処理結果を返してくれる HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 50 / 54 2016年01月15日 20:07
  51. 51. RESTFULAPIRESTFULAPI RESTに従って設計されたAPI →一般にはweb APIにRESTを適用 = RESTful API 同じURIに対する呼び出しには常に同じ結果が返される HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 51 / 54 2016年01月15日 20:07
  52. 52. RESTFULAPIの例RESTFULAPIの例 twitter REST API Github API HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 52 / 54 2016年01月15日 20:07
  53. 53. 何が嬉しい?何が嬉しい? HTTPの基本的な動作を理解していると、同じような操作で簡単 に取り扱える! HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 53 / 54 2016年01月15日 20:07
  54. 54. THANKYOU!THANKYOU! HTTPのお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/... 54 / 54 2016年01月15日 20:07

×