Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
HTTPをしゃべろう~Firefoxになるために~
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
tera
October 01, 2016
Technology
250
0
Share
HTTPをしゃべろう~Firefoxになるために~
平成28年10月1日(土): CookHack #1 〜火狐(フォクすけ)とパイを焼きまくれ!〜 にて話しました
tera
October 01, 2016
More Decks by tera
See All by tera
ピッてやるとシュッてなるやつを作った話
tera
0
260
Pythonを読む
tera
0
230
importを理解したかった
tera
0
660
RustでShell作ろう
tera
0
950
Other Decks in Technology
See All in Technology
RedmineをAIで効率的に使う検証
yoshiokacb
0
120
JTCでRedmine利用者2700人を実現した手法 第二部
nobuonakamura
0
110
サンプリングは「作る」のか「使う」のか? 分散トレースのコストと運用を両立する実践的戦略 / Why you need the tail sampling and why you don't want it
ymotongpoo
4
180
パーソルキャリア IT/テクノロジー職向け 会社紹介資料|Company Introduction Deck
techtekt
PRO
0
190
生成AI時代に信頼性をどう保ち続けるか - Policy as Code の実践
akitok_
1
430
【関西製造業祭り2026春】現場を変える技術はここまで来た〜世界最大の製造業見本市から持って帰ってきたもの〜
tanakaseiya
0
170
SpeechTranscriber + AIによる文字起こし機能
kazuki1220
0
100
Oracle Cloud Infrastructure presents managed, serverless MCP Servers for Oracle AI Database
thatjeffsmith
1
330
(きっとたぶん)人材育成や教育のような何かの話
sejima
0
750
分断された OT と IT を繋ぐ架け橋 -Kubernetes が切り拓く 産業用組み込み製品の現在地 -
yudaiono
1
120
いつの間にかデータエンジニア以外の業務も増えていたけど、意外と経験が役に立ってる
zozotech
PRO
0
620
Claude Code / Codex / Kiro に AWS 権限を 渡すとき、何を設計すべきか
k_adachi_01
5
1.5k
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
WCS-LA-2024
lcolladotor
0
590
Un-Boring Meetings
codingconduct
0
290
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
[SF Ruby Conf 2025] Rails X
palkan
2
1k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
220
My Coaching Mixtape
mlcsv
0
130
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Music & Morning Musume
bryan
47
7.2k
How to Think Like a Performance Engineer
csswizardry
28
2.6k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
740
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.2k
Transcript
HTTPをしゃべろう ~Firefoxになるために~ By @tera_3939
自己紹介 • お名前 • @tera_3939 • 所属 • Firefox学生マーケティングチーム •
Rustはむつかしい…… • Webできない……
はなすこと • 自己紹介 • Firefoxが何をしているか知る • HTTPについて • リクエスト •
レスポンス • 実際にしゃべる
Firefoxになるためには
まず何をしているか知ろう
Firefoxが何をしているのか HTTP・HTTPS とかで リソースを取ってくる レンダリングエンジンで ちょめちょめ Webページを表示 詳しくは:“ブラウザの仕組み: 最新ウェブブラウザの内部構造” http://www.html5rocks.com/ja/tutorials/internals/howbrowserswork/
Firefoxが何をしているのか HTTP・HTTPS とかで リソースを取ってくる レンダリングエンジンで ちょめちょめ Webページを表示 今回は ここになる 詳しくは:“ブラウザの仕組み:
最新ウェブブラウザの内部構造” http://www.html5rocks.com/ja/tutorials/internals/howbrowserswork/
くわしいひとへ • 今回HTTPSのお話はないです • HTTP/2のお話もないです • (というか僕がまったくわからない)
HTTPとは • HyperTextTransferProtocol • ステートレス • C/Sモデル • リクエストとレスポンスで成り立っている •
テキストデータでやり取り • TCPで80番ポート • 今はもう大概HTTPS
しくみ クライアント サーバー リソースちょーだい あいよ リクエスト レスポンス
実際に見てみる • Firefoxの開発ツール(F12)のネットワークで確認
リクエスト • クライアントからサーバーに要求をする • /index.htmlをちょーだい、とか
要求例 GET /hoge/fuga.html HTTP/1.1 // request-line Host: foobar.co.jp // header-field
request-line • どんなリクエストなのか表す • データを取得するだけとか、データを送信したいとか
request-line method SP request-target SP HTTP-version CRLF SP: 半角スペース CRLF:
改行文字
request-line • method • サーバーに要求する動作の指定 ex) GET, POST • request-target
• 要求するコンテンツの場所 ex) /, /img/hoge.png • HTTP-version • 使用するプロトコルのバージョン ex) 1.1
header-field • リクエスト自身の情報を表す • HostとかUser-Agentとか
header-field field-name “:” OWS field-value OWS OWS: 省略可能な半角スペース
header-field • field-name • HostとかUser-Agentとか • field-value • ドメイン名とか
レスポンス • サーバーからの応答 • 問題ないよとか、そんなもんねぇよとか
応答例 HTTP/1.1 200 OK // status-line Date: Tue, 20 Sep
2016 14:25:52 GMT // header-field Content-Type: text/html ...
status-line HTTP-version SP status-code SP reason-phrase CRLF SP: 半角スペース CRLF:
改行
status-line • HTTP-version • HTTPのバージョン ex) HTTP/1.1とか • status-code •
サーバーの応答結果 ex) 200とか404とか • reason-phrase • status-codeに対応した単語とか ex)OKとかNOT FOUNDとか
header-field • field-name • Content-TypeとかDateとか • field-value • text/htmlとか
まとめると
リクエストを送ると GET /hoge/fuga.html HTTP/1.1 // request-line Host: foobar.co.jp // header-field
応答が来る HTTP/1.1 200 OK // status-line Date: Tue, 20 Sep
2016 14:25:52 GMT // header-field Content-Type: text/html ...
これをさえあれば • HTTPがしゃべれる!!
これをさえあれば • HTTPがしゃべれる!! =Firefoxになれる!!!
実際に“なってみる“
telnet • TCPを話せる • 相手につないでテキストデータを送れる • デフォルトのポート番号は23番
$ telnet domain.name 80
None
Firefoxになった!!(?)
5分9厘ぐらいは……
まとめ • Firefoxは偉大
詳細 • RFC(Request for Comments) • HTTP/1.1は7230~7235に書いてある(らしい) • 結構みっちり決まってる •
英語(死)