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
tera
October 01, 2016
Technology
0
230
HTTPをしゃべろう~Firefoxになるために~
平成28年10月1日(土): CookHack #1 〜火狐(フォクすけ)とパイを焼きまくれ!〜 にて話しました
tera
October 01, 2016
Tweet
Share
More Decks by tera
See All by tera
ピッてやるとシュッてなるやつを作った話
tera
0
260
Pythonを読む
tera
0
220
importを理解したかった
tera
0
650
RustでShell作ろう
tera
0
930
Other Decks in Technology
See All in Technology
AWS DMS で SQL Server を移行してみた/aws-dms-sql-server-migration
emiki
0
250
Amazon Athena で JSON・Parquet・Iceberg のデータを検索し、性能を比較してみた
shigeruoda
1
150
ViteとTypeScriptのProject Referencesで 大規模モノレポのUIカタログのリリースサイクルを高速化する
shuta13
3
220
プロダクト開発と社内データ活用での、BI×AIの現在地 / Data_Findy
sansan_randd
1
540
OTEPsで知るOpenTelemetryの未来 / Observability Conference Tokyo 2025
arthur1
0
290
MCP ✖️ Apps SDKを触ってみた
hisuzuya
0
390
コンパウンド組織のCRE #cre_meetup
layerx
PRO
1
280
Kubernetes self-healing of your workload
hwchiu
0
580
ラスベガスの歩き方 2025年版(re:Invent 事前勉強会)
junjikoide
0
430
「タコピーの原罪」から学ぶ間違った”支援” / the bad support of Takopii
piyonakajima
0
150
現場の壁を乗り越えて、 「計装注入」が拓く オブザーバビリティ / Beyond the Field Barriers: Instrumentation Injection and the Future of Observability
aoto
PRO
1
640
AIの個性を理解し、指揮する
shoota
1
230
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6k
Scaling GitHub
holman
463
140k
Designing for humans not robots
tammielis
254
26k
A better future with KSS
kneath
239
18k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
930
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.7k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Site-Speed That Sticks
csswizardry
13
930
Documentation Writing (for coders)
carmenintech
75
5.1k
YesSQL, Process and Tooling at Scale
rocio
173
15k
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に書いてある(らしい) • 結構みっちり決まってる •
英語(死)