ÎÞÂÛÄãÔÚ×öÇ°¶Ë¡¢ºó¶Ë»¹ÊÇÔËά£¬HTTP¶¼ÊDz»µÃ²»´ò½»µÀµÄÍøÂçÐÒé¡£ËüÊÇ×î³£ÓõÄÓ¦ÓòãÐÒ飬¶ÔËüµÄÓÅ»¯£¬¼ÈÄÜͨ¹ý½µµÍʱÑÓ´øÀ´¸üºÃµÄÌåÑéÐÔ£¬Ò²ÄÜͨ¹ý½µµÍ×ÊÔ´ÏûºÄ´øÀ´¸ü¸ßµÄ²¢·¢ÐÔ¡£
¿ÉÊÇ£¬Ñ§Ï°HTTP²»¾ÃµÄͬѧ£¬ºÜÄÑÈ«Ãæ˵³öHTTPµÄËùÓÐÓÅ»¯µã¡£Õâ¼ÈÓпÉÄÜÊÇÄãûºÃºÃ×¼±¸¹ý´ó³§µÄÃæÊÔ£¬Ò²ÓпÉÄÜÄãûÓмÓÈëÒ»¸ö¿ìËÙ·¢Õ¹µÄÏîÄ¿£¬µ±²úÆ·µÄÓû§Á¿²»¶Ï··¬Ê±£¬ÐèÇó»áµ¹±Æ×ÅÄãÓÅ»¯HTTPÐÒé¡£
ÕâƪÎÄÕÂÊǸù¾ÝÎÒÔÚ2019ÄêGOPSÈ«ÇòÔËά´ó»áÉϺ£Õ¾µÄÑݽ²PPT£¬ÖØÐÂÌáÁ¶ÎÄ×ÖºóµÄ×ܽᡣÎÒÏ£ÍûÄÜ´ÓËĸöȫеÄά¶È£¬´øÄ㸲¸Ç¾ø´ó²¿·ÖµÄHTTPÓÅ»¯¼¼ÇÉ¡£ÕâÑù£¬¼´Ê¹»¹²»ÐèÒª¼«Ö·½·¨È¥½â¾öµ±Ç°µÄÐÔÄÜÆ¿¾±£¬Ò²»áÖªµÀÓÅ»¯·½ÏòÔÚÄÄ£¬µ±ÐèÇóÀ´ÁÙʱ£¬Äܹ»µ½GoogleÉ϶¨Ïò²éÔÄ×ÊÁÏ¡£
µÚÒ»¸öά¶È£¬ÊÇ´Ó±àÂëЧÂÊÉÏ£¬¸ü¿ìËٵذÑÏûϢת»»³É¸ü¶ÌµÄ×Ö·ûÁ÷¡£ÕâÊÇ×îÖ±½ÓµÄÐÔÄÜÓÅ»¯µã¡£
Èç¹ûÄã¶ÔHTTP/1.1ÐÒé×ö¹ý×¥°ü·ÖÎö£¬¾Í»á·¢ÏÖËüÊÇÓá°whitespace-delimited¡±·½Ê½±àÂëµÄ¡£Óÿոñ¡¢»Ø³µÀ´±àÂ룬ÊÇÒòΪHTTPÔÚµ®ÉúÖ®³õ×·Çó¿É¶ÁÐÔ£¬ÕâÑù¸üÓÐÀûÓÚËüµÄÍƹ㡣
È»¶øÔÚµ±Ï£¬ÕâÖÖµÍЧµÄ±àÂ뷽ʽÒѾÑÏÖØÓ°ÏìÐÔÄÜÁË£¬ËùÒÔ2009ÄêGoogleÍƳöÁË»ùÓÚ¶þ½øÖƵÄSPDYÐÒ飬´ó·ùÌáÉýÁ˱àÂëЧÂÊ¡£2015Ä꣬ÉÔ×ö¸Ä½øºóËü±»È·¶¨ÎªHTTP/2ÐÒ飬ÏÖÔÚ50%ÒÔÉϵÄÕ¾µã¶¼ÔÚʹÓÃËü¡£
ÕâÊDZàÂëÓÅ»¯µÄ´ó·½Ïò£¬°üÀ¨¼´½«ÍƳöµÄHTTP/3¡£
È»¶øÕâЩм¼Êõµ½µ×ÊÇÔõÑùÌáÉýÐÔÄܵÄÄØ£¿ÄÇ»¹µÃ²ð¿ªÁË¿´£¬ÏÈ´ÓÊý¾ÝµÄѹËõ̸Æð¡£Äã×¥°ü¿´µ½µÄÊÇÊý¾Ý£¬Ëü²¢²»µÈÓÚÐÅÏ¢¡£Êý¾ÝÆäʵÊÇÐÅÏ¢ºÍÈßÓàÊý¾ÝÖ®ºÍ£¬¶øѹËõ¼¼Êõ£¬¾ÍÊǾ¡Á¿µØÈ¥³ýÈßÓàÊý¾Ý¡£
ѹËõ·ÖΪÎÞËðѹËõºÍÓÐËðѹËõ¡£Õë¶ÔͼƬ¡¢ÒôÊÓƵ£¬ÎÒÃÇÿÌ춼ÔÚÓëÓÐËðѹËõ´ò½»µÀ¡£±ÈÈ磬µ±ä¯ÀÀÆ÷Ö»ÐèÒªËõÂÔͼʱ£¬¾ÍûÓбØÒªÀË·Ñ´ø¿í´«Êä¸ßÇåͼƬ¡£¶ø¸ßÇåÊÓƵ×ö¹ýÓÐËðѹËõºó£¬ÔÚÈâÑÛÎÞ·¨·ÖÇåʱ£¬ÒѾ±»Ñ¹ËõÁËÉÏǧ±¶¡£
ÕâÊÇÒòΪ£¬ÉùÒô¡¢ÊÓƵ¶¼¿ÉÒÔ×öÔöÁ¿Ñ¹Ëõ¡£»¹¼ÇµÃÔø¾µÄVCDÂ𣿵±¹âÅÌÓл®ºÛʱ£¬ÕûÕÅÅ̶¼ÎÞ·¨²¥·Å£¬¾ÍÊÇÒòΪÄÇʱµÄÊÓƵ×öÁËÔöÁ¿Ñ¹Ëõ£¬¶øÇҹؼüÖ¡Ì«ÉÙ£¬µ¼Ö¹ؼüÖ¡Ëð»µÊ±£¬ºóÃæµÄÔöÁ¿Ö¡È«²¿ÎÞ·¨²¥·ÅÁË¡£
ÔÙÀ´¿´ÎÞËðѹËõ£¬Äã¿Ï¶¨Óùýgzip£¬ËüÈÃhttp bodyʵÏÖÁËÎÞËðѹËõ¡£ÈâÑÛÔĶÁѹËõºóµÄ±¨ÎÄÈ«ÊÇÂÒÂ룬µ«½ÓÊն˽âѹºó£¬¿ÉÒÔ¿´µ½·¢ËͶ˵ÄÔÎÄ¡£È»¶ø£¬gzipµÄЧÂÊÆäʵ²¢²»¸ß£¬ÒÔGoogleÍƳöµÄbrotli×ö¶Ô±È£¬Äã¾ÍÖªµÀËüµÄȱÏÝÁË£º
ÆÀ¼ÛѹËõË㷨ʱ£¬ÎÒÃÇÖص㿴Á½¸öÖ¸±ê£ºÑ¹ËõÂʺÍѹËõËٶȡ£ÉÏͼÖпÉÒÔ¿´µ½£¬ÎÞÂÛÓÃgzip 9¸öѹËõ¼¶±ðÖеÄÄÄÒ»¸ö£¬ËüµÄѹËõÂʶ¼µÍÓÚbrotli£¨Ïà±Ègzip£¬Ñ¹Ëõ¼¶±ðËü»¹¿ÉÒÔÅäÖÃΪ10£©£¬Ñ¹ËõËÙ¶ÈÒ²¸üÂý¡£ËùÒÔ£¬Èç¹û¿ÉÒÔ£¬Ó¦¸Ã¾¡¿ì¸üÐÂÄãµÄgzipѹËõËã·¨ÁË¡£
˵Íê¶ÔbodyµÄѹËõ£¬ÔÙÀ´¿´HTTP headerµÄѹËõ¡£¶ÔÓÚHTTP/1.xÀ´Ëµ£¬header¾ÍÊÇÐÔÄÜɱÊÖ¡£ÌرðÊǵ±ÏÂcookie·ºÀĵÄʱ´ú£¬Ã¿´ÎÇëÇó¶¼ÒªÐ¯´ø¼¸¸öKBµÄÍ·²¿£¬ºÜÀË·Ñ´ø¿í¡¢CPU¡¢Äڴ棡HTTP2ͨ¹ý HPACK ¼¼Êõ´ó·ù¶È½µµÍÁËheader±àÂëºóµÄÌå»ý£¬ÕâÒ²ÊÇHTTP3µÄÑݽø·½Ïò¡£HPACK µ½µ×ÊÇÔõÑùʵÏÖ header ѹËõµÄÄØ£¿
HPACKͨ¹ýHuffmanËã·¨¡¢¾²Ì¬±í¡¢¶¯Ì¬±í¶ÔÈýÖÖheader¶¼×öÁËѹËõ¡£±ÈÈçÉÏͼÖУ¬method GET´æÔÚÓÚ¾²Ì¬±í£¬ÓÃ1¸ö×Ö½Ú±íʾµÄÕûÊý2±í´ï¼´¿É£»user-agent MozillaÕâÐÐÍ·²¿·Ç³£³¤£¬µ±ËüµÚ2´Î³öÏÖʱ£¬ÓÃ2¸ö×Ö½ÚµÄÕûÊý62±íʾ¼´¿É£»¼´Ê¹ËüµÚ1´Î³öÏÖʱ£¬Ò²¿ÉÒÔÓÃHuffmanË㷨ѹËõMozillaÕâ¶ÎºÜ³¤µÄä¯ÀÀÆ÷±êʶ·û£¬¿ÉÒÔ»ñµÃ×î¶à5/8µÄѹËõÂÊ¡£
¾²Ì¬±íÖÐÖ»´æ·Å×î³£¼ûµÄheader£¬ÓеÄÖ»ÓÐname£¬ÓеÄͬʱ°üÀ¨nameºÍvalue¡£¾²Ì¬±íµÄ´óСºÜÓÐÏÞ£¬Ä¿Ç°Ö»ÓÐ61¸öÔªËØ¡£
¶¯Ì¬±íÓ¦ÓÃÁËÔöÁ¿±àÂëµÄ˼Ï룬¼´£¬µÚ1´Î³öÏÖʱ¼ÓÈ붯̬±í£¬µÚ2´Î³öÏÖµÄʱºò£¬´«ÊäËüÔÚ¶¯Ì¬±íÖеÄÐòºÅ¼´¿É¡£
Huffman±àÂëÔÚwinrarµÈѹËõÈí¼þÖйãΪʹÓ㬵«HPACKÖеÄHuffmanÓÐËù²»Í¬£¬ËüʹÓõÄÊǾ²Ì¬huffman±àÂë¡£¼´£¬Ëüͳ¼ÆÁË»¥ÁªÍøÉϼ¸ÄêÄÚµÄHTTPÍ·²¿£¬°´ÕÕÿ¸ö×Ö·û³öÏֵĸÅÂÊ£¬Öؽ¨huffmanÊ÷£¬ÕâÑù£¬¸ù¾Ý¹æÔò£¬³öÏÖ´ÎÊý×î¶àµÄa¡¢c¡¢e»òÕß1¡¢2¡¢3ÕâЩ×Ö·û¾ÍÖ»ÓÃ5¸öbitλ±íʾ£¬¶øºÜÉÙ³öÏÖµÄ×Ö·ûÔòÓü¸Ê®¸öbitλ±íʾ¡£
˵Íêheader£¬ÔÙÀ´¿´http bodyµÄ±àÂë¡£ÕâÀïÖ»¾Ù3¸öÀý×Ó£º1¡¢Ö»Óм¸Ê®×Ö½ÚµÄСͼ±ê£¬Ã»ÓбØÒªÓöÀÁ¢µÄHTTPÇëÇó´«Ê䣬¸ù¾ÝRFC2397µÄ¹æÔò£¬¿ÉÒÔ°ÑËüÖ±½ÓǶÈëµ½HTML»òÕßCSSÎļþÖУ¬¶øä¯ÀÀÆ÷ÔÚ½âÎöʱ»áʶ±ð³öËüÃÇ£¬¾ÍÏñÏÂͼÖеÄÍ·Ïñ£º
2¡¢JSÔ´ÂëÎļþÖУ¬¿ÉÄÜÓÐÐí¶àСÎļþ£¬ÕâЩÎļþÖÐÒ²ÓÐÐí¶à¿ÕÐС¢×¢ÊÍ£¬Í¨¹ýWebPack¹¤¾ß£¬ÏÈÔÚ·þÎñÆ÷¶Ë´ò°üΪһ¸öÎļþ£¬²¢È¥³ýÈßÓàµÄ×Ö·û£¬±àÂëЧ¹ûÒ²ºÜºÃ¡£
3¡¢ÔÚ±íµ¥ÖУ¬¿ÉÒÔÒ»´Î´«Êä¶à¸öÔªËØ£¬±ÈÈç¼ÈÓи´Ñ¡¿ò£¬Ò²¿ÉÒÔÓÐÎļþ¡£Õâ¾Í¼õÉÙÁËHTTPÇëÇóµÄ¸öÊý¡£
¿É¼û£¬httpÐÒé´Óheaderµ½ body£¬¶¼ÓÐÐí¶à±àÂëÊֶΣ¬¿ÉÒÔÈô«ÊäµÄ±¨Îĸü¶ÌС£¬¼È½ÚÊ¡ÁË´ø¿í£¬Ò²½µµÍÁËʱÑÓ¡£
±àÂëЧÂÊÓÅ»¯Íêºó£¬ÔÙÀ´¿´¡°ÐŵÀ¡±£¬ÕâËäÈ»ÊÇͨѶÁìÓòµÄ´Ê»ã£¬µ«ÓÃÀ´¸ÅÀ¨HTTPµÄÓÅ»¯µã·Ç³£ºÏÊÊ£¬ÕâÀï¾Í½èÓÃÏÂÁË¡£
ÐŵÀÀûÓÃÂÊ°üÀ¨3¸öÓÅ»¯µã£¬µÚÒ»¸öÓÅ»¯µãÊǶà·¸´Ó㡸ßËٵĵͲãÐŵÀÉÏ£¬¿ÉÒÔÅÜÐí¶àµÍËٵĸ߲ãÐŵÀ¡£±ÈÈ磬Ö÷»úÉÏÖ»ÓÐÒ»¿éÍø¿¨£¬È´ÄÜͬʱÈÃä¯ÀÀÆ÷¡¢Î¢ÐÅ¡¢¶¤¶¤ÊÕ·¢ÏûÏ¢£»Ò»¸ö½ø³Ì¿ÉÒÔͬʱ·þÎñ¼¸Íò¸öTCPÁ¬½Ó£»Ò»¸öTCPÁ¬½ÓÉÏ¿ÉÒÔͬʱ´«µÝ¶à¸öHTTP2 STREAMÏûÏ¢¡£
Æä´Î£¬ÎªÁËÈÃÐŵÀÓиü¸ßµÄÀûÓÃÂÊ£¬»¹µÃ¼°Ê±»Ö¸´´íÎó¡£ËùÒÔ£¬TCP¹¤×÷µÄºÜ´óÒ»²¿·Ö£¬¶¼ÊÇÔÚ¼°Ê±µÄ·¢ÏÖ¶ª°ü¡¢ÂÒÐò±¨ÎÄ£¬²¢¿ìËٵĴ¦ÀíËüÃÇ¡£
×îºó£¬¾ÍÏñ¾¼ÃѧÀï˵µÄ£¬×ÊÔ´×ÜÊÇϡȱµÄ¡£ÓÐÏ޵Ĵø¿íÏ£¬ÈçºÎ¹«Æ½µÄ¶Ô´ý²»Í¬µÄÁ¬½Ó¡¢Óû§ºÍ¶ÔÏóÄØ£¿±ÈÈçÏÂÔØÒ³Ãæʱ£¬Èç¹û°ÑCSSºÍͼƬÒÔͬµÈÓÅÏȼ¶ÏÂÔؾÍÓÐÎÊÌ⣬ͼƬÍíµãÏÔʾû¹Øϵ£¬µ«CSSû»ñÈ¡µ½Ò³Ãæ¾ÍÎÞ·¨ÏÔʾ¡£ÁíÍ⣬´«ÊäÏûϢʱ£¬±¨ÎÄÍ·±¨²¢²»³ÐÔØÄ¿±êÐÅÏ¢£¬µ«ËüÓÖÊDZز»¿ÉÉٵģ¬ÈçºÎ½µµÍÕâЩ¿ØÖÆÐÅÏ¢µÄÕ¼±ÈÄØ£¿
ÎÒÃÇÏȴӶ෸´ÓÃ̸Æð¡£¹ãÒåÉÏÀ´Ëµ£¬¶àÏ̡߳¢Ð³Ì¶¼ÊôÓڶ෸´Ó㬵«ÕâÀïÎÒÖ÷ÒªÖ¸http2µÄstream¡£ÒòΪhttpÐÒé±»Éè¼ÆΪclientÏÈ·¢request£¬server²ÅÄܻظ´response£¬ÕâÑùÊÕ·¢ÏûÏ¢£¬ÊÇû°ì·¨ÅÜÂú´ø¿íµÄ¡£×îÓÐЧÂʵķ½Ê½ÊÇ£¬·¢ËͶËÔ´Ô´²»¶ÏµØ·¢ÇëÇó¡¢½ÓÊÕ¶ËÔ´Ô´²»¶ÏµØ·¢ÏìÓ¦£¬Õâ¶ÔÓÚ³¤·ÊÍøÂçÓÈΪÓÐЧ£º
HTTP2µÄstream¾ÍÊÇÕâÑù¸´ÓÃÁ¬½ÓµÄ¡£ÎÒÃÇÖªµÀ£¬chrome¶ÔÒ»¸öÕ¾µã×î¶àͬʱ½¨Á¢6¸öÁ¬½Ó£¬¶øÓÐÁËHTTP2ºó£¬Ö»ÐèÒªÒ»¸öÁ¬½Ó¾ÍÄܸßЧµÄ´«ÊäÒ³ÃæÉϵÄÊý°Ù¸ö¶ÔÏó¡£ÎÒÌØÒâÈÃÎҵĸöÈËÕ¾µãwww.taohui.pubͬʱ֧³ÖHTTP1ºÍHTTP2£¬ÏÂͼÊÇÁ¬½ÓÊÓ½ÇÉÏHTTP2ºÍHTTP1µÄÇø±ð¡£
ÊìϤchrome NetworkÍøÂçÃæ°åµÄͬѧ£¬¿Ï¶¨ºÜÊìϤwaterfall£¬Ëü¿ÉÒÔ°ïÖúÄã·ÖÎöHTTPÇëÇóµ½µ×ÂýÔÚÄÄÀÊÇÇëÇó·¢³öµÄÂý£¬»¹ÊÇÏìÓ¦½ÓÊÕµÄÂý£¬ÓÖ»òÕßÊǽâÎöµÃÌ«ÂýÁË¡£ÏÂͼ»¹ÊÇÎÒµÄÕ¾µãÔÚwaterfallÊÓ½ÇϵĶԱȡ£
´ÓÕâÁ½ÕÅͼ¿ÉÒÔ¿´³ö£¬HTTP2È«ÃæÓÅÓÚHTTP1¡£
ÔÙÀ´¿´ÍøÂç´íÎóµÄ»Ö¸´¡£ÔÚÓ¦Óò㣬lingering_timeͨ¹ýÑӳٹرÕÁ¬½ÓÀ´±ÜÃâä¯ÀÀÆ÷ÒòRST´íÎóÊÕ²»µ½http response£¬¶øtimeoutÔòÊÇÓö¨Ê±Æ÷¼°Ê±·¢ÏÖ´íÎó²¢ÊÍ·Å×ÊÔ´¡£
ÔÚ´«Êä²ã£¬Í¨¹ýtimestamp=1¿ÉÒÔÈÃTCP¸ü¾«×¼µÄ²âÁ¿³ö¶¨Ê±Æ÷µÄ³¬Ê±Ê±¼äRTO¡£µ±È»£¬timestamp»¹ÓÐÒ»¸öÓÃ;£¬¾ÍÊÇ·ÀÖ¹³¤·ÊÍøÂçÖеÄÐòÁкŻØÈÆ¡£
ʲôÊÇÐòÁкŻØÈÆÄØ£¿ÎÒÃÇÖªµÀ£¬TCPÿ¸ö±¨ÎĶ¼ÓÐÐòÁкţ¬Ëü²»ÊÇÖ¸±¨ÎĵĴÎÐò£¬¶øÊÇÒѾ·¢Ë͵Ä×Ö½ÚÊý¡£ÓÉÓÚËüÊÇ32λÕûÊý£¬ËùÒÔ×î¶à¿ÉÒÔ´¦Àí232Ò²¾ÍÊÇ4.2GBµÄ·ÉÐÐÖб¨ÎÄ¡£ÏñÉÏͼÖУ¬µ±1G-2GÕâЩ±¨ÎÄÔÚÍøÂçÖзÉÐÐʱ¼ä¹ý³¤Ê±£¬¾Í»áÓë5G-6G±¨ÎÄÖصþ£¬Òý·¢´íÎó¡£
ÍøÂç´íÎó»¹ÓкܶàÖÖ£¬±ÈÈ籨ÎĵĴÎÐòÒ²ÊÇÎÞ·¨±£Ö¤µÄ¡£´ò¿ªtcp_sack¿ÉÒÔ¼õÉÙÂÒÐòʱµÄÖØ·¢±¨ÎÄÁ¿£¬½µµÍ´ø¿íÏûºÄ¡£
ÓÃChromeä¯ÀÀÆ÷Ö±½ÓÏÂÔØ´óÎļþʱ£¬ÍøÂç²»ºÃʱ£¬Ò»³ö´í¾ÍµÃÈ«²¿ÖØ´«£¬ÌåÑéºÜ²î¡£¸ÄÓÃѸÀ×ÏÂÔؾͿìÁ˺ܶࡣÕâÊÇÒòΪѸÀ×°Ñ´óÎļþ²ð³ÉºÜ¶àС¿é£¬¿ÉÒÔ¶àÏß³ÌÏÂÔØ£¬¶øÇÒÿ¸öС¿é³ö´íºó£¬ÖØÐÂÏÂÔØÕâÒ»¸ö¿é¼´¿É£¬Ð§Âʺܸߡ£Õâ¸ö¶ÏµãÐø´«¡¢¶àÏß³ÌÏÂÔؼ¼Êõ£¬¾ÍÊÇHTTPµÄRangeÐÒé¡£Èç¹ûÄãµÄ·þÎñÊÇ»º´æ£¬Ò²¿ÉÒÔʹÓÃRangeÐÒ飬±ÈÈçNginxµÄSliceÄ£¿é¾Í×öÁËÕâ¼þÊ¡£
ʵ¼ÊÉ϶ÔÓÚÍøÂç´íÎó»Ö¸´£¬×ÃîµÄËã·¨ÊÇÓµÈû¿ØÖÆ£¬Ëü¿ÉÒÔÈ«ÃæÌáÉýÍøÂçÐÔÄÜ¡£ÓÐͬѧ»áÎÊ£¬TCP²»ÊÇÓÐÁ÷Á¿¿ØÖÆ£¬ÎªÊ²Ã´»¹»á·¢ÉúÍøÂçÓµÈûÄØ£¿ÕâÊÇÒòΪ£¬TCPÁ´Â·Öеĸ÷¸ö·ÓÉÆ÷£¬´¦ÀíÄÜÁ¦²¢²»»¥ÏàÆ¥Åä¡£
¾ÍÏñÉÏͼ£¬R1µÄ·åÖµÍøÂçÊÇ700M/s£¬R2µÄ·åÖµÍøÂçÊÇ600M/s£¬ËüÃǶ¼ÐèҪͨ¹ýR3²ÅÄܵ½´ïR4¡£È»¶ø£¬R3µÄ×î´ó´ø¿íÖ»ÓÐ1000M/s£¡µ±R1¡¢R2ÖеÄTCPÈ«ËÙʹÓø÷×Ô´ø¿íʱ£¬¾Í»áÒý·¢R3¶ª°ü¡£ÓµÈû¿ØÖƾÍÊǽâ¾ö¶ª°üÎÊÌâµÄ¡£
×Ô1982ÄêTCPµ®ÉúÆ𣬾ÍÔÚʹÓô«Í³µÄÓµÈû¿ØÖÆËã·¨£¬ËüÊÇ·¢ÏÖ¶ª°üºóÔÙɲ³µ¼õËÙ£¬Ð§¹ûºÜ²»ºÃ¡£ÎªÊ²Ã´ÄØ£¿Äã¿ÉÒÔ¹Û²ìÏÂͼ£¬Â·ÓÉÆ÷ÖлáÓлº³å¶ÓÁУ¬µ±¶ÓÁÐΪ¿Õʱ£¬pingµÄʱÑÓ×î¶Ì£»µ±¶ÓÁн«Âúʱ£¬pingµÄʱÑӺܴ󣬵«»¹Î´·¢Éú¶ª°ü£»µ±¶ÓÁÐÒÑÂúʱ£¬¶ª°ü²Å»á·¢Éú¡£
ËùÒÔ£¬µ±¶ÓÁгöÏÖ»ýѹʱ£¬¶ª°üûÓз¢Éú¡£ËäÈ»´Ëʱ·åÖµ´ø¿í²»»á¼õÉÙ£¬µ«ÍøÂçʱÑÓ±ä´óÁË£¬ÕâÊÇÒª±ÜÃâµÄ¡£¶ø²âÁ¿Çý¶¯µÄÓµÈû¿ØÖÆËã·¨£¬¾ÍÔÚ¶ÓÁиճöÏÖ»ýѹÕâ¸öµãÉÏ¿ªÊ¼É²³µ¼õËÙ¡£ÔÚµ±½ñÄÚ´æÔ½À´Ô½±ãÒË£¬¶ÓÁÐÔ½À´Ô½´óµÄÄê´ú£¬ÐÂËã·¨ÓÈΪÓÐЧ¡£
µ±LinuxÄں˸üе½4.9°æ±¾Ê±£¬ÔÏȵÄCUBICÓµÈû¿ØÖÆËã·¨¾Í±»Ì滻ΪGoogleµÄBBRËã·¨ÁË¡£´ÓÏÂͼÖпÉÒÔ¿´µ½£¬µ±¶ª°üÂÊ´ïµ½0.01%ʱ£¬CUBIC¾Íû·¨ÓÃÁË£¬¶øBBR²¢Ã»ÓÐÎÊÌ⣬ֱµ½¶ª°üÂÊ´ïµ½5%ʱBBRµÄ´ø¿í²Å¾çÁÒϽµ¡£
ÔÙÀ´¿´×ÊÔ´µÄƽºâ·ÖÅ䡣ΪÁ˹«Æ½µÄ¶Ô´ýÁ¬½Ó¡¢Óû§£¬·þÎñÆ÷»á×öÏÞËÙ¡£±ÈÈçÏÂͼÖеÄLeacky BucketËã·¨£¬ËüÄܹ»Æ½»¬Í»ÔöµÄÁ÷Á¿£¬¸ü¹«Æ½µÄ·ÖÅä´ø¿í¡£
ÔÙ±ÈÈçHTTP2ÖеÄÓÅÏȼ¶¹¦ÄÜ¡£Ò»¸öÒ³ÃæÉÏÓм¸°Ù¸ö¶ÔÏó£¬ÕâЩ¶ÔÏóµÄÖØÒªÐÔ²»Í¬£¬ÓÐЩ֮¼ä»¹»¥ÏàÒÀÀµ¡£±ÈÈ磬ÓÐЩJSÎļþ»á°üº¬jQuery.js£¬Èç¹ûͬµÈ¶Ô´ýµÄ»°£¬¼´Ê¹ÏÈÏÂÔØÍêÇ°Õߣ¬Ò²ÎÞ·¨Ê¹Óá£
HTTP2ÔÊÐíä¯ÀÀÆ÷ÏÂÔضÔÏóʱ£¬¸ù¾Ý½âÎö¹æÔò£¬ÔÚstreamÖÐÉèÖÃÿһ¸ö¶ÔÏóµÄweightÓÅÏȼ¶£¨255×î´ó£¬0×îС£©¡£¶ø¸÷´úÀí¡¢×ÊÔ´·þÎñÆ÷¶¼»á¸ù¾ÝÓÅÏȼ¶£¬·ÖÅäÄÚ´æºÍ´ø¿í£¬ÌáÉýÍøÂçЧÂÊ¡£
×îºó¿´ÏÂTCPµÄ±¨ÎÄЧÂÊ£¬ËüÒ²»áÓ°ÏìÖ®ÉϵÄHTTPÐÔÄÜ¡£±ÈÈ翪ÆôNagleËã·¨ºó£¬ÍøÂçÖеÄС±¨ÎÄÊýÁ¿´ó·ù¼õÉÙ£¬¿¼Âǵ½40×ֽڵı¨ÎÄÍ·²¿£¬ÐÅÏ¢Õ¼±È¸ü¸ß¡£
CorkËã·¨ÓëNagleËã·¨ÏàËÆ£¬µ«»á¸ü¼¤½øµÄ¿ØÖÆС±¨ÎÄ¡£CorkÓëNagleÊÇ´Ó·¢ËͶ˿ØÖÆС±¨ÎÄ£¬quickackÔò´Ó½ÓÊն˿ØÖÆ´¿ackС±¨ÎĵÄÊýÁ¿£¬Ìá¸ßÐÅÏ¢Õ¼±È¡£
˵ÍêÏà¶Ô΢¹ÛһЩµÄÐŵÀ£¬ÎÒÃÇÔÙÀ´´Óºê¹ÛÉÏ¿´µÚÈý¸öÓÅ»¯µã£º´«Êä·¾¶µÄÓÅ»¯¡£
´«Êä·¾¶µÄµÚÒ»¸öÓÅ»¯µãÊÇ»º´æ£¬ä¯ÀÀÆ÷¡¢CDN¡¢¸ºÔؾùºâµÈ×é¼þÖУ¬»º´æÎÞ´¦²»ÔÚ¡£
»º´æµÄ»ù±¾Ó÷¨Äã´ó¸ÅºÜÊìϤÁË£¬ÕâÀïÎÒÖ»½²¹ýÆÚ»º´æµÄÓ÷¨¡£°Ñ¹ýÆÚ»º´æÖ±½Ó¶ªµôÊǺÜÀ˷ѵģ¬ÒòΪ¡°¹ýÆÚ¡±ÊÇ¿Í»§¶ËµÄ¶¨Ê±Æ÷¾ö¶¨µÄ£¬²¢²»´ú±í×ÊÔ´ÕæÕýʧЧ¡£ËùÒÔ£¬¿ÉÒÔ°ÑËüµÄ±êʶ·û´ø¸øÔ´·þÎñÆ÷£¬·þÎñÆ÷»áÅжϻº´æÊÇ·ñÈÔÈ»ÓÐЧ£¬Èç¹ûÓÐЧ£¬Ö±½Ó·µ»Ø304ºÍ¿Õbody¾Í¿ÉÒÔÁË£¬·Ç³£½ÚÊ¡´ø¿í¡£
¶ÔÓÚ¸ºÔؾùºâ¶øÑÔ£¬¹ýÆÚ»º´æ»¹Äܹ»±£»¤Ô´·þÎñÆ÷£¬ÏÞÖÆ»ØÔ´ÇëÇó¡£µ±Ô´·þÎñÆ÷¹Òµôºó£¬»¹ÄÜÒÔ¹ýÆÚ»º´æ¸øÓû§´øÀ´½µ¼¶ºóµÄ·þÎñÌåÑ飬Õâ±È·µ»Ø503ÒªºÃµÃ¶à¡£
´«Êä·¾¶µÄµÚ¶þ¸öÓÅ»¯µãÊÇÂýÆô¶¯¡£ÏµÍ³×Ô´øµÄTCPÐÒéÕ»£¬ÎªÁ˱ÜÃâÆ¿¾±Â·ÓÉÆ÷¶ª°ü£¬»á»º»º¼Ó´ó´«ÊäËٶȡ£ËüµÄÆðʼËٶȾͽÐ×ö³õʼӵÈû´°¿Ú¡£
ÔçÆڵijõʼӵÈû´°¿ÚÊÇ1¸öMSS£¨Í¨³£ÊÇ576×Ö½Ú£©£¬ºóÀ´¸Äµ½3¸öMSS£¨Linux 2.5.32£©£¬ÔÚGoogleµÄ½¨ÒéÏÂÓָĵ½10¸öMSS£¨Linux 3.0£©¡£Ö®ËùÒÔÒª²»¶ÏÌáÉýÆðʼ´°¿Ú£¬ÊÇÒòΪËæ×Å»¥ÁªÍøµÄ·¢Õ¹£¬ÍøÒ³Ô½À´Ô½·á¸»£¬Ìå»ýÒ²Ô½À´Ô½´ó¡£Æðʼ´°¿Ú̫С£¬¾ÍÐèÒª¸ü³¤µÄʱ¼äÏÂÔصÚÒ»¸öÍøÒ³£¬ÌåÑéºÜ²î¡£
µ±È»£¬ÐÞ¸ÄÆðʼ´°¿ÚºÜ¼òµ¥£¬ÏÂͼÖÐÊÇLinuxϵ÷Õû´°¿ÚµÄ·½·¨¡£
ÐÞ¸ÄÆðʼ´°¿ÚÊdz£¼ûµÄÐÔÄÜÓÅ»¯ÊֶΣ¬±ÈÈçCDN³§É̶¼¸Ä¹ýÆðʼ´°¿Ú£¬ÏÂͼÊÇÖ÷Á÷CDN³§ÉÌ2014ºÍ2017ÄêµÄÆðʼ´°¿Ú´óС¡£
¿É¼û£¬ÓÐЩ´°¿Ú14Äêµ÷µÃÌ«´óÁË£¬17ÄêÓÖËõ»ØÈ¥ÁË¡£ËùÒÔ£¬Æðʼ´°¿Ú²¢²»ÊÇÔ½´óÔ½ºÃ£¬Ëü»áÔö¼ÓÆ¿¾±Â·ÓÉÆ÷µÄѹÁ¦¡£
ÔÙÀ´¿´´«Êä·¾¶ÉÏ£¬ÈçºÎ´ÓÀģʽÉý¼¶µ½ÍÆģʽ¡£±ÈÈçindex.htmlÎļþÖаüº¬£¬ÔÚHTTP/1ÖУ¬±ØÐëÏÈÏÂÔØÍêindex.html£¬²ÅÄÜÈ¥ÏÂÔØsome.css£¬ÕâÊÇÁ½¸öRTTµÄʱ¼ä¡£µ«ÔÚHTTP/2ÖУ¬·þÎñÆ÷¿ÉÒÔͨ¹ý2¸östream£¬Í¬Ê±²¢Ðд«ËÍindex.htmlºÍsome.css£¬½ÚÔ¼ÁËÒ»°ëµÄʱ¼ä¡£
Æäʵµ±³öÏÖ¶ª°üʱ£¬HTTP2µÄstream²¢Ðз¢ËÍ»áÑÏÖØÍË»¯£¬ÒòΪTCPµÄ¶ÓÍ·×èÈûÎÊÌâûÓнâ¾ö¡£
ÉÏͼÖеÄSPDYÓëHTTP2Êǵȼ۵ġ£ÔÚºìÂÌÉ«Õâ3¸östream²¢·¢´«Êäʱ£¬TCP²ãÈÔÈ»»á´®Ðл¯£¬¼ÙÉèºìÉ«µÄstreamÔÚ×îÏÈ·¢Ë͵ģ¬Èç¹ûºìÉ«±¨ÎĶªÊ§£¬ÄÇô¼´Ê¹½ÓÊÕ¶ËÒѾÊÕµ½ÁËÍêÕûµÄÀ¶¡¢ÂÌstream£¬TCPÒ²²»»á°ÑËü½»¸øHTTP2£¬ÒòΪTCP×ÔÉí±ØÐë±£Ö¤±¨ÎÄÓÐÐò¡£ÕâÑù²¢·¢¾ÍûÓб£Ö¤ÁË£¬Õâ¾ÍÊǶÓÍ·×èÈûÎÊÌâ¡£
½â¾ö¶ÓÍ·×èÈûµÄ°ì·¨¾ÍÊÇÈÆ¿ªTCP£¬Ê¹ÓÃUDPÐÒéʵÏÖHTTP£¬±ÈÈçGoogleµÄGQUICÐÒé¾ÍÊÇÕâô×öµÄ£¬BÕ¾ÔÚ¼¸ÄêÇ°¾ÍʹÓÃËüÌṩ·þÎñÁË¡£
UDPÐÒé×ÔÉíÊDz»Äܱ£Ö¤¿É¿¿´«ÊäµÄ£¬ËùÒÔGQUICÐèÒªÖØÐÂÔÚUDPÖ®ÉÏʵÏÖTCPÔø¾×ö¹ýµÄÊ¡£ÕâÊÇHTTPµÄ·¢Õ¹·½Ïò£¬ËùÒÔÄ¿Ç°HTTP3¾Í»ùÓÚGQUICÔÚÖƶ¨±ê×¼¡£
×îºó£¬ÔÙ´ÓÍøÂçÐÅÏ¢°²È«µÄ½Ç¶È£¬Ì¸Ì¸ÈçºÎ×öÓÅ»¯¡£Ëüʵ¼ÊÉÏÓë±àÂë¡¢ÐŵÀ¡¢´«Êä·¾¶¶¼ÓйØÁª£¬µ«ÆäʵÓÖÊǶÀÁ¢µÄ»·½Ú£¬ËùÒÔ·ÅÔÚ×îºóÌÖÂÛ¡£
ËÄ¡¢ÐÅÏ¢°²È«ÓÅ»¯
»¥ÁªÍøÊÀ½çµÄÐÅÏ¢°²È«£¬Ê¼ÓÚ1995ÄêµÄSSL3.0¡£µ½ÏÖÔÚ£¬Ðí¶à´óÐÍÍøÕ¾¶¼¸üе½2018ÄêÍƳöµÄTLS1.3ÁË¡£
TLS1.2ÓÐʲôÎÊÌâÄØ£¿×î´óÎÊÌâ¾ÍÊÇ£¬ËüÖ§³Ö¹ÅÀϵÄÃÜÔ¿ÐÉÌÐÒ飬ÕâЩÐÒéÏÖÔÚÒѾ²»°²È«ÁË¡£±ÈÈç2015Äê³öÏÖµÄFREAKÖмäÈ˹¥»÷£¬¾Í¿ÉÒÔÓÃAmazonÉϵÄÐéÄâ»ú£¬·Ö·ÖÖÓ¹¥ÏÝÖ§³ÖÀÏËã·¨µÄ·þÎñÆ÷¡£
TLS1.3Õë¶ÔÕâÒ»Çé¿ö£¬È¡ÏûÁËÔÚµ±Ç°µÄ¼ÆËãÁ¦Ï£¬ÊýѧÉÏÒѾ²»ÔÙ°²È«µÄ·Ç¶Ô³ÆÃÜÔ¿ÐÉÌËã·¨¡£ÔÚOpensslµÄ×îÐÂʵÏÖÖУ¬½öÖ§³Ö5ÖÖ°²È«Ì×¼þ£º
TLS1.3µÄÁíÒ»¸öÓÅÊÆÊÇÎÕÊÖËٶȡ£ÔÚTLS1.2ÖУ¬ÓÉÓÚÐèÒª2¸öRTT²ÅÄÜÐÉÌÍêÃÜÔ¿£¬²Åµ®ÉúÁËsession cacheºÍsession ticketÕâÁ½¸ö¹¤¾ß£¬ËüÃǶ¼°ÑÐÉÌÃÜÔ¿µÄÎÕÊÖ½µµÍΪ1¸öRTT¡£µ«ÊÇ£¬ÕâÁ½ÖÖ·½Ê½¶¼ÎÞ·¨Ó¦¶ÔÖطŹ¥»÷¡£
¶øTLS1.2ÖеݲȫÌ×¼þÐÉÌ¡¢ECDHE¹«Ô¿½»»»ÕâÁ½²½£¬ÔÚTLS1.3Öб»ºÏ²¢³ÉÒ»²½£¬Õâ´ó´óÌáÉýÁËÎÕÊÖËٶȡ£
Èç¹ûÄ㻹ÔÚʹÓÃTLS1.2£¬¾¡¿ìÉý¼¶µ½1.3°É£¬³ýÁË°²È«ÐÔ£¬»¹ÓÐÐÔÄÜÉϵÄÊÕÒæ¡£
HTTPµÄÐÔÄÜÓÅ»¯ÊÖ¶ÎÖڶ࣬´ÓÕâËĸöά¶È³ö·¢£¬¿ÉÒÔ½¨Á¢ÆðÊ÷×´µÄ֪ʶÌåϵ£¬ÄÒÀ¨¾ø´ó²¿·ÖµÄHTTPÓÅ»¯µã¡£
±àÂëЧÂÊÓÅ»¯°üÀ¨http headerºÍbody £¬Ëü¿ÉÒÔʹ´«ÊäµÄÊý¾Ý¸ü¶ÌС½ô´Õ£¬´Ó¶ø»ñµÃ¸üµÍµÄʱÑӺ͸ü¸ßµÄ²¢·¢¡£Í¬Ê±£¬ºÃµÄ±àÂëËã·¨Ò²¿ÉÒÔ¼õÉÙ±à½âÂëʱµÄCPUÏûºÄ¡£
ÐŵÀÀûÓÃÂʵÄÓÅ»¯£¬¿ÉÒԴӶ෸´ÓᢴíÎó·¢ÏÖ¼°»Ö¸´¡¢×ÊÔ´·ÖÅäÕâ3¸ö½Ç¶È³ö·¢£¬ÈÿìËٵĵײãÐŵÀ£¬ÓÐЧµÄ³ÐÔØÂýËÙµÄÓ¦ÓòãÐŵÀ¡£
´«Êä·¾¶µÄÓÅ»¯£¬°üÀ¨¸÷¼¶»º´æ¡¢ÂýÆô¶¯¡¢ÏûÏ¢´«ËÍģʽµÈ£¬ËüÄܹ»ÈÃÏûÏ¢¸ü¼°Ê±µÄ·¢¸øä¯ÀÀÆ÷£¬ÌáÉýÓû§ÌåÑé¡£
µ±Ï»¥ÁªÍøÖеÄÐÅÏ¢°²È«£¬Ö÷Òª»¹Êǽ¨Á¢ÔÚTLSÐÒéÖ®Éϵġ£TLS1.3´Ó°²È«ÐÔ¡¢ÐÔÄÜÉ϶¼ÓкܴóµÄÌáÉý£¬ÎÒÃÇÓ¦µ±¼°Ê±µÄÉý¼¶¡£
Ï£ÍûÕâЩ֪ʶÄܹ»°ïÖúÄãÈ«Ãæ¡¢¸ßЧµØÓÅ»¯HTTPÐÒ飡
ÁìȡרÊô 10ÔªÎÞÃż÷ȯ
˽Ïí×îР¼¼Êõ¸É»õ