知らないと卒業できない HTTP の話
araya @arayaryoma
2021-01-25
自己紹介
araya
- Twitter: @arayaryoma
- GitHub: @arayaryoma
- 職業: 報道・出版系の会社で Web エンジニア
なんで来たの?
視聴だけするつもりだったけど召喚されました。 😈🔯
5 分で HTTP とは何かみたいな話をします。
卒業と関係するかどうかは尾上さんに聞いてください(多分しない)。
特に物は作ってないので講義っぽくなっちゃった。ごめんなさい。
スライドに登場する落書きしか作ってない。
HTTP って?
Hyper Text Transfer Protocol。 Web におけるクライアント-サーバー間のリクエスト/レスポンスのやり取りで主に用いられる通信プロトコル。
プロトコル(Protocol)
やりとりを行うもの同士が確実に必要な手続きを行うための、手順や方法の規約
HTTP があるおかげで、
- サーバーはクライアントが何を要求してるか知ることができ
- クライアントはサーバーから送られてきたデータを理解することができる
プロトコルのスタック
- コンピューター同士の通信は最終的には電気信号など、物理的に通信相手に伝えるられるものになる。
- コンピューターではもちろん HTTP 以外の通信プロトコルも扱える。
- プロトコルは階層構造を持つ。
- 送信者はデータをプロトコルで決められたルールで作り、それを更に低い階層で繰り返していく。
- 受信者はその逆に、プロトコルで決められたルールでデータを取り出していく。
- 「OSI 参照モデル」 で調べてね!
- 🪓🐼「聞いたことがないはずがない」(半分発表者の空想でありフィクション)
プロトコルがないと...
サーバーはクライアントからなにかデータが送られてきても、それがどういう意味を持つのか理解ができない。
もっと低いレイヤーでみると、何らかしらの信号が送られてきてもそれが何であるか理解ができない。
HTTP の仕様は誰が決めている?
IETF (Internet Engineering Task Force)
- HTTP や TCP など、インターネットに関する様々な技術の標準化に取り組む団体
- 新しいプロトコルがでるとまずは Draft という形で公開される
- 設計上の問題点の解消や、必要な議論やレビュー、実装が一通りまとまるとRFC(Request For Comments)という形で公開される
- 例: RFC7230(HTTP/1.1), RFC7231(HTTP Semantics and Content), RFC7540(HTTP/2)
- HTTP に関連する RFC がまとまっているページ: https://httpwg.org/specs/
- 一度出た RFC が同じ番号のまま更新されることはない。
- RFC に問題があり更新の必要があるときは新しい(別の番号が振られた) RFC として公開される。(たとえ 1 文字の typo 修正であろうと)
HTTP も改善が続けられている
HTTP? HTTPS?
- TLS という暗号化の仕組みをつかうことによって、HTTP で送受信されるデータは通信経路上で暗号化されている。
- "SSL" は TLS の昔の名称。SSL のバージョンアップを続けるうち、TLS という名称に変更になった。
- 第三者による内容の盗聴の防止や改ざんされた情報の検知をすることができる。
- 閲覧している Web サイトそのものの安全性、Web サイト提供者の信頼性を担保するものではない
HTTP 上でやり取りされるデータ
仕様で決められたフォーマットに乗っ取り、status, header, body を送信する
https://example.com をブラウザで開き、開発者ツールのネットワークツールをみると、シンプルなサイトでも意外に多くの Request header / Response header が送られきていることが分かる。
- 🪓🐼「全部説明できますか?」(発表者の空想でありフィクション)
HTTP への興味が湧いたら
個人的にまずおすすめしたい読み物はこれ
- Real World HTTP 第 2 版 ―歴史とコードに学ぶインターネットとウェブ技術 https://www.amazon.co.jp/dp/4873119030/
その次は RFC を読んでみよう!
- HTTP 関連の RFC まとめ: https://httpwg.org/specs/
- 日本語訳(非公式): https://triple-underscore.github.io/http-common-ja.html
おわり
ありがとうございました。
皆様の楽しい学生生活と無事に修了することを応援しています 👏