ãã ããææ°ã®Webãããžã§ã¯ããé«éåããããã«ã¯ãkroushkaã«ãã®ãããã¯ã培åºçã«æãäžããå¿ èŠããããŸãããããã£ãŠããããã¯ãŒã¯ãããã³ã«ã®åºæ¬çãªç¥èã¯å€§æè¿ã§ãã ååãç¥ã£ãŠããã°ãããããªã¢ãããŒãã§Webã·ã¹ãã ãæ°çŸããªç§ã§ç°¡åã«é«éåã§ããŸãã ããŠãæ°åãç¯çŽããæºåã¯ã§ããŠããŸããïŒ ã³ãŒããŒã泚ãã
åŸå³
ããã¯éåžžã«ããããªãããã¯ã§ã-ãµã€ãã®ãŠãŒã¶ãŒãæºè¶³ãããæ¹æ³-ãããŠããŠãŒã¶ããªãã£äž»çŸ©è ã¯ããããç§ã«ã¢ãããã«ã¯ãã«ã飲ãŸããå°åæãªãã§æade匟ãåãŸããççºã®åã«å«ã¶æéãäžããŸãïŒãç§ã¯ç°ç«¯ãéãã§ããŸããã ãããã£ãŠãç§ã¯å察åŽããè¡ãããã§ãã ããŒãžã®è¡šç€ºã®é 延ã¯0.3ç§ä»¥äžã§ããããšãåºãç¥ãããŠããŸããããã«ããããŠãŒã¶ãŒã¯ããã«æ°ã¥ãããµã€ããšã®éä¿¡ããã»ã¹ãããç®èŠãããŸãã ãããŠã衚瀺ã®é 延ã¯1ç§ä»¥äžã§ãããããã¯ã«ã€ããŠèãããšããããã§äœãããŠããã®ã§ããïŒ ãªã圌ãã¯ç§ãæ·åããç§ãåŸ ãããŠããã®ã§ããïŒã
ãããã£ãŠãç§ãã¡ã¯åœŒãã®ã䜿ãããããã«äœ¿ãããããäžããå®çšçãªåé¡ã«å¯ŸåŠããŸã-ã¯ã©ã€ã¢ã³ãã®ã倢ãã劚ãããããã¬ãŒããã«æ°ãæ£ããããšãªããã§ããã ãé·ããµã€ãã§åœŒã®ä»äºãä¿é²ããªããã
ã¹ããŒãã®è²¬ä»»è
ãŸãããã¡ããããªãã¯èª°ã§ããã ããã§ãªããã°ãããªãã¯ã»ãšãã©èšäºãèªã¿å§ããŸããã§ããã çå£ã«ãåé¡ããããŸã-é床ã®åé¡ã¯ãæè¡çããã³ç€ŸäŒçã«ç·©ããã«æ¥ç¶ããã2ã€ã®ããã³ããšã³ããšããã¯ãšã³ãã«åãããŠããŸãã ãããŠã圌ãã¯ãã°ãã°3çªç®ã®éèŠãªã³ã³ããŒãã³ãã§ãããããã¯ãŒã¯ãå¿ããŸãã
HTMLã ã
ãŸãã90幎代ååã®æåã®ãµã€ãã¯éçãªããŒãžã®ã»ããã ã£ãããšãæãåºããŠãã ããã ãŸããHTMLã¯ã·ã³ãã«ã§ããããããç°¡æœã§ãããæåã®ããã¹ãã次ã«ããã¹ããšãªãœãŒã¹ã§ãã Bacchanaliaã¯ãWebããŒãžã®åçãªçæãšjavaãperlã®æ®åããå§ãŸããŸããããä»æ¥ã§ã¯ããã§ã«PHPãå«ãæè¡ã®éæ²³ã§ãã
ãã®ç«¶äºããããã¯ãŒã¯ã®å®è¡å¯èœæ§ã«äžãã圱é¿ã軜æžããããã«ã1996幎ã«HTTP / 1.0ã«åŸãã3幎åŸ-1999幎ã«HTTP / 1.1ã«ãªããŸãããåŸè ã§ã¯ãTCPãã³ãã·ã§ã€ã¯ãå ã®é床ã®çŽ2/3ã§é§åããå¿ èŠããªãããšã«æçµçã«åæããŸããå ãã¡ã€ããŒïŒåèŠæ±ã«å¯Ÿå¿ããæ°ããæ¥ç¶ã確ç«ããããTCPæ¥ç¶ãäžåºŠéããŠåŠçããŸãã
ããã¯ãšã³ã
ã¢ããª
ãã40幎éã§ããã§ã»ãšãã©å€åã¯ãããŸããã ããããã NoSQLãšããååã§ãªã¬ãŒã·ã§ãã«çè«ã®ããããã£ããè¿œå ãããŸãããããã¯é·æãšçæã®äž¡æ¹ããããããŸãã ããããå®è·µã瀺ãããã«ãããã¯ããžãã¹ããããæçã§ãããšæãããŸãïŒãã ãããæŽåæ§ããŒã¿ã誰ãã©ã®ãããªå£å®ã§å¥ªã£ããããšãã質åãžã®åçãå«ãç ãã¬å€ã¯ãããå¯èœæ§ãé«ããªããŸããïŒã
- ã¢ããªã±ãŒã·ã§ã³ããã³/ãŸãã¯WebãµãŒããŒïŒphpãjavaãperlãpythonãrubyãªã©ïŒ-ã¯ã©ã€ã¢ã³ãèŠæ±ãåãå ¥ããŸã
- ã¢ããªã±ãŒã·ã§ã³ã¯ããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããããŒã¿ãåä¿¡ããŸã
- ã¢ããªã±ãŒã·ã§ã³ã¯htmlãçæããŸã
- ã¢ããªã±ãŒã·ã§ã³ããã³/ãŸãã¯WebãµãŒããŒ-ã¯ã©ã€ã¢ã³ãã«ããŒã¿ãéä¿¡ããŸã
ããã§ã¯é床ã®ç¹ã§ãã¹ãŠãæ確ã§ãã
- æé©ãªã¢ããªã±ãŒã·ã§ã³ã³ãŒããæ°ç§éã«ãŒããªã
- ããŒã¿ããŒã¹å ã®æé©ãªããŒã¿ãã€ã³ããã¯ã¹ä»ããéæ£èŠå
- ããŒã¿ããŒã¹ãµã³ãã«ã®ãã£ãã·ã¥
ãã¢ããªã±ãŒã·ã§ã³ãã®ãªãŒããŒã¯ããã¯ã«ã€ããŠã¯ãã説æããŸãããå€ãã®æ¬ãèšäºãæžãããŠããããã¹ãŠãéåžžã«çŽç·çã§ã·ã³ãã«ã§ãã
äž»ãªããšã¯ãã¢ããªã±ãŒã·ã§ã³ãééçã§ãããã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªã³ã³ããŒãã³ããä»ããŠãªã¯ãšã¹ãã®é床ã枬å®ã§ããããšã§ãã ããã§ãªãå Žåã¯ãããã«èªãããšã¯ã§ããŸãããããã¯å©ãã«ã¯ãªããŸããã
ãããéæããæ¹æ³ã¯ïŒ ãã¹ã¯æ¢ç¥ã§ãïŒ
- æšæºãªã¯ãšã¹ãã®ãã®ã³ã°ïŒnginxãapacheãphp-fpmïŒ
- é ãããŒã¿ããŒã¹ã¯ãšãªã®ãã®ã³ã°ïŒmysqlã®ãªãã·ã§ã³ïŒ
- ãªã¯ãšã¹ããæž¡ãéã®ããã«ããã¯ãä¿®æ£ããããã®ããŒã«ã phpã®å Žåãããã¯xhprofãpinbaã§ãã
- å¥ã®ãã¬ãŒã¹ã¢ãžã¥ãŒã«ãªã©ãWebã¢ããªã±ãŒã·ã§ã³å ã®çµã¿èŸŒã¿ããŒã«ã
倧éã®ãã°ãããããããã§æ··ä¹±ããŠããå Žå-éèšããŒã¿ãããŒã»ã³ã¿ã€ã«ãšååžãåç §ããŠãã ããã ã·ã³ãã«ã§ããããããã 0.3ç§ä»¥äžã®ãªã¯ãšã¹ããèŠã€ãããŸãã-æåŸãŸã§ãããªãŒãã£ã³ã°ãéå§ããŸãã
WebãµãŒããŒ
åŒã£è¶ããŸãã WebãµãŒããŒã ããã§ã¯ãã»ãšãã©å€æŽã¯ãããŸããããWebãµãŒããŒïŒfascgiãµãŒããŒïŒã®åã«ãªããŒã¹ãããã·WebãµãŒããŒãã€ã³ã¹ããŒã«ããããšã§ãæŸèæãçºçããå¯èœæ§ããããŸãã ã¯ãã確ãã«åœ¹ç«ã¡ãŸãïŒ
- ã¯ã©ã€ã¢ã³ããšã®ããå€ãã®ãªãŒãã³ãªæ¥ç¶ãç¶æããããã«ïŒç ç²ã«ãªããŸããïŒ..ã¯ãããã£ãã·ã³ã°ãããã·ã®å¥ã®ã¢ãŒããã¯ãã£-nginxã®å Žåãããã¯1ã€ã®æ¥ç¶ã«å°æ°ã®ããã»ã¹ãšäœã¡ã¢ãªã«ãããœã±ããå€éåã䜿çšããŸãïŒ
- ã¢ããªã±ãŒã·ã§ã³ã³ãŒãããã£ã«ã¿ãªã³ã°ããã«ããã£ã¹ã¯ããéçãªãœãŒã¹ãçŽæ¥å¹ççã«æäŸããŸãã
ããããçåã¯æ®ã£ãŠããŸããããªã圌ãã¯ããã«ãæ£ããã Apacheãå§ããªãã£ãã®ã§ãããæã«ã¯WebãµãŒããŒãé»è»ã«ä¹ããå¿ èŠããããŸãã
æ°žç¶çãªæ¥ç¶
TCPæ¥ç¶ã®ç¢ºç«ã«ã¯1 RTTããããŸãã ãã£ãŒããå°å·ããŠãããªãã®åã§ãã³ã°ã¢ããããŸãã ãã¬ãŒãã®å€èŠ³ãç解ããéµã¯ããã«ãããŸãã
ãã®å€ã¯ãWebãµãŒããŒã«å¯ŸãããŠãŒã¶ãŒã®äœçœ®ãšéåžžã«å¯æ¥ã«çžé¢ããŠããŸãïŒã¯ããå ã®é床ãããããããªã¢ã«ã«å ã®äŒæ¬é床ããããã«ãŒãã£ã³ã°ããããŸãïŒãæ°åãŸãã¯æ°çŸããªç§ãããããšããããŸãïŒãã¡ãããéåžžã«å€ãã§ãïŒ ã ãããŠãåé¡ã¯ããã®æ¥ç¶ããªã¯ãšã¹ãããšã«ç¢ºç«ãããå Žåã§ããããã¯HTTP / 1.0ã§äžè¬çã§ããã
ãã®ãããHTTP 1.1ã¯æŠããŠéå§ããã HTTP 2.0 ïŒ spdyã§è¡šãããïŒããã®æ¹åã§éçºãããŠããŸãã Googleãšã®IETFã¯çŸåšãçŸåšã®ãããã¯ãŒã¯ã¢ãŒããã¯ãã£ãæ倧éã«æŽ»çšããããã«ããããç Žå£ããããšãªãæåãå°œãããŠããŸãã ãããŠããããè¡ãããšãã§ããŸã...ãŸããã¯ããTCPæ¥ç¶ãå¯èœãªéãå¹ççã«äœ¿çšãã å€éå ããã±ããæ倱ããã®å埩ãªã©ãéããŠåž¯åå¹ ãå¯èœãªéãå¯ã«äœ¿çšããŸã
ãããã£ãŠãWebãµãŒããŒããã³ã¢ããªã±ãŒã·ã§ã³ã§ã®æ°žç¶çãªæ¥ç¶ã®äœ¿çšãå¿ ã確èªããŠãã ããã
TLS
ããšããšSSLãšããŠNetscape Communicationsã®è žã§å§ãŸã£ãTLSããªããã°ãçŸä»£ã®äžçã«ã¯ã©ãã«ããããŸããã ãããŠã圌ãã¯èšããããã®ãããã³ã«ã®æåŸã® ãç©Žãã¯ç· ãåããããã¯ããã«æ©ãå€ãã®ç°è²ã«å€ãããŸãã-å®éã«ã¯ä»£æ¿æ段ã¯ãããŸããã
ããããäœããã®çç±ã§èª°ããTLSããåŸå³ããæªåãããããšãèŠããŠããããã§ã¯ãããŸãã-TCPãä»ãã1 RTTæ¥ç¶ã«å ããŠ1-2 RTTãè¿œå ããŸãã nginxã§ã¯ãããã©ã«ãã®TLSã»ãã·ã§ã³ãã£ãã·ã¥ã¯ããã©ã«ãã§ãªãã«ãªã£ãŠããŸã-ããã«ãããäœåãªRTTãè¿œå ãããŸãã
ãããã£ãŠãTLSã»ãã·ã§ã³ãå¿ ããã£ãã·ã¥ãããããšã確èªããŠãã ããããã®ãããå¥ã®1 RTTãä¿åããŸãïŒæ®å¿µãªãããã»ãã¥ãªãã£æéãšããŠ1ã€ã®RTTãæ®ããŸãïŒã
ããããããã¯ãšã³ãã«ã€ããŠã§ãã ããã«é£ãããªããŸãããããé¢çœããªããŸãã
ãããã¯ãŒã¯ã è·é¢ãšãããã¯ãŒã¯åž¯åå¹
å€ãã®å Žåã50Mbit / sã100Mbit / sã4Gã§ããã«å€ãã®é³ãèãããŸã...ããããå žåçãªWebã¢ããªã±ãŒã·ã§ã³ã§ã¯ã垯åå¹ ã¯ããã»ã©éèŠã§ã¯ãªãïŒãã¡ã€ã«ãããŠã³ããŒããããªãéãïŒããšã¯ã©ã³ã¿ã³ã·ãŒãããã¯ããã«éèŠã§ãããšããç解ã¯ã»ãšãã©ãããŸããã«ã å€ãã®å°ããªãªã¯ãšã¹ããç°ãªãæ¥ç¶ã§è¡ãããTCPãŠã£ã³ããŠã«ã¹ã€ã³ã°ããæéããããŸããã
ãããŠãã¡ãããã¯ã©ã€ã¢ã³ããWebãµãŒããŒããé ãããã»ã©é·ããªããŸãã ããããããã§ãªããã°äžå¯èœãŸãã¯å°é£ã§ããããšãèµ·ãããŸãã ããã圌ããæãã€ããçç±ã§ãïŒ
- CDN
- åçãããã·ïŒCDNãŸãã¯ãã®éïŒã ããšãã°ãnginxããªãŒãžã§ã³ã«ã€ã³ã¹ããŒã«ããããšãWebãµãŒããŒãžã®æ°žç¶çãªæ¥ç¶ãéãããsslãçµäºããŸãã åãããŸããïŒ ã€ãŸããã¯ã©ã€ã¢ã³ããšWebãããã·éã®æ¥ç¶ãæ°åå éããïŒãã³ãã·ã§ã€ã¯ãéå§ãããŸãïŒãå ç±ãããTCPæ¥ç¶ã䜿çšãããŸãã
ä»ã«ã§ããããš... TCPã®åæ茻茳ãŠã£ã³ããŠãå¢ãããŸã-ã¯ããããã¯ãã°ãã°å©ãã«ãªããŸãã WebããŒãžã¯ã確èªãªãã§1ã»ããã®ããã±ãŒãžã§æäŸãããŸãã è©ŠããŠã¿ãŠãã ããã
ãã©ãŠã¶ãŒãããã¬ãŒããªã³ã«ããŠãWebããŒãžã®èªã¿èŸŒã¿æéã確èªããåŸ æ©æéãšãã®åæžæ¹æ³ãæ€èšããŸãã
ã¹ã«ãŒããã
TCPæ¥ç¶ãŠã£ã³ããŠã¯æåã«ãªãŒããŒã¯ããã¯ããå¿ èŠãããããšã«æ³šæããŠãã ããã WebããŒãžã1ç§æªæºã§ããŒããããå ŽåããŠã£ã³ããŠãæ¡å€§ããæéããããŸããã äžçã®å¹³åãããã¯ãŒã¯åž¯åå¹ ã¯3ã¡ã¬ããã/ç§ãããããã«é«ãã§ãã çµè«-確ç«ããã1ã€ã®æ¥ç¶ãéããŠå¯èœãªéãéä¿¡ããããŠã©ãŒã ã¢ãããããŸãã
åäžã®TCPæ¥ç¶å ã§ã®HTTPãªãœãŒã¹ã®å€éåã¯ãããã§ç¢ºãã«åœ¹ç«ã¡ãŸããèŠæ±ãšå¿çã®äž¡æ¹ã§æ··åãããããã€ãã®ãªãœãŒã¹ã転éããŸãã ãããŠããã®æè¡ã§ããæšæºã«å«ãŸããŠããŸããããéå°è©äŸ¡ãããŠãããããããŸããããŸããã§ãã ïŒã¯ãã ã§ã¯ãããæè¿ã«ãªã£ãŠåé€ãããŸããïŒã ãããã£ãŠãããã§ã¯ããŸã spdyãè©ŠããHTTP 2.0ãåŸ ã€ããŸãã¯ãã€ãã©ã€ã³ã䜿çšã§ããŸãããã ãããã©ãŠã¶ããã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³ããçŽæ¥å®è¡ã§ããŸãã
ãã¡ã€ã³ã·ã£ãŒãã£ã³ã°
ããããéåžžã«äººæ°ã®ãããã¡ã€ã³ã·ã£ãŒãã£ã³ã°ãã¯ããã¯ã«ã€ããŠã¯ã©ãã§ããããããã©ãŠã¶/ã¢ããªã±ãŒã·ã§ã³ããã¡ã€ã³ããšã«6以äžã®æ¥ç¶ã®å¶éãå æããæ¶ç©ºã®ãã¡ã€ã³ãžã®å¥ã®6以äžã®æ¥ç¶ãéããšãïŒimg1.mysite.ruãimg2.mysite.ru ...ïŒ ããã楜ããã®ã¯ HTTP / 1.1ã®èŠ³ç¹ãã-ããã¯ããªããå éããå¯èœæ§ãé«ããHTTP / 2.0ã®èŠ³ç¹ãã-ããã¯ã¢ã³ããã¿ãŒã³ã§ã TCPæ¥ç¶ã§HTTPãã©ãã£ãã¯ãå€éåãããšãã¹ã«ãŒããããåäžããŸãã
ãããã£ãŠãä»ã®ãšãã-ãã¡ã€ã³ãã·ã£ããã«ããHTTP / 2.0ããããè¡ããªããªãã®ãåŸ ã£ãŠããŸãã ãã¡ãããWebã¢ããªã±ãŒã·ã§ã³å°çšã«æž¬å®ããååãªæ å ±ã«åºã¥ããŠéžæããããšããå§ãããŸãã
ããã³ããšã³ã
WebããŒãžã®ã¬ã³ããªã³ã°é床ãç»åãšJavaScriptã®ãµã€ãºããªãœãŒã¹ã®ããŒãé åºãªã©ã®ããç¥ããããã®ã«ã€ã㊠-æžãã®ã¯é¢çœããªãã ããŒãã¯beatãã殺ãããŸãã äžèšã§èšãã°äžæ£ç¢º-Webãã©ãŠã¶ãŒã®åŽã§ãªãœãŒã¹ããã£ãã·ã¥ããŸããã...é ã§ã 10MBã®jsãã¡ã€ã«ããã£ãã·ã¥ããåWebããŒãžã®ãã©ãŠã¶å ã§è§£æããŸã-ãããäœãããããããç解ããŠããŸãã ãã©ãŠã¶ãããã¬ããªã³ã«ããã³ãŒããŒã泚ãã§ãäžæ¥ã®çµãããŸã§ã«-åŸåã¯æããã§ãã èšç»ã®æŠèŠã説æããå®è¡ããŸãã ã·ã³ãã«ã§éæã
ã¯ããã«éãèœãšãç©Žã¯ãæ¯èŒçæ°ããæ¥æé·ããŠããWebãã©ãŠãžã³ã°æ©èœã®èåŸã«æœãå¯èœæ§ããããŸãã ãããã«ã€ããŠã話ãããŸãã
- XMLHttpRequest
- é·ãããŒãªã³ã°
- ãµãŒããŒéä¿¡ã€ãã³ã
- Webãœã±ãã
ãã©ãŠã¶-ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ãããª
åœåããã©ãŠã¶ã¯HTMLããŒã¯ã¢ããã衚瀺ããããã®ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãšããŠèªèãããŠããŸããã ããããæ¯å¹Žããã¯é河系æè¡ã®ã³ã³ãããŒã«ã»ã³ã¿ãŒã«ãªããŸããããã®çµæãHTTPãµãŒããŒãšãã®èåŸã®Webã¢ããªã±ãŒã·ã§ã³ã¯ããã©ãŠã¶ãŒå ã®è£å©ã³ã³ããŒãã³ããšããŠã®ã¿èªèãããããã«ãªããŸããã èå³æ·±ãæè¡çå€åã匷調ãããŠããŸãã
ããã«ããã©ãŠã¶ã«çµã¿èŸŒãŸããWebRTC ããã¬ãã¹ã¿ãžãªãã®åºçŸãšããã©ãŠã¶ã®ãããã¯ãŒã¯ãšå€çãšã®ããåãã®æ段ã«ãããããã©ãŒãã³ã¹ã®åé¡ã¯ãµãŒããŒã€ã³ãã©ã¹ãã©ã¯ãã£ãããã©ãŠã¶ã«ã¹ã ãŒãºã«ç§»è¡ããŸããã ãã®å éšãããã³ãã¯ã©ã€ã¢ã³ãã§é ããªãå Žå-WebãµãŒããŒäžã®phpãèŠããããããŒã¿ããŒã¹ã«åå ããããã人ã¯ããŸããã
ãã®äžéæãªã¢ããªã¹ãéšåã«ã€ããŠåæããŸãã
XMLHttpRequest
ããã¯ããç¥ãããŠããAJAX-ãã©ãŠã¶ãHTTPçµç±ã§å€éšãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããæ©èœã§ãã CORSã®åºçŸã«ãããå®å šãªãã«ãªã¹ããå§ãŸããŸããã ããã§ããã¬ãŒãã®åå ãç¹å®ããã«ã¯ããã¹ãŠã®ãªãœãŒã¹ãç»ããã©ãã§ããã°ã調ã¹ãå¿ èŠããããŸãã
çå£ã«ããã®æè¡ã¯ééããªããã©ãŠã¶ãŒã®æ©èœãçç Žããåçã«æ å ±ãã¬ã³ããªã³ã°ããããã®åŒ·åãªãã©ãããã©ãŒã ã«å€ããŸããã ããã«ã€ããŠæžãããšã«ã¯æå³ããããŸããããããã¯ã¯å€ãã®äººã«ç¥ãããŠããŸãã ãã ããå¶éã«ã€ããŠèª¬æããŸãã
- ç¹°ãè¿ããŸãããè€æ°ã®ããã£ãã«ãã®å€éåã®æ¬ åŠã«ãããTCPæ¥ç¶åž¯åå¹ ã®äœ¿çšãéå¹ççãã€äžå®å šã«ãªããŸãã
- ã¹ããªãŒãã³ã°ã®é©åãªãµããŒãããããŸããïŒæ¥ç¶ãéããŠãã³ã°ããŸãããåŸ ã¡ãã ããïŒãã€ãŸã ãµãŒããŒãåŒã£åŒµãã圌ãçãããã®ãèŠãããšãæ®ã£ãŠããŸã
ãã ãããã®æè¡ã¯éåžžã«äººæ°ããããé床ç£èŠã®èŠ³ç¹ããééçã«ããããšã¯é£ãããããŸããã
é·ãããŒãªã³ã°
ãŠã§ããã£ããã®äœãæ¹ã¯ïŒ ã¯ããã©ããããããå€æŽã«é¢ããæ å ±ããµãŒããŒãããã©ãŠã¶ãŒã«éä¿¡ããå¿ èŠããããŸãã HTTPçµç±ã§çŽæ¥-ã§ããŸãããã§ããŸããã ã®ã¿ïŒèŠæ±ãšå¿çã 人ã ã決å®ããã®ã¯é¡ã§ããïŒãªã¯ãšã¹ããããŠãçããåŸ ã£ãŠãã ãããç§ã30ç§ãåã äœããæ¥ãããè¿ããŠåæããŠãã ããã
ã¯ããå€ãã®ã¢ã³ããã¿ãŒã³ãæŸèæ-ãããããã®æè¡ã¯éåžžã«åºãæ®åããŠãããåžžã«æ©èœããŠããŸãã ãããããªããªã ããªãã¯é床ã«è²¬ä»»ããããŸã-ãã®ã¢ãããŒãã§ã®ãµãŒããŒã®è² è·ã¯éåžžã«é«ããWebãããžã§ã¯ãã®ã¡ã€ã³ãã©ãã£ãã¯ããã®è² è·ãšæ¯èŒã§ããŸãã ãŸãããµãŒããŒãããã©ãŠã¶ãžã®æŽæ°ãé »ç¹ã«é ä¿¡ãããå Žåãäž»ãªè² è·ã¯äœåºŠãè¶ ããå¯èœæ§ããããŸãïŒ
ã©ãããïŒ
ãµãŒããŒéä¿¡ã€ãã³ã
ããã«ãããWebãµãŒããŒãžã®TCPæ¥ç¶ãéãããéããããããµãŒããŒã¯ç°ãªãæ å ±ãUTF-8ã«æžã蟌ã¿ãŸãã 確ãã«ãäºåã®Base64ãªãã§ã¯ãã€ããªããŒã¿ãæé©ã«éä¿¡ããããšã¯ã§ããŸããïŒãµã€ãºã33ïŒ å¢å ããŸãïŒããäžæ¹åã®å¶åŸ¡ãã£ãã«ãšããŠã¯åªãããœãªã¥ãŒã·ã§ã³ã§ãã IEã§ç-ãµããŒããããŠããŸããïŒã©ãã§ãæ©èœããäžèšã®æ®µèœãåç §ïŒã
ãã¯ãããžãŒã®å©ç¹ã¯æ¬¡ã®ãšããã§ãã
- ãšãŠãã·ã³ãã«
- ã¡ãã»ãŒãžãåä¿¡ããåŸããµãŒããŒãžã®æ¥ç¶ãå床éãå¿ èŠã¯ãããŸãã
Webãœã±ãã
ã·ã¹ãã 管çè ã«ãšã£ãŠãããã¯ç£ã§ã¯ãªããå€ã®æ»äœã§ãã HTTP 1.1ã¢ããã°ã¬ãŒããéããŠãå·§åŠãªãæ¹æ³ã§ããã©ãŠã¶ã¯HTTPæ¥ç¶ã®ãã¿ã€ãããå€æŽããéãããŸãŸã«ããŸãã
次ã«ãOBEïŒïŒïŒã®æ¥ç¶ãä»ããŠãã¡ãã»ãŒãžïŒãã¬ãŒã ïŒã«ãã¬ãŒã åãããããŒã¿ã®è»¢éãéå§ã§ããŸãã ã¡ãã»ãŒãžã«ã¯æ å ±ãå«ãŸããã ãã§ãªãã次ã®ãã®ãå«ãå¶åŸ¡ã¡ãã»ãŒãžãå«ãŸããŸãã ãPINGãããPONGããšå ¥åããŸãã 第äžå°è±¡-èªè»¢è»ãåã³çºæãããåã³TCPã«åºã¥ããTCPãçºæãããŸããã
éçºè ã®èŠ³ç¹ãã-ãã¡ããããã¯äŸ¿å©ã§ããããã©ãŠã¶ãšãµãŒããŒäžã®Webã¢ããªã±ãŒã·ã§ã³ã®éã«äºéãã£ãã«ã衚瀺ãããŸãã ã¹ããªãŒãã³ã°ãå¿ èŠã§ãããã¡ãã»ãŒãžãå¿ èŠã§ããã ãããïŒ
- HTMLãã£ãã·ã¥ã¯ãµããŒããããŠããªããã ãã€ããªãã¬ãŒãã³ã°ãããã³ã«ã䜿çšãã
- å§çž®ã¯ãµããŒããããŠããŸãããèªåã§å®è£ ããå¿ èŠããããŸã
- TLSãªãã§äœæ¥ããå Žåã®ã²ã©ãã°ãªãããšé 延-å€ããããã·ãµãŒããŒãåå
- å€éåãªãããã®çµæãåæ¥ç¶ã®å垯åå¹ ãéå¹ççã«äœ¿çšãããŸãã
- ãµãŒããŒã«ã¯ããã©ãŠã¶ããã®çŽæ¥ã®TCPæ¥ç¶ãå€æ°ããããããŒã¿ããŒã¹ã«ãšã£ãŠåä»ãªãããšãããŠããŸã
Webãœã±ããã®ããã©ãŒãã³ã¹ã远跡ããæ¹æ³ã¯ïŒ éåžžã«è¯ã質åã§ããç¹ã«ããã€ã«æ®ããŸããã ã¯ã©ã€ã¢ã³ãåŽïŒWireSharkãã±ããã¹ãããã¡ãŒããµãŒããŒåŽãTLSãæå¹åïŒã§ã¯ãnginxã®ã¢ãžã¥ãŒã«ã«ããããåœãŠãããšã§åé¡ã解決ããŸãããããç°¡åãªè§£æ±ºçãããããã§ãã
äž»ãªããšã¯ãWebãœã±ãããå éšããã©ã®ããã«é 眮ãããŠããããç解ããããšã§ããããã¯æ¢ã«ããã£ãŠãããé床å¶åŸ¡ãæäŸãããŸãã
XMLHttpRequestãLong PollingãServer-Sent EventsããŸãã¯Web Socketsã®ã©ããè¯ãã§ããããïŒ æåã¯ããããã®æè¡ã®é©åãªçµã¿åããã«ãããŸãã ããšãã°ãWebSocketsãä»ããŠã¢ããªã±ãŒã·ã§ã³ã管çããAJAXãä»ããçµã¿èŸŒã¿ãã£ãã·ã¥ã䜿çšããŠãªãœãŒã¹ãããŒãã§ããŸãã
ä»äœãããŸããïŒ
èšå®ãã€ã³ãã枬å®ããŠå¯Ÿå¿ããæ¹æ³ãåŠã³ãŸãã Webã¢ããªã±ãŒã·ã§ã³ã®ãã°ãåŠçãããããã®é ãã¯ãšãªãåŠçããŸãã ããã²ãŒã·ã§ã³ã¿ã€ãã³ã°APIã®ãããã§ãã¯ã©ã€ã¢ã³ãåŽã®é床ã枬å®ã§ããããã«ãªããŸããããã©ãŠã¶ã§ããã©ãŒãã³ã¹ããŒã¿ãåéããJavaScriptçµç±ã§ã¯ã©ãŠãã«éä¿¡ãããã³ãã§éèšããéžè±ã«å¯Ÿå¿ããŸãã éåžžã«äŸ¿å©ãªAPIã§ããå¿ ã䜿çšããŠãã ããã
ãã®çµæã nagiosãªã©ã®ç£èŠã·ã¹ãã ã«å²ãŸããç¶æ ã«ãªããWebã·ã¹ãã ã®é床ã§ãã¹ãŠãæ£åžžã§ããããšã瀺ã12åãŸãã¯2åã®èªåãã¹ããè¡ââãããŸãã ãããŠãè¯å®çãªå Žå-ããŒã ãçµã¿ç«ãŠããã決å®ãäžãããŸãã ã±ãŒã¹ã¯ãããšãã°æ¬¡ã®ãããªãã®ã§ãã
- ããŒã¿ããŒã¹ã®ã¯ãšãªãé ãã 解決çã¯ãã¯ãšãªã®æé©åãç·æ¥æã®éæ£èŠåã§ãã
- ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã®å®è¡ãé ãã 解決çã¯ãã¢ã«ãŽãªãºã ã®æé©åããã£ãã·ã¥ã§ãã
- ãããã¯ãŒã¯ãä»ããããŒãžæ¬æã®éä¿¡ãé ãã 解決çïŒã³ã¹ãã®å¢å é ïŒ-tcp initial cwndãå¢ãããåçãããã·ãã¯ã©ã€ã¢ã³ãã®é£ã«çœ®ãããµãŒããŒãããè¿ãã«è»¢éããŸã
- ã¯ã©ã€ã¢ã³ããžã®éçãªãœãŒã¹ã®æ»ããé ãã ãœãªã¥ãŒã·ã§ã³ã¯CDNã§ãã
- ãã©ãŠã¶ã§ãµãŒããŒãžã®ä¿çäžã®æ¥ç¶ãããã¯ããŸãã 解決çã¯ãã¡ã€ã³ã·ã£ãŒãã£ã³ã°ã§ãã
- ãã³ã°ããŒãªã³ã°ã¯ã顧客ããããããããããµãŒããŒã«å€§ããªå§åããããŸãã ãœãªã¥ãŒã·ã§ã³ã¯ããµãŒããŒéä¿¡ã€ãã³ããWebãœã±ããã§ãã
- é ããWebãœã±ããã¯äžå®å®ã§ãã 解決çã¯ããããã®TLSïŒwssïŒã§ãã
ãªã©
ãŸãšã
ææ°ã®Webã¢ããªã±ãŒã·ã§ã³ã®äž»èŠã³ã³ããŒãã³ãã調ã¹ãŸããã HTTP 2.0ã®åŸåã«ã€ããŠç解ããWebã¢ããªã±ãŒã·ã§ã³ã®å¿çé床ãå¯èœãªéã0.3ç§ã«æããããã«ç解ããŠæž¬å®ããããšãéèŠãªã³ã³ãããŒã«ãã€ã³ããåŠã³ãŸããã 圌ãã¯ããã©ãŠã¶ã§äœ¿çšãããŠããææ°ã®ãããã¯ãŒã¯æè¡ã®æ¬è³ªãèŠãŠããã®å©ç¹ãšããã«ããã¯ãç¹å®ããŸããã
ãããã¯ãŒã¯ã®åäœãé床ãé 延ã垯åå¹ ãç解ããããšãéèŠã§ããããšãç解ããŸããã ãããŠããã®åž¯åå¹ ã¯åžžã«éèŠãšããããã§ã¯ãããŸããã
WebãµãŒããŒãšããŒã¿ããŒã¹ããæ¡åŒµãããã ãã§ã¯äžååã§ããããšãæããã«ãªããŸããã ãã©ãŠã¶ãŒã§äœ¿çšããããããã¯ãŒã¯ãã¯ãããžãŒã®æŠèŠãç解ããå éšããææ¡ããŠå¹æçã«æž¬å®ããå¿ èŠããããŸãããããã£ãŠãTCPãã©ãã£ãã¯ã¹ããã¡ãŒãå³æã«ãªãããµãŒããŒãã°ã®äž»èŠãªããã©ãŒãã³ã¹ã€ã³ãžã±ãŒã¿ãŒã®ç£èŠã巊足ã«ãªããŸãã
ããŸããŸãªæ¹æ³ã§ã0.3ç§ãã§ã¯ã©ã€ã¢ã³ãèŠæ±ãåŠçããåé¡ã解決ããããšãã§ããŸãã äž»ãªããšã¯ãã¡ããªãã¯ã決å®ããèªåçã«ããããåéããããããè¶ ããå Žåã«è¡åããããšã§ã-åç¹å®ã®ã±ãŒã¹ã®ã«ãŒããæããŸãã åœç€Ÿã®è£œåã§ã¯ãéçããã³åçãµã€ããã¯ãããžãŒãçµã¿åãããå æ¬çãªãã£ãã·ã³ã°ãã¯ãããžãŒã®ãããã§ãå¯èœãªéãäœãã¬ã€ãã³ã·ã確ä¿ãããšããåé¡ã解決ããŸããã
æåŸã«ã5æ23æ¥ã«éããªãéå¬ãããæè¡äŒè°ã«ãæåŸ ããŸãã Webãããžã§ã¯ãã®çç£æ§ã確ä¿ãããšããå°é£ãªã¿ã¹ã¯ã§ã®å¹žéãšæåïŒ