/
286.txt
111 lines (85 loc) · 4.71 KB
/
286.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
[8] [DFN[[[HTTP/2]]]] は、旧来の [[HTTP]] にかわるものとして新たに開発された[[転送プロトコル]]です。
[[Google]] によって開発された [[SPDY]] が元となっています。
* 仕様書
[REFS[
- [14] '''[CITE@en[RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)]] ([TIME[2015-05-15 10:14:54 +09:00]] 版) <https://tools.ietf.org/html/rfc7540>'''
-- [17] [CITE@en[RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)]] ([TIME[2015-05-15 10:14:54 +09:00]] 版) <https://tools.ietf.org/html/rfc7540#section-3>
- [15] [CITE@en[RFC 7541 - HPACK: Header Compression for HTTP/2]] ([TIME[2015-05-15 10:13:02 +09:00]] 版) <https://tools.ietf.org/html/rfc7541>
]REFS]
* プロトコル
[FIG(short list)[
- [[HTTPエンドポイント]]
-- [[HTTPクライアント]]
-- [[HTTPサーバー]]
- [[HTTP接続]]
- [[HTTPストリーム]]
- [[HTTPフレーム]]
- [[接続エラー]]
- [[ストリームエラー]]
]FIG]
* 識別子
[19] [[ALPN]] の識別子 [DFN[[CODE[[[h2]]]]]] ([CODE[0x68, 0x32]]) は、
[[HTTP/2]] over [[TLS]] を表します [SRC[>>17]]。
;; [21] [[HTTP/2]] の [[Internet Draft]] は、 [CODE[[[h2-11]]]] のような値を使っていました。
[20] [CODE(HTTP)@en[[[Upgrade:]]]] [[ヘッダー]]の値 [DFN[[CODE(HTTP)@en[[[h2c]]]]]]
は、[[HTTP/2]] over [[TCP]] を表します [SRC[>>17]]。 [[ALPN]] の識別子
[CODE[[[h2c]]]] は予約されており、使いません [SRC[>>17]]。
[18] [[HTTP/1.1]] [[以下]]とは違って、[[要求行]]や[[状態行]]の[[プロトコルの版]]に相当するものはありません。
* URL
[16] [[HTTP/2]] では、 [CODE(URI)@en[[[http:]]]]/[CODE(URI)@en[[[https:]]]]
[[URL scheme]] を使います [SRC[>>17]]。 [[URL]] だけから [[HTTP/2]]
と [[HTTP/1.1]] [[以下]]を区別することはできません。
* 歴史
[9] これまで [[HTTP/1.1]] に大きな変更を加える提案としては、
[[HTTP/1.2]]、[[PEP]]、[[RFC 2774]] といった機能拡張のための機能を追加するもの、
[[WAP]] のようにバイナリー化するもの、
[[GridHTTP]] や [[Reverse HTTP]] のように特定の用法のために拡張するものなど色々ありましたが、
いずれも主流となることはできず、やがて消えてゆきました。
[10] [[HTTP]] には大きな変更が加えられることなく10年が過ぎようとしており、
[[RFC]] の改訂 ([[RFC 723x]]) はともかく、プロトコルへの変更は最早不可能との観測もありました。
[11] しかし [[Google]] が [[Web]] の高速化施策の1つとして [[SPDY]]
を提案し [[Google Chrome]] や各 [[Google]] サービスのサーバーに実装したことで、
この流れは大きく変わります。
;; [12] [[SPDY]] の歴史は、 [[SPDY]] の項を参照。
[1] [CITE@en[Rechartering HTTPbis]]
([[Mark Nottingham]] 著, [TIME[2012-01-24 12:55:46 +09:00]] 版)
<http://lists.w3.org/Archives/Public/ietf-http-wg/2012JanMar/0098.html>
[2]
[PRE(HTTP code)[
$ telnet mail.kamu.ct.tr 80
Trying 212.175.153.6...
Connected to mail.kamu.ct.tr.
Escape character is '^]'.
GET / HTTP/1.0
HTTP/2.0 302 Found
Server: SmarterTools/2.0.2692.18364
Date: Wed, 05 Mar 2014 09:02:07 GMT
X-AspNet-Version: 2.0.50727
Location: /Login.aspx
Set-Cookie: ASP.NET_SessionId=1dmqmiv3plhasn45ayqi2155; path=/; HttpOnly
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 130
Connection: Close
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="%2fLogin.aspx">here</a>.</h2>
</body></html>
]PRE]
[3] [CITE@en[draft-montenegro-httpbis-http2-negotiation-01 - HTTP 2.0 Negotiation]]
( ([TIME[2014-10-17 12:33:08 +09:00]] 版))
<http://tools.ietf.org/html/draft-montenegro-httpbis-http2-negotiation-01>
[4] [CITE[IRC logs: freenode / #whatwg / 20141210]]
( ([TIME[2014-12-11 10:00:45 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20141210#l-637>
[5] [CITE@en-US[HTTP/2 – Closing on the Final Design | MS OpenTech]]
( ([TIME[2014-02-03 10:59:53 +09:00]] 版))
<http://msopentech.com/blog/2014/01/31/http2-moving-quickly-endgame/>
[6] [CITE@en-US[HTTP/2 – “Nearing Completion” | MS Open Tech]]
( ([TIME[2014-11-04 02:54:46 +09:00]] 版))
<http://msopentech.com/blog/2014/03/19/http2-nearing-completion/>
[7] [CITE@en[Chromium Blog: Hello HTTP/2, Goodbye SPDY]]
( ([TIME[2015-02-10 03:03:41 +09:00]] 版))
<http://blog.chromium.org/2015/02/hello-http2-goodbye-spdy-http-is_9.html>
[13] [CITE@ja[HTTP2 時代のサーバサイドアーキテクチャ考察 - Block Rockin’ Codes]]
([TIME[2015-05-12 10:30:29 +09:00]] 版)
<http://jxck.hatenablog.com/entry/http2-server-side-architecture>