翻蚳è
ããïŒããã«ãHTTPãããã³ã«ãšãã®å±¥æŽã®æŠèŠããããŸã-ããŒãžã§ã³0.9ããããŒãžã§ã³2ãŸã§ã
HTTPã¯Webãã¢ã·ã³ã°ãããã³ã«ã§ãã ãã¹ãŠã®Webéçºè
ã¯ãããç¥ãå¿
èŠããããŸãã HTTPã®ä»çµã¿ãç解ãããšãWebã¢ããªã±ãŒã·ã§ã³ãæ¹åã§ããŸãã
ãã®èšäºã§ã¯ãHTTPãšã¯äœããã©ã®ããã«HTTPãä»æ¥ã®ããã«ãªã£ããã«ã€ããŠèª¬æããŸãã
HTTPãšã¯äœã§ããïŒ
ããã§ã¯ãHTTPãšã¯äœããèŠãŠã¿ãŸãããã HTTPã¯ãTCP / IPãä»ããŠå®è£
ãããã¢ããªã±ãŒã·ã§ã³å±€ãããã³ã«ã§ãã HTTPã¯ãã¯ã©ã€ã¢ã³ããšãµãŒããŒãçžäºã«ããåãããæ¹æ³ãã³ã³ãã³ããã€ã³ã¿ãŒãããäžã§èŠæ±ããã³éä¿¡ãããæ¹æ³ã決å®ããŸãã ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã®ãããã³ã«ã§ã¯ãããã¯åãªãæœè±¡åã§ããããããã¯ãŒã¯ããŒãïŒã¯ã©ã€ã¢ã³ããšãµãŒããŒïŒãçžäºã«å¯Ÿè©±ããæ¹æ³ãæšæºåããããšãç解ããŠããŸãã HTTPèªäœã¯TCP / IPãããã³ã«ã«äŸåããŠãããããã¯ã©ã€ã¢ã³ããšãµãŒããŒéã§ãªã¯ãšã¹ããéåä¿¡ã§ããŸãã ããã©ã«ãã§ã¯ãTCPããŒã80ã䜿çšãããŸãããä»ã®ããŒãã䜿çšã§ããŸãã ããšãã°ãHTTPSã¯ããŒã443ã䜿çšããŸãã
HTTP / 0.9-æåã®æšæºïŒ1991ïŒ
ææžåãããæåã®HTTPããŒãžã§ã³ã¯ã1991幎ã«ãªãªãŒã¹ãããHTTP / 0.9ã§ããã ããã¯ãGETãšãã1ã€ã®æ¹æ³ã§ãäžçã§æãåçŽãªãããã³ã«ã§ããã ã¯ã©ã€ã¢ã³ãããµãŒããŒäžã®ããŒãžãååŸããå¿
èŠãããå Žåã圌ã¯ãªã¯ãšã¹ããè¡ããŸããã
GET /index.html
ãããŠããµãŒããŒãã次ã®ãããªãã®ãæ¥ãŸããïŒ
(response body) (connection closed)
以äžã§ãã ãµãŒããŒã¯èŠæ±ãåä¿¡ããå¿çãšããŠHTMLãéä¿¡ãããã¹ãŠã®ã³ã³ãã³ããéä¿¡ããããšããã«æ¥ç¶ãéããŸãã HTTP / 0.9ã«ã¯ããããŒããããŸãããå¯äžã®æ¹æ³ã¯GETã§ãããçãã¯HTMLã§æäŸãããŸãã
ãã®ãããHTTP / 0.9ã¯æ®ãã®æŽå²ã®æåã®ã¹ãããã§ããã
HTTP / 1.0-1996
HTMLå¿çå°çšã«èšèšãããHTTP / 0.9ãšã¯ç°ãªããHTTP / 1.0ã¯ä»ã®åœ¢åŒïŒç»åããããªãããã¹ãããã®ä»ã®çš®é¡ã®ã³ã³ãã³ãïŒãåŠçããŸãã æ°ããã¡ãœãããè¿œå ãããŸããïŒPOSTãHEADãªã©ïŒã èŠæ±/å¿çã®åœ¢åŒãå€æŽãããŸããã èŠæ±ãšå¿çã«è¿œå ãããHTTPããããŒã ããŸããŸãªãµãŒããŒå¿çãåºå¥ããããã«ãã¹ããŒã¿ã¹ã³ãŒããè¿œå ãããŸããã ãšã³ã³ãŒãã®ãµããŒããå°å
¥ãããŸããã ãã«ãããŒãã¿ã€ããèªèšŒããã£ãã·ã¥ãã³ã³ãã³ãã®ããŸããŸãªãšã³ã³ãŒãã£ã³ã°ãªã©ãè¿œå ãããŸããã
ããã¯ãHTTP / 1.0ã®åçŽãªãªã¯ãšã¹ããšã¬ã¹ãã³ã¹ã®å€èŠ³ã§ãã
GET / HTTP/1.0 Host: kamranahmed.info User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) Accept: *
èŠæ±ã«å ããŠãã¯ã©ã€ã¢ã³ãã¯å人æ
å ±ãå¿
èŠãªå¿çã®çš®é¡ãªã©ãéä¿¡ããŸããã HTTP / 0.9ã§ã¯ãããããŒãååšããªãã£ããããã¯ã©ã€ã¢ã³ãã¯ãã®ãããªæ
å ±ãéä¿¡ããŸããã§ããã
åæ§ã®èŠæ±ã«å¯Ÿããå¿çã®äŸïŒ
HTTP/1.0 200 OK Content-Type: text/plain Content-Length: 137582 Expires: Thu, 05 Dec 1997 16:00:00 GMT Last-Modified: Wed, 5 August 1996 15:55:28 GMT Server: Apache 0.84 (response body) (connection closed)
å¿çã®å
é ã¯HTTP / 1.0ïŒHTTPããã³ããŒãžã§ã³çªå·ïŒã§ãããã¹ããŒã¿ã¹ã³ãŒãã¯200ãã¹ããŒã¿ã¹ã³ãŒãã®èª¬æã§ãã
æ°ããããŒãžã§ã³ã§ã¯ãèŠæ±ããã³å¿çããããŒã¯ASCIIã§ãšã³ã³ãŒããããŸããïŒãã¹ãŠã®HTTP / 0.9ã¯ASCIIã§ãšã³ã³ãŒããããŸããïŒããå¿çæ¬æã¯ä»»æã®ã³ã³ãã³ãã¿ã€ãïŒç»åããããªãHTMLããã¬ãŒã³ããã¹ããªã©ïŒã«ãªããŸããã¯ã©ã€ã¢ã³ããžã®ã³ã³ãã³ãã®çš®é¡ããããã£ãŠãé åèªHTTPã®ããã€ããŒããã¹ãããšãããã¬ãŒãºã¯æªã¿ã«ãªã£ãŠããŸãã HMTPããŸãã¯ãã€ããŒã¡ãã£ã¢è»¢éãããã³ã«ã¯ãããããããé©åãªååã«ãªããŸããããããŸã§ã«èª°ãããã§ã«HTTPã«æ
£ããŠããŸããã
HTTP / 1.0ã®äž»ãªæ¬ ç¹ã®1ã€ã¯ãåãæ¥ç¶äžã«è€æ°ã®èŠæ±ãéä¿¡ã§ããªãããšã§ãã ã¯ã©ã€ã¢ã³ãããµãŒããŒããäœããååŸããå¿
èŠãããå Žåãã¯ã©ã€ã¢ã³ãã¯æ°ããTCPæ¥ç¶ãéãå¿
èŠããããèŠæ±ãå®äºãããšããã«ãã®æ¥ç¶ã¯éããããŸãã åŸç¶ã®ãªã¯ãšã¹ãããšã«ãæ°ããæ¥ç¶ãäœæããå¿
èŠããããŸãã
ãªããããæªãã®ã§ããïŒ 10åã®ç»åã5åã®ã¹ã¿ã€ã«ãã¡ã€ã«ã5åã®JavaScriptãã¡ã€ã«ãå«ãããŒãžãéããšä»®å®ããŸãã ãã®ããŒãžãç
§äŒããå Žåãåèšã§20ã®ãªãœãŒã¹ãååŸããå¿
èŠããããŸããã€ãŸãããµãŒããŒã¯20ã®åå¥ã®æ¥ç¶ãäœæããå¿
èŠããããŸãã æ°ããTCPæ¥ç¶ããšã«ãããªãã«ãã³ãã·ã§ã€ã¯ããšããã«ç¶ãã¹ããŒã¹ã¿ãŒããå¿
èŠã«ãªãããããã®æ¥ç¶æ°ã¯ããã©ãŒãã³ã¹ã«å€§ãã圱é¿ããŸãã
ããªãã«ãã³ãã·ã§ã€ã¯
ãããªãã«ãã³ãã·ã§ã€ã¯ããšã¯ãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®äžé£ã®ãã±ããã®äº€æã§ãããTCPæ¥ç¶ã確ç«ããŠããŒã¿è»¢éãéå§ã§ããŸãã
- SYN-ã¯ã©ã€ã¢ã³ãã¯xãªã©ã®ä¹±æ°ãçæãããµãŒããŒã«éä¿¡ããŸãã
- SYN ACK-ãµãŒããŒã¯ããµãŒããŒã«ãã£ãŠéžæãããä¹±æ°ïŒããšãã°ã y ïŒãšx + 1ã§æ§æãããACKãã±ãããéãè¿ãããšã«ããããã®èŠæ±ã確èªããŸããxã¯ã¯ã©ã€ã¢ã³ãããåä¿¡ããçªå·ã§ãã
- ACK-ã¯ã©ã€ã¢ã³ãã¯ãµãŒããŒããåä¿¡ããæ°yãå¢ããã y + 1ããµãŒããŒã«éä¿¡ããŸãã
翻蚳è
泚 ïŒ SYN-ã·ãŒã±ã³ã¹çªå·ãåæããŸãã ACK- ã確èªçªå·ããã£ãŒã«ããæå¹ã«ãªããŸãã

ããªãã«ãã³ãã·ã§ã€ã¯ã®å®äºåŸã«ã®ã¿ãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®ããŒã¿è»¢éãéå§ãããŸãã ã¯ã©ã€ã¢ã³ãã¯æåŸã®ACKãã±ãããéä¿¡ããçŽåŸã«ããŒã¿ãéä¿¡ã§ããŸããããµãŒããŒã¯ãŸã ACKãã±ãããèŠæ±ãå®äºããããšãæåŸ
ããŠããŸãã
ãã ããäžéšã®HTTP / 1.0å®è£
ã§ã¯ãæ°ããConnectionïŒkeep-aliveããããŒãè¿œå ããããšã§ãã®åé¡ã解決ããããšããŸãããããã¯ããµãŒããŒã«ããããããã£ããã®æ¥ç¶ãéããªãã§ãã ããããŸã æçšã§ãããšèšããŸãã ãã ãããã®æ©èœã¯åºãæ®åããŠããªãã£ããããåé¡ã¯åŒãç¶ãéèŠã§ããã
HTTPã¯ã³ãã¯ã·ã§ã³ã¬ã¹åãããã³ã«ã§ãããšããäºå®ã«å ããŠãç¶æ
ãµããŒããæäŸããŸããã ã€ãŸãããµãŒããŒã¯ã¯ã©ã€ã¢ã³ãã«é¢ããæ
å ±ãä¿åããªããããåãªã¯ãšã¹ãã«ã¯éå»ã®ãªã¯ãšã¹ããèæ
®ããã«ããµãŒããŒãå¿
èŠãšãããã¹ãŠã®æ
å ±ãå«ããå¿
èŠããããŸãã ãããŠãããã¯ç«çœã«çæãè¿œå ããã ãã§ããã¯ã©ã€ã¢ã³ããéãèšå€§ãªæ°ã®æ¥ç¶ã«å ããŠãç¹°ãè¿ãããŒã¿ãéä¿¡ãããããã¯ãŒã¯ãäžå¿
èŠã«éè² è·ã«ããŸãã
HTTP / 1.1-1999
HTTP / 1.0ãã3幎ãçµéãã1999幎ã«ãããã³ã«ã®æ°ããããŒãžã§ã³ããªãªãŒã¹ãããŸãã-HTTP / 1.1ã«ã¯å€ãã®æ¹è¯ãå«ãŸããŠããŸãïŒ
- æ°ããHTTPã¡ãœããã¯ãPUTãPATCHãHEADãOPTIONSãDELETEã§ãã
- ãã¹ãèå¥ã HTTP / 1.0ã§ã¯ãHostããããŒã¯ãªãã·ã§ã³ã§ããããHTTP / 1.1ã§ã¯ãªãã·ã§ã³ã«ãªããŸããã
- æ°žç¶çãªæ¥ç¶ã åè¿°ã®ããã«ãHTTP / 1.0ã§ã¯ã1ã€ã®æ¥ç¶ã1ã€ã®èŠæ±ã®ã¿ãåŠçããããã«éãããããããæ·±å»ãªããã©ãŒãã³ã¹ã®åé¡ãšé
延ã®åé¡ãçºçããŸããã HTTP / 1.1ã§ã¯ãæç¶çãªæ¥ç¶ãç»å ŽããŸããã ããã©ã«ãã§ã¯éãããããè€æ°ã®é£ç¶ããèŠæ±ã«å¯ŸããŠéãããŸãŸã§ããæ¥ç¶ã æ¥ç¶ãéããã«ã¯ãããã³ããã衚瀺ããããConnectionïŒcloseããããŒãè¿œå ããå¿
èŠããããŸããã ã¯ã©ã€ã¢ã³ãã¯éåžžããµãŒããŒãžã®æåŸã®èŠæ±ã§ãã®ããããŒãéä¿¡ããŠãæ¥ç¶ãå®å
šã«éããŸãã
- ã¯ã©ã€ã¢ã³ããå¿çãåŸ
ããã«æ¥ç¶ã®äžéšãšããŠãµãŒããŒã«è€æ°ã®èŠæ±ãéä¿¡ã§ããã¹ããªãŒãã³ã°ããŒã¿ããµãŒããŒã¯ãèŠæ±ãåä¿¡ãããã®ãšåãé åºã§å¿çãéä¿¡ããŸãã ããããããçããçµãããå¥ã®çãããã€å§ãŸãããã¯ã©ã€ã¢ã³ãã¯ã©ã®ããã«ç¥ãã®ã§ããããïŒ ãã®ã¿ã¹ã¯ã解決ããããã«ãContent-LengthããããŒãèšå®ãããŸããããã«ãããã¯ã©ã€ã¢ã³ãã¯1ã€ã®å¿çãçµäºãã次ã®å¿çãäºæ³ãããå Žæã決å®ããŸãã
æç¶çãªæ¥ç¶ãŸãã¯ã¹ããªãŒãã³ã°ããŒã¿ã®å©ç¹ãæããããã«ã¯ãå¿çã§Content-LengthããããŒãå©çšå¯èœã§ãªããã°ãªããªãããšã«æ³šæããŠãã ããã ããã«ãããã¯ã©ã€ã¢ã³ãã¯è»¢éããã€å®äºããããç解ã§ãã次ã®èŠæ±ãéä¿¡ããïŒéåžžã®é£ç¶ããèŠæ±ã®å ŽåïŒãã次ã®å¿çã®åŸ
æ©ãéå§ããïŒã¹ããªãŒãã³ã°ã®å ŽåïŒããšãã§ããŸãã
ãããããã®ã¢ãããŒãã«ã¯ãŸã åé¡ããããŸããã ããŒã¿ãåçã§ããµãŒããŒãéä¿¡åã«ã³ã³ãã³ãã®é·ããèªèã§ããªãå Žåã¯ã©ããªããŸããïŒ ãã®å Žåãæ°žç¶çãªæ¥ç¶ã䜿çšã§ããŸãããïŒ ãã®åé¡ã解決ããããã«ãHTTP / 1.1ã¯ãæ
å ±ãå°ããªéšåïŒãã£ã³ã¯ïŒã«åå²ããŠéä¿¡ããã¡ã«ããºã ã§ãããã³ã¯ãšã³ã³ãŒãã£ã³ã°ãå°å
¥ããŸããã
- ã³ã³ãã³ããåçã«æ§ç¯ããã転éã®éå§æã«ãµãŒããŒãContent-Lengthãå€å¥ã§ããªãå Žåã ãã£ã³ã¯è»¢éã¯ã ã³ã³ãã³ãã次ã
ã«éšåçã«éä¿¡ãå§ããåéä¿¡éšåã«Content-Lengthãè¿œå ããŸãã ãã¹ãŠã®éšåãéä¿¡ããããšã Content-LengthããããŒã0ã«èšå®ããã空ã®ãã±ãããéä¿¡ããã転éãå®äºããããšãã¯ã©ã€ã¢ã³ãã«éç¥ããŸãã 転éãéšåçã«è¡ãããããšãã¯ã©ã€ã¢ã³ãã«äŒããããã«ããµãŒããŒã¯Transfer-EncodingïŒchunkedããããŒãè¿œå ããŸãã
- HTTP / 1.0ã®åºæ¬èªèšŒãšã¯ç°ãªãã ãã€ãžã§ã¹ãèªèšŒãšãããã·èªèšŒãHTTP / 1.1ã«è¿œå ãããŸããã
- ãã£ãã·ã³ã°
- ãã€ãç¯å²
- ãšã³ã³ãŒãã£ã³ã°
- ã³ã³ãã³ã亀æž
- ã¯ã©ã€ã¢ã³ãCookie ã
- å§çž®ãµããŒãã®æ¹å ã
- ãã®ä»
æ©èœHTTP / 1.1-äŒè©±çšã®å¥ã®ãããã¯ããã®èšäºã§ã¯ããã®ãããã¯ã«ã€ããŠé·ã
ãšèª¬æããŸããã ãã®ãããã¯ã«é¢ããèšå€§ãªéã®è³æãèŠã€ããããšãã§ããŸãã HTTP / 1.0ãšHTTP / 1.1ã®éèŠãªéããããã³ã¹ãŒããŒããŒããŒã«ã¯RFCãžã®ãªã³ã¯ãèªãããšããå§ãããŸã ã
HTTP / 1.1ã¯1999幎ã«ç»å Žããé·å¹Žã«ããã£ãŠæšæºã®ãŸãŸã§ããã ãããŠãããã¯ãã®å身ãããã¯ããã«åªããŠããŸããããæéãšãšãã«æ代é
ãã«ãªãå§ããŸããã Webã¯çµ¶ããæé·ããã³å€åããŠãããWebããŒãžã®èªã¿èŸŒã¿ã«ã¯æ¯æ¥ããå€ãã®ãªãœãŒã¹ãå¿
èŠã§ãã ä»æ¥ãæšæºã®WebããŒãžã¯30以äžã®æ¥ç¶ãéããªããã°ãªããŸããã ããªãã¯èšãã§ãããïŒãããã...çµå±... HTTP / 1.1ã§ã¯åžžã«æ¥ç¶ããããŸã...ãã ãã ããHTTP / 1.1ã¯åžžã«1ã€ã®å€éšæ¥ç¶ã®ã¿ããµããŒãããŸãã HTTP / 1.1ã¯ããŒã¿ãã¹ããªãŒãã³ã°ããããšã§ãããä¿®æ£ããããšããŸããããããã¯åé¡ãå®å
šã«ã¯è§£æ±ºããŸããã§ããã ãã¥ãŒã®å
é ããããã¯ããåé¡ïŒ ããããªãã©ã€ã³ããããã³ã° ïŒ-äœéãŸãã¯å€§èŠæš¡ãªèŠæ±ãåŸç¶ã®ãã¹ãŠãèŠæ±ãããšãïŒãã¥ãŒã®é åºã§å®è¡ãããããïŒã HTTP / 1.1ã®ãããã®æ¬ ç¹ãå
æããããã«ãéçºè
ã¯åé¿çãèæ¡ããŸããã ãã®äŸã¯ãCSSã€ã¡ãŒãžã§ãšã³ã³ãŒããããã¹ãã©ã€ããCSSãã¡ã€ã«ãšJSãã¡ã€ã«ã®é£çµã ãã¡ã€ã³ã·ã£ãŒãã£ã³ã°ãªã©ã§ãã
SPDY-2009
Googleã¯ããã«é²ãã§ãWebããŒãžã®é
延ãæžãããŠWebãé«éåããã»ãã¥ãªãã£ãåäžãããããšãç®æšã«ã代æ¿ãããã³ã«ã®å®éšãéå§ããŸããã 2009幎ã«ã圌ãã¯SPDYãããã³ã«ãå°å
¥ããŸããã
ãããã¯ãŒã¯åž¯åå¹
ãå¢ããç¶ãããšãããã©ãŒãã³ã¹ãåäžããããã«èŠããŸããã ãã ããç¹å®ã®æç¹ãããã¹ã«ãŒãããã®å¢å ãããã©ãŒãã³ã¹ã«åœ±é¿ãäžããªããªãããšãå€æããŸããã äžæ¹ãé
延ã®å€§ããã§æäœããå Žåãã€ãŸãå¿çæéãççž®ããå Žåãããã©ãŒãã³ã¹ã²ã€ã³ã¯äžå®ã«ãªããŸãã ãããSPDYã®äž»ãªã¢ã€ãã¢ã§ããã
éããäœã§ããããæ確ã«ããå¿
èŠããããŸãïŒé
延æéã¯ãéä¿¡è
ããåä¿¡è
ã«ããŒã¿ãéä¿¡ããã®ã«ãããæéïŒããªç§åäœïŒã瀺ãå€ã§ãããã¹ã«ãŒãããã¯1ç§ãããã®éä¿¡ããŒã¿éïŒ1ç§ãããã®ãããæ°ïŒã§ãã
SPDYã«ã¯ãå€éåãå§çž®ãåªå
é äœä»ããã»ãã¥ãªãã£ãªã©ãå«ãŸããŠããŸããã次ã®ã»ã¯ã·ã§ã³ã§ã¯å
žåçãªHTTP / 2ããããã£ãåæããHTTP / 2ã¯SPDYããå€ããååŸãããããSPDYã®è©±ã«é£ã³èŸŒã¿ãŸããã
SPDYã¯ãHTTPãããèªäœã«çœ®ãæããããšããŸããã§ããã ããã¯ãã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã«ååšããHTTPäžã®é·ç§»å±€ã§ãããåç·ãä»ããŠéä¿¡ããåã«èŠæ±ãå€æŽããŸããã ããã¯äºå®äžã®æšæºã«ãªãå§ããã»ãšãã©ã®ãã©ãŠã¶ã¯ããããµããŒããå§ããŸããã
2015幎ã«ãGoogleã¯2ã€ã®ç«¶åããæšæºãååšããªãããšã決å®ããSPDYãšHTTPãçµã¿åãããŠHTTP / 2ãçã¿åºããŸããã
HTTP / 2-2015
HTTPãããã³ã«ã®æ°ããããŒãžã§ã³ãå¿
èŠã§ããããšã¯æ¢ã«ããããã ãšæããŸãã HTTP / 2ã¯ãã³ã³ãã³ããäœé
延ã§è»¢éããããã«èšèšãããŸããã HTTP / 1.1ãšã®äž»ãªéãïŒ
- ããã¹ãã®ä»£ããã«ãã€ããª
- å€éå-åäžã®TCPæ¥ç¶ãä»ããŠè€æ°ã®éåæHTTPèŠæ±ãéä¿¡ãã
- HPACKããããŒå§çž®
- ãµãŒããŒããã·ã¥-åäžã®èŠæ±ã«å¯Ÿããè€æ°ã®å¿ç
- ã¯ãšãªã®åªå
é äœä»ã
- å®å
šæ§

1.ãã€ããªãããã³ã«
HTTP / 2ã¯ããã€ããªåœ¢åŒã«åãæ¿ããããšã«ãããHTTP / 1.xã«ååšããŠããé
延ã®å¢å ã®åé¡ã解決ããããšããŠããŸãã ãã€ããªã¡ãã»ãŒãžã¯èªåçã«é«éã§è§£æãããŸãããHTTP / 1.xãšã¯ç°ãªãã人éãèªãããšã¯ã§ããŸããã HTTP / 2ã®äž»ãªã³ã³ããŒãã³ãã¯ããã¬ãŒã ïŒãã¬ãŒã ïŒãšã¹ããªãŒã ïŒã¹ããªãŒã ïŒã§ãã
ãã¬ãŒã ãšã¹ããªãŒã ã
HTTPã¡ãã»ãŒãžã¯1ã€ä»¥äžã®ãã¬ãŒã ã§æ§æãããŠããŸãã HEADERSãã¬ãŒã ã¯ã¡ã¿ããŒã¿ã«äœ¿çšãããDATAãã¬ãŒã ã¯ã¡ã€ã³ããŒã¿ã«äœ¿çšãããHTTP / 2ä»æ§ã§èŠã€ããä»ã®ã¿ã€ãã®ãã¬ãŒã ïŒRST_STREAMãSETTINGSãPRIORITYãªã©ïŒããããŸã ã
åHTTP / 2èŠæ±ãšå¿çã¯ãäžæã®ã¹ããªãŒã èå¥åãåãåãããã¬ãŒã ã«åå²ãããŸãã ãã¬ãŒã ã¯åãªããã€ããªããŒã¿ã§ãã ãã¬ãŒã ã®ã³ã¬ã¯ã·ã§ã³ã¯ãã¹ããªãŒã ãšåŒã°ããŸãã åãã¬ãŒã ã«ã¯ãã©ã®ã¹ããªãŒã ã«å±ãããã瀺ãã¹ããªãŒã èå¥åãå«ãŸããåãã¬ãŒã ã«ã¯å
±éã®ããããŒãå«ãŸããŸãã ãŸããã¹ããªãŒã èå¥åãäžæã§ãããšããäºå®ã«å ããŠãåã¯ã©ã€ã¢ã³ãèŠæ±ãå¥æ°ã®IDã䜿çšãããµãŒããŒããã®å¿çãå¶æ°ã§ããããšãèšåãã䟡å€ããããŸãã
HEADERSãšDATAã«å ããŠãRST_STREAM-ã¹ããªãŒã ã®äžæã«äœ¿çšãããç¹å¥ãªã¿ã€ãã®ãã¬ãŒã ãèšåãã䟡å€ããããŸãã ã¯ã©ã€ã¢ã³ãã¯ãã®ãã¬ãŒã ããµãŒããŒã«éä¿¡ããŠããã®ã¹ããªãŒã ãäžèŠã«ãªã£ãããšãéç¥ã§ããŸãã HTTP / 1.1ã§ã¯ããµãŒããŒãå¿çã®éä¿¡ãåæ¢ããå¯äžã®æ¹æ³ã¯ãæ¥ç¶ãéããããšã§ãããããã«ããã以éã®èŠæ±ã«å¯ŸããŠæ°ããæ¥ç¶ãéãå¿
èŠããã£ããããé
延æéãå¢å ããŸããã ãŸããHTTP / 2ã§ã¯ãã¯ã©ã€ã¢ã³ãã¯RST_STREAMãéä¿¡ããç¹å®ã®ã¹ããªãŒã ã®åä¿¡ãåæ¢ã§ããŸãã åæã«ãæ¥ç¶ã¯éãããŸãŸã«ãªããæ®ãã®ã¹ã¬ãããæ©èœããŸãã
2.å€éå
HTTP / 2ã¯ãåè¿°ã®ããã«ãèŠæ±ãšå¿çã«ãã¬ãŒã ãšã¹ããªãŒã ã䜿çšãããã€ããªãããã³ã«ã§ãããããè¿œå ã®ã¹ããªãŒã ãäœæããã«ããã¹ãŠã®ã¹ããªãŒã ãåäžã®TCPæ¥ç¶ã§éä¿¡ãããŸãã ãµãŒããŒã¯ãåæ§ã®éåææ¹åŒã§å¿çããŸãã ããã¯ãå¿çãé åºã©ããã§ã¯ãªããã¯ã©ã€ã¢ã³ããã¹ã¬ããèå¥åã䜿çšããŠããã±ãããã©ã®ã¹ã¬ããã«å±ããŠããããç解ããããšãæå³ããŸãã ããã«ããããã¥ãŒã®å
é ããããã¯ããåé¡ïŒè¡é ããããã³ã° ïŒã解決ãããŸããã¯ã©ã€ã¢ã³ãã¯ãåŸ
æ©äžã«æ®ãã®èŠæ±ãåŠçã§ãããããã¢ã€ãã«ç¶æ
ã§é·ãèŠæ±ã®åŠçãåŸ
ã€å¿
èŠããããŸããã
3. HPACKããããŒå§çž®
ããã¯ãéä¿¡ããããŒã®æé©åãç¹ã«ç®çãšããå¥ã®RFCã®äžéšã§ããã åãã¯ã©ã€ã¢ã³ããããµãŒããŒã«çµ¶ããã¢ã¯ã»ã¹ããŠããå Žåã倧éã®ç¹°ãè¿ãããŒã¿ãããããŒã§äœåºŠãéä¿¡ããããšããäºå®ã«åºã¥ããŠããŸããã ãŸããããã«Cookieãè¿œå ãããããããŒã®ãµã€ãºã倧ãããªãããšããããŸããããã«ããããããã¯ãŒã¯åž¯åå¹
ãæžå°ããé
延æéãé·ããªããŸãã ãã®åé¡ã解決ããããã«ãHTTP / 2ã§ããããŒå§çž®ãå°å
¥ãããŸããã

èŠæ±ããã³å¿çãšã¯ç°ãªããããããŒã¯gzipãŸãã¯åæ§ã®åœ¢åŒã§å§çž®ãããŸããã å§çž®ã«ã¯ç°ãªãã¡ã«ããºã ã䜿çšãããŸã-ãªãã©ã«å€ã¯Huffmanã¢ã«ãŽãªãºã ã䜿çšããŠå§çž®ãããŸãããã¯ã©ã€ã¢ã³ããšãµãŒããŒã¯åäžã®ããããŒããŒãã«ããµããŒãããŸãã éè€ããããããŒïŒããšãã°ããŠãŒã¶ãŒãšãŒãžã§ã³ãïŒã¯ãç¹°ãè¿ãèŠæ±äžã«çç¥ãããããããŒããŒãã«å
ã®äœçœ®ãåç
§ããŸãã
ããããŒã«ã€ããŠèª¬æããŠããã®ã§ããããã¯HTTP / 1.1ãšå€ãããªãããšãè¿œå ããŸãããã ããã¡ãœãããã¹ããŒã ããã¹ãããã¹ãªã©ãããã€ãã®ç䌌ããããŒãè¿œå ãããŠããŸãã
4.ãµãŒããŒããã·ã¥
ãµãŒããŒããã·ã¥ã¯HTTP / 2ã®ãã1ã€ã®ãã°ãããæ©èœã§ãã ã¯ã©ã€ã¢ã³ããç¹å®ã®ãªãœãŒã¹ãèŠæ±ããããšãç¥ã£ãŠãããµãŒããŒã¯ãèŠæ±ãåŸ
ããã«éä¿¡ã§ããŸãã ããã§ãããšãã°ããããæçšã§ããå Žåããã©ãŠã¶ã¯WebããŒãžãããŒãããããã解æãããµãŒããŒããããŠã³ããŒãããå¿
èŠãããä»ã®ã³ã³ãã³ããèŠã€ããŠã察å¿ãããªã¯ãšã¹ããéä¿¡ããŸãã
ãµãŒããŒããã·ã¥ã«ããããµãŒããŒã¯è¿œå ã®ãªã¯ãšã¹ãã®æ°ãæžããããšãã§ããŸãã ã¯ã©ã€ã¢ã³ããããŒã¿ãèŠæ±ããããšãç¥ã£ãŠããå Žåã圌ã¯ããã«ããããéä¿¡ããŸãã ãµãŒããŒã¯ç¹å¥ãªPUSH_PROMISEãã¬ãŒã ãéä¿¡ããã¯ã©ã€ã¢ã³ãã«æ¬¡ã®ããã«äŒããŸããããããããã£ããã®ãªãœãŒã¹ãéä¿¡ããŸãã ãŸããããè¿·æããããªãã§ãã ããããPUSH_PROMISEãã¬ãŒã ã¯ãããã·ã¥ãéä¿¡ããã¹ããªãŒã ã«é¢é£ä»ããããŠããããµãŒããŒãç®çã®ãªãœãŒã¹ãéä¿¡ããã¹ããªãŒã ã®èå¥åãå«ãã§ããŸãã
5.åªå
é äœä»ããèŠæ±ãã
ã¯ã©ã€ã¢ã³ãã¯ãã¹ããªãŒã ãéãHEADERSãã¬ãŒã ã«åªå
床æ
å ±ãè¿œå ããããšã«ãããã¹ããªãŒã ã«åªå
é äœãä»ããããšãã§ããŸãã ãã以å€ã®å Žåãã¯ã©ã€ã¢ã³ãã¯ãã¹ããªãŒã ã®åªå
床ãå€æŽããPRIORITYãã¬ãŒã ãéä¿¡ã§ããŸãã
åªå
床æ
å ±ãæå®ãããŠããªãå ŽåããµãŒããŒã¯ãªã¯ãšã¹ããéåæã«åŠçããŸãã 泚æãªãã åªå
床ãå²ãåœãŠãããŠããå Žåãåªå
床ã«é¢ããæ
å ±ã«åºã¥ããŠããµãŒããŒã¯ç¹å®ã®ã¹ããªãŒã ã®åŠçã«å²ãåœãŠããªãœãŒã¹ã®æ°ã決å®ããŸãã
6.ã»ãã¥ãªãã£
ã»ãã¥ãªãã£ïŒTLSãããã³ã«ãä»ããéä¿¡ïŒãHTTP / 2ã«å¿
é ã§ãããã©ããã«ã€ããŠã¯ãåºç¯ãªè°è«ãå±éãããŠããŸãã æçµçã«ããããå¿
é ã«ããªãããšã決å®ãããŸããã ãã ããã»ãšãã©ã®ãã©ãŠã¶ãã³ããŒã¯ãTLSãä»ããŠäœ¿çšãããå Žåã«ã®ã¿HTTP / 2ããµããŒããããšè¿°ã¹ãŠããŸãã ãããã£ãŠããã®ä»æ§ã§ã¯HTTP / 2ã®æå·åã¯å¿
èŠãããŸããããããã©ã«ãã§ã¯åŒãç¶ãå¿
é ã«ãªããŸãã åæã«ãTLSã®äžã«å®è£
ãããHTTP / 2ã«ã¯ããã€ãã®å¶éããããŸãïŒTLSããŒãžã§ã³1.2以éãå¿
èŠãæå°ããŒãµã€ãºã«å¶éãçåœããŒãå¿
èŠãªã©ã
ãããã«
HTTP / 2ã¯ãã§ã«ååšãã ãµããŒãã§SPDYããã€ãã¹ããŠããŸããããã¯åŸã
ã«æé·ããŠããŸãã 詳现ãç¥ããã人ã®ããã«ã HTTP / 2é床ã®å©ç¹ã瀺ãä»æ§ãžã®ãªã³ã¯ãšãã¢ãžã®ãªã³ã¯ã以äžã«ç€ºããŸãã
HTTP / 2ã«ã¯ãããã©ãŒãã³ã¹ãåäžãããããã®å€ãã®æ©èœãããã䜿çšãéå§ãããšããæ¥ãããã§ãã
ãªãªãžãã«ïŒKamran Ahmedã«ããHTTP / 2ãžã®æ
ã
ç¿»èš³ïŒ ã¢ã³ãã¬ã€ã»ã¢ã¬ã¯ã·ãŒãšããç·šéè
ïŒã¢ãããªãŒã»ãã¥ããã ãžã£ã㌠ãã€ãŽãŒã«ã»ãã¬ãã³ããã¿ãªã¢ã»ãšãŒããŒãããã£ã¢ãã§ã€ã»ããªãã³ããã£ã€ã«ã»ãã¥ã«ã·ãŒããã€ãã»ã¯ãªã¯ãªãŽã¡ã€ã