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全史
Search
nwiizo
May 08, 2018
390
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
HTTP全史
2018年度新卒の Web系新卒 OJT向け資料
nwiizo
May 08, 2018
More Decks by nwiizo
See All by nwiizo
型は壁、Rustでもバグを直すな、表現できなくせよ
nwiizo
14
2.1k
システムは「動く」だけでは足りない 実装編 - 非機能要件・分散システム・トレードオフをコードで見る
nwiizo
4
640
システムは「動く」だけでは 足りない - 非機能要件・分散システム・トレードオフの基礎
nwiizo
32
12k
アーキテクチャモダナイゼーションとは何か
nwiizo
19
7.2k
【社内勉強会】新年度からコーディングエージェントを使いこなす - 構造と制約で引き出すClaude Codeの実践知
nwiizo
39
23k
技術的負債の泥沼から組織を救う3つの転換点
nwiizo
9
7.7k
30分でわかるアーキテクチャモダナイゼーション
nwiizo
12
9.2k
意志を実装するアーキテクチャモダナイゼーション
nwiizo
3
5.1k
おい、テックブログを書け
nwiizo
48
21k
Featured
See All Featured
Practical Orchestrator
shlominoach
191
11k
Technical Leadership for Architectural Decision Making
baasie
3
440
How STYLIGHT went responsive
nonsquared
100
6.2k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
650
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
970
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
630
We Have a Design System, Now What?
morganepeng
55
8.2k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
390
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Transcript
None
None
• • • •
• • • •
None
~1990 1991- 1996.5- 1997.1- 2015.5- 2015 - 現在 1994 -
1995 - 1999 - 2006 - 2008 - 2013 -
• • • • • •
None
• •
None
GET /mypage.html <HTML> A very simple HTML page </HTML>
• • • •
None
• • •
GET /mypage.html HTTP/1.0 User-Agent: NCSA_Mosaic/2.0 (Windows 3.1) 200 OK Date:
Tue, 15 Nov 1994 08:12:31 GMT Server: CERN/3.0 libwww/2.17 Content-Type: text/html <HTML> A page with an image <IMG SRC="/myimage.gif"> </HTML> GET /myimage.gif HTTP/1.0 User-Agent: NCSA_Mosaic/2.0 (Windows 3.1) 200 OK Date: Tue, 15 Nov 1994 08:12:32 GMT Server: CERN/3.0 libwww/2.17 Content-Type: text/gif (画像コンテンツ)
GET /mypage.html HTTP/1.0 User-Agent: NCSA_Mosaic/2.0 (Windows 3.1) 200 OK Date:
Tue, 15 Nov 1994 08:12:31 GMT Server: CERN/3.0 libwww/2.17 Content-Type: text/html <HTML> A page with an image <IMG SRC="/myimage.gif"> </HTML> • • •
GET /mypage.html HTTP/1.0 User-Agent: NCSA_Mosaic/2.0 (Windows 3.1) 200 OK Date:
Tue, 15 Nov 1994 08:12:31 GMT Server: CERN/3.0 libwww/2.17 Content-Type: text/html <HTML> A page with an image <IMG SRC="/myimage.gif"> </HTML> • • •
GET /mypage.html HTTP/1.0 User-Agent: NCSA_Mosaic/2.0 (Windows 3.1) 200 OK Date:
Tue, 15 Nov 1994 08:12:31 GMT Server: CERN/3.0 libwww/2.17 Content-Type: text/html <HTML> A page with an image <IMG SRC="/myimage.gif"> </HTML> • • •
GET /mypage.html HTTP/1.0 User-Agent: NCSA_Mosaic/2.0 (Windows 3.1) 200 OK Date:
Tue, 15 Nov 1994 08:12:31 GMT Server: CERN/3.0 libwww/2.17 Content-Type: text/html <HTML> A page with an image <IMG SRC="/myimage.gif"> </HTML> • • •
GET /myimage.gif HTTP/1.0 User-Agent: NCSA_Mosaic/2.0 (Windows 3.1) 200 OK Date:
Tue, 15 Nov 1994 08:12:32 GMT Server: CERN/3.0 libwww/2.17 Content-Type: text/gif (画像コンテンツ) • •
GET /myimage.gif HTTP/1.0 User-Agent: NCSA_Mosaic/2.0 (Windows 3.1) 200 OK Date:
Tue, 15 Nov 1994 08:12:32 GMT Server: CERN/3.0 libwww/2.17 Content-Type: text/gif (画像コンテンツ) • •
GET /myimage.gif HTTP/1.0 User-Agent: NCSA_Mosaic/2.0 (Windows 3.1) 200 OK Date:
Tue, 15 Nov 1994 08:12:32 GMT Server: CERN/3.0 libwww/2.17 Content-Type: text/gif (画像コンテンツ) • •
None
• • HTTP/1.1 は、1997 年 1 月に RFC 2068
として 初版が発行されました。
• • • • • • •
• • •
• • • • • • •
None
GET /en-US/docs/Glossary/Simple_header HTTP/1.1 Host: developer.mozilla.org User-Agent: Mozilla/5.0 (Macintosh; Intel Mac
OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header
200 OK Connection: Keep-Alive Content-Encoding: gzip Content-Type: text/html; charset=utf-8 Date:
Wed, 20 Jul 2016 10:55:30 GMT Etag: "547fa7e369ef56031dd3bff2ace9fc0832eb251a" Keep-Alive: timeout=5, max=1000 Last-Modified: Tue, 19 Jul 2016 00:59:33 GMT Server: Apache Transfer-Encoding: chunked Vary: Cookie, Accept-Encoding ( )
GET /static/img/header-background.png HTTP/1.1 Host: developer.cdn.mozilla.net User-Agent: Mozilla/5.0 (Macintosh; Intel Mac
OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header
200 OK Age: 9578461 Cache-Control: public, max-age=315360000 Connection: keep-alive Content-Length:
3077 Content-Type: image/png Date: Thu, 31 Mar 2016 13:34:46 GMT Last-Modified: Wed, 21 Oct 2015 18:27:50 GMT Server: Apache (3077 )
None
オープン クローズ オープン クローズ
オープン クローズ オープン クローズ
オープン クローズ
オープン クローズ
オープン クローズ コネクションの クローズオープン時の通信を減らすことができる
• connection : Keep-Alive • HTTP通信はTCP/IP通信なので[3WAY ハンドシェイク] の上で動作するプロトコルなので 接続には1.5往復分のやり取りを必要とします. packetが一往復する時間を1RTT(ラウンドトリップタイム)と呼びますが
TLSでは2RTT分の時間がかかります. Keep-Aliveを使うことでこのハンドシェイクの回数を減らせます.
• connection : Close • Internet Explorer 60s Firefox 115s
nginx 65 or 75s Apache ver1.3,2.0 15s /ver2.2 ~ 5s
None
オープン クローズ
オープン クローズ
• • •
•
None
None
~1990 1991- 1996.5- 1997.1- 2015.5- 2015 - 現在 1994 -
1995 - 1999 - 2006 - 2008 - 2013 -
~1990 1991- 1996.5- 1997.1- 2015.5- 2015 - 現在 1994 -
1995 - 1999 - 2006 - 2008 - 2013 -
None
None
None
None
• • • •
None
サイトの主体者 発行者(認証局) 公開鍵 有効期限
1.SSL証明書の取得
2.サーバー証明書の 信頼性を確認
3.共通鍵を生成して 証明書内の公開鍵で 暗号化
4.暗号化された鍵の複製
5.複合化した鍵で通信
None
None
• • •
None
None
None
• • • • • • 1回の通信で接続の確立で何往復もパケットが飛び交います. これまでの高速化はあらゆるところに寄与してきました. HTTP2.0ではこれまで手を付けられてこなかったヘッダー部分の圧縮や,規格化されたものの今 一つ活用されていなかったパイプラインの代替実装が追加されました.
また,パイプラインで発生した互換性問題もTLSのALPNという仕組みで丸ごと通信形式を切り 替える方式になっています.
• • •
None
None
• • •
• •
• •
None
None
• • • • •
None