±³¾°
×î½ü·¢ÏÖÎÒÃDzúÆ·ÔÚ´ò¿ª¹ã¸æÁ´½Ó(Webview)ʱÓÐÒ»¶¨¸ÅÂÊ»á·Ç³£Âý£¬°×ÆÁʱ¼ä³¬¹ý 10s£¬×·²é¹ã¸æµÄ¹ý³ÌÖÐÓöµ½²»ÉÙÓÐÒâ˼µÄÊÂÇ飬¸Ð¾õÆÄÓÐÊÕ»ñ¡£ÔÚÕâÀï·ÖÏíһϣ¬Ö÷ÒªÏëÁÄÒ»ÁÄ×·²é
bug ʱµÄÄÇЩ·½·¨ÂÛ£¬µ±È»Ò²²»ÄÜÌ«Ð飬»¹ÊÇÒª´øÒ»µã¸É»õ£¬±ÈÈç WireShark µÄʹÓá£
Bug ¸´ÏÖ
Óöµ½ bug ºóµÄµÚÒ»¼þʵ±È»ÊǸ´ÏÖ¡£¾¹ýÒ»·¬²âÊÔÎÒ·¢ÏÖ bug ¼¸ºõÖ»»áÖ÷Òª³öÏÖÔÚ iPhone6
ÕâÖÖÀϾɻúÐÍÉÏ£¬¶ø±ÊÕßµÄ 7Plus Ôò»ù±¾Ã»ÓÐÎÊÌâ¡£4G ºÍ Wifi ϶¼ÓÐÒ»¶¨¸ÅÂʳöÏÖ£¬Wifi
ËÆºõ¸ü¼ÓƵ·±¡£
ÆäʵÓеã¾ÑéµÄ¿ª·¢Õß¿´µ½ÕâÀïÐÄÀïÓ¦¸ÃÓеãÆ×ÁË£¬ÕâÓ¦¸Ã²»Êǿͻ§¶ËµÄ bug£¬¸ü¿ÉÄÜÊÇÓÉÓÚ¹ã¸æÖ÷ÍøÒ³ÖÊÁ¿Ì«µÍ»òÕßÍøÂç»·¾³²»Îȶ¨µ¼Ö¡£µ«×÷Ϊһ¸ö¿¿Æ×µÄ³ÌÐòÔ±£¬ÔõôÄܰÑÕâÖÖºÁÎÞ¸ù¾ÝµÄ²Â²âÏòÉϼ¶»ã±¨ÄØ£¿
¹Ø×¢µã·ÖÀë
ÎÒÃÇÖªµÀ¼ÓÔØÍøÒ³¿ÉÒÔÓÉÁ½²¿·Öʱ¼ä×é³É£¬Ò»¸öÊDZ¾µØµÄ´¦Àíʱ¼ä£¬ÁíÒ»¸öÊÇÍøÂç¼ÓÔØµÄʱ¼ä¡£Á½ÕߵķÖË®ÁëÓ¦¸ÃÔÚ
UIWebview µÄ shouldStartLoadWithRequest ·½·¨ÉÏ¡£Õâ¸ö·½·¨µ÷ÓÃ֮ǰÊDZ¾µØ´¦ÀíºÄʱ£¬µ÷ÓÃÖ®ºóÊÇÍøÂç¼ÓÔØµÄÇëÇó¡£ËùÒÔÎÒÃÇ¿ÉÒÔ°ÑÊÂÇé·Ö³ÉÁ½²¿·ÖÀ´¿´:
´Ó cell ½ÓÊܵã»÷ʼþµÄ didSelectedRowAtIndexPath Æðµ½ UIWebview
µÄ shouldStartLoadWithRequest Ϊֹ¡£
´Ó shouldStartLoadWithRequest Æðµ½ UIWebview µÄ webViewDidFinishLoad
Ϊֹ¡£
ÓÉÓÚ Bug ÊÇżÏÖ£¬ËùÒÔ²»¿ÉÄܳ¤Ê±¼äÓà Xcode µ÷ÊÔ£¬ËùÒÔ»¹Òª×¢Òâдһ¸ö¼òµ¥µÄ¹¤¾ß£¬½«Ã¿´ÎµÄ Log
ÈÕÖ¾³Ö¾Ã»¯´æÏÂÀ´£¬±£Áôÿһ²½µÄº¯Êýµ÷ÓᢺÄʱ¡¢¾ßÌå²ÎÊýµÈ¡£ÕâÑùÒ»µ©¸´ÏÖ³öÀ´£¬¿ÉÒÔÁ¬ÉϵçÄÔ¶ÁÈ¡ÊÖ»úÖеÄÈÕÖ¾¡£
±¾µØ´¦Àí
±¾µØ´¦ÀíµÄºÄʱÏà¶Ô½Ï¶Ì£¬µ«Âß¼Ò»µã¶¼²»¼òµ¥¡£ÔÚÎÒ¸öÈË¿´À´£¬´Óչʾ UITableview µ½´¦Àíµã»÷ʼþµÄÁ÷³Ì£¬×ãÒÔ·´Ó³³öÒ»¸öÍŶӵļ¼ÊõʵÁ¦¡£ºÁ²»¿äÕŵÄ˵£¬ÄܰÑÕâ¸öСҵÎñ×öµ½ÍêÃÀµÄÍŶÓÁÈÁÈÎÞ¼¸£¬ÆäÖбØÈ»Éæ¼°µ½
MVC/MVVM µÈ¼Ü¹¹µÄÑ¡ÐÍÉè¼ÆÓë¾ßÌåʵÏÖ¡¢ÍøÂç²ãÓë³Ö¾Ã»¯²ãµÄ·â×°¡¢ÏîĿģ¿é»¯µÄ²ð·ÖµÈºËÐÄ֪ʶµã¡£Îһᾡ¿ì³é¿ÕרÃÅһЩƪÎÄÕÂÀ´ÁÄÁÄÕâЩ£¬ÕâÀï¾Í²»ÔÙ׸Êö¡£
»¨ÁËÒ»·¬¹¦·òÕûÀíºÃÒµÎñÁ÷³Ì¡¢×öºÃͳ¼ÆÒÔºó»¹ÕæÓÐһЩÊÕ»ñ¡£¿Í»§¶ËµÄÂß¼ÊÇ pushViewController
¶¯»Ö´ÐÐÍêºó²Å·¢ËÍÇëÇ󣬰װ×ÀË·ÑÁË´óÔ¼ 0.5s µÄ¶¯»Ê±¼ä£¬ÕâЩʱ¼äÔ±¾¿ÉÒÔÓÃÀ´¼ÓÔØÍøÒ³¡£
ÍøÂçÇëÇó
½èÖúÈÕÖ¾ÎÒ»¹·¢ÏÖ£¬±¾µØ´¦ÀíËäÈ»ÀË·ÑÁËʱ¼ä£¬µ«Õâ¸öʱ¼äÏà¶ÔÎȶ¨£¬´óÔ¼ÔÚ 1s ×óÓÒ¡£¸ü´óµÄºÄʱÀ´×ÔÓÚÍøÂçÇëÇ󲿷֡£Ò»°ãÇé¿öÏ£¬´ò¿ªÍøÒ³»áÓжÌÔÝµÄ°×ÆÁʱ¼ä£¬Õâ¶Îʱ¼äÄÚϵͳ»á¼ÓÔØ
HTML µÈ×ÊÔ´²¢½øÐÐäÖȾ£¬Í¬Ê±½çÃæÉÏÓоջ¨ÔÚת¶¯¡£
°×ÆÁʲôʱºòÏûʧȡ¾öÓÚϵͳʲôʱºò¼ÓÔØÍêÍøÒ³£¬ÎÒÃÇÎÞ·¨¿ØÖÆ¡£µ«¾Õ»¨ÏûʧµÄʱ¼äÊÇÒÑÖªµÄ£¬ÎÒÃǵÄÂß¼ÊÇдÔÚ
webViewDidFinishLoad ÖС£Õâô×ö²»Ò»¶¨×¼È·£¬ÒòÎªÍøÒ³ÖØ¶¨ÏòʱҲ»áµ÷Óà webViewDidFinishLoad
·½·¨µ¼Ö¿ͻ§¶ËÎóÒÔΪÒѾ¼ÓÔØÍê³É¡£¸ü¼Ó׼ȷµÄ×ö·¨¿ÉÒԲο¼: ÈçºÎ׼ȷÅÐ¶Ï WebView ¼ÓÔØÍê³É£¬µ±È»ÕâÒ²Ò²½ö½öÊǸü׼ȷһЩ£¬¾Í
UIWebview ¶øÑÔ£¬Ïë׼ȷµÄÅжÏÍøÂçÊÇ·ñ¼ÓÔØÍê³É¼¸ºõÊDz»¿ÉÄܵÄ(¸Ðл @JackAlan µÄʵ¼ù)¡£
ËùÒÔËµÍøÂç¼ÓÔØ»¹¿ÉÒÔϸ·ÖΪÁ½²¿·Ö£¬Ò»¸öÊÇ´¿°×ÆÁʱ¼ä£¬ÁíÒ»²¿·ÖÔòÊdzöÏÖÁËÍøÒ³µ«»¹ÔÚת¶¯¾Õ»¨µÄʱ¼ä¡£ÕâÊÇÒòΪһ¸ö
Frame(¿ÉÒÔÊÇ HTML Ò²¿ÉÒÔÊÇ iFrame) È«²¿¼ÓÔØÍê³É(°üÀ¨ CSS/JS µÈ)ºó²Å»áµ÷ÓÃ
webViewDidFinishLoad ·½·¨£¬ËùÒÔ´æÔÚÍøÒ³ÒѾäÖȾµ«»¹ÔÚÖ´ÐÐ JS ÇëÇóµÄÇé¿ö£¬·´Ó³ÔÚÓû§¶Ë£¬¾ÍÊÇÄÜ¿´µ½ÍøÒ³µ«¾Õ»¨»¹ÔÚת¶¯¡£ÕâÖÖÇé¿öÈç¹û³ÖÐøÊ±¼ä¹ý¾Ã»áµ¼ÖÂÓû§²»ÄÍ·³£¬µ«Ïà±ÈÓÚ´¿´âµÄ°×ÆÁʱ¼äÀ´Ëµ¸üÄܱ»½ÓÊÜһЩ¡£
ͬʱÎÒÃÇÒ²¿ÉÒÔÈ·¶¨£¬Èç¹ûÍøÒ³ÒѾ¼ÓÔØ£¬µ« JS ÇëÇó»¹ÔÚ¼ÌÐø£¬Õâ¾ÍÊÇ¹ã¸æÖ÷µÄÍøÒ³ÖÊÁ¿Ì«²îµ¼Öµġ£ËðʧӦ¸ÃÓÉËûÃdzе££¬ÎÒÃÇÎÞÄÜΪÁ¦¡£¶ø³¤Ê±¼äµÄ°×ÆÁÔòÊÇÎÒÃÇÓ¦¸ÃÖØµã¿¼ÂǵÄÎÊÌâ¡£
С½á
Æäʵ·ÖÎöµ½ÕâÀïÒѾ¿ÉÒÔÏòÁìµ¼»ã±¨ÁË¡£ÍøÂç¼ÓÔØµÄºÄʱһ¹²ÊÇÈý¶Î£¬µÚÒ»¶ÎÊDZ¾µØ´¦Àíʱ¼ä£¬´æÔÚÐÔÄÜÀ˷ѵ«Ê±¼ä±È½ÏÎȶ¨£¬µÚ¶þ¶ÎÊÇÍøÒ³°×ÆÁʱ¼ä£¬Õâ¶Îʱ¼äÄÚϵͳµÄ
UIWebView ÔÚÇëÇó×ÊÔ´²¢äÖȾ£¬µÚÈý¶ÎÊǼÓÔØÍøÒ³ºóµÄ¾Õ»¨×ª¶¯Ê±¼ä£¬Ò»°ãºÄʱ½ÏÉÙ£¬ÎÒÃÇÒ²ÎÞ·¨¿ØÖÆ¡£
ÎÒÃÇ»¹ÖªµÀ UIWebView ÌṩµÄ API ºÜÉÙ£¬´Ó¿ªÊ¼ÇëÇóµ½ÍøÒ³¼ÓÔØ½áÊøÍêÈ«ÊǺںÐģʽ£¬¼¸ºõÎÞ´ÓÏÂÊÖ¡£µ«×÷ΪһÃûÓÐ×·Çó£¬ÓÐÀíÏ룬Óб§¸º£¬Óм¼ÊõµÄËÄÓгÌÐòÔ±£¬ÔõôÄÜÇáÑÔ·ÅÆúÄØ£¿
WireShark
¿Í»§¶ËÔÚµ÷ÊÔÍøÂçʱ×î³£ÓõŤ¾ßÒªÊý Charles£¬µ«ËüÖ»Äܵ÷ÊÔ HTTP/HTTPS ÇëÇó£¬¶Ô TCP
²ã¾ÍÎÞÄÜΪÁ¦ÁË¡£ÒªÏëÁ˽â HTTP ÇëÇó¹ý³ÌÖеÄϸ½Ú£¬ÎÒÃDZØÐëҪʹÓÃÍþÁ¦¸ü´ó(¿Ï¶¨Ò²¸ü¸´ÔÓ)µÄÎäÆ÷£¬Ò²¾ÍÊDZ¾ÎĵÄÖ÷½Ç
WireShark¡£
Ò»°ãÀ´ËµÔ½Å£X µÄ¹¤¾ß³¤µÃ¾ÍÔ½³ó£¬WireShark Ò²ºÁ²»ÀýÍâµÄÓÐ×ÅÒ»¸±ÈÃÈËã±ƵÄÍâ±í¡£

²»¹ý²»ÓÃÌ«¼±£¬ÎÒÃÇÒªÓõ½µÄ¶«Î÷²»¶à£¬¶¥²¿ºì¿òÀïµÄÀ¶É«öèÓã±êÖ¾±íʾ¿ªÊ¼¼àÌýÍøÂçÊý¾Ý£¬ºìÉ«°´Å¥Ò»¿´Ò²Äܲ³öÀ´ÊÇÍ£Ö¹Â¼ÖÆ¡£Óë
Charles Ö»¼àÌý HTTP ÇëÇó²»Í¬µÄÊÇ£¬WireShark ¿ÉÒÔµ÷ÊÔµ½ IP ²ãÉõÖÁ¸üϸ½Ú£¬ËùÒÔËüµÄÊý¾Ý°üÒ²¸ü¶à£¬¼¸ÃëÖÓµÄʱ¼ä¾Í»á±»ÉÏǧ¸öÇëÇóÑÍû£¬ËùÒÔÎÒ½¨ÒéÓû§ÂÔ΢¿ØÖÆÒ»Ï¼àÌýµÄʱ³¤£¬»òÕßÎÒÃÇ¿ÉÒÔÔÚµÚ¶þ¸öºì¿òÖÐÊäÈë¹ýÂËÌõ¼þÀ´¼õÉÙ¸ÉÈÅ£¬Õâ¸öÏÂÎÄ»áÏêϸ½éÉÜ¡£
WireShark ¿ÉÒÔ¼àÌý±¾»úµÄÍø¿¨£¬Ò²¿ÉÒÔ¼àÌýÊÖ»úµÄÍøÂ硣ʹÓà WireShark µ÷ÊÔÕæ»úʱ²»ÓÃÁ¬½Ó´úÀí£¬Ö»ÐèҪͨ¹ý
USB Á¬½Óµ½µçÄÔ¾ÍÐУ¬·ñÔò¾ÍÎÞ·¨µ÷ÊÔ 4G ÍøÂçÁË¡£ÎÒÃÇ¿ÉÒÔÓà rvictl -s É豸 UDID ÃüÁîÀ´´´½¨Ò»¸öÐéÄâµÄÍø¿¨:
rvictl -s 902a6a449af014086dxxxxxx346490aaa0a8739 |
µ±È»£¬¿´ÊÖ»ú UDID »¹ÊÇͦÂé·³µÄ£¬×÷Ϊһ¸öÀÁÈË£¬ÔõôÄܲ»ÓÃÃüÁîÐÐÀ´Íê³ÉÄØ£¿
instruments -s | awk '{print $NR}' | sed -n 3p |
awk '{print substr($0,2,length($0)-2)}' | xargs
rvictl -s |
ÕâÑùÖ»ÒªÁ¬ÉÏÊÖ»ú£¬¾Í¿ÉÒÔÖ±½Ó»ñÈ¡µ½ UDID ÁË¡£

ÔËÐÐÃüÁîºó»á¿´µ½³É¹¦´´½¨ rvi0 ÐéÄâÍø¿¨µÄÌáʾ£¬Ë«»÷ rvi0 ÄÇÒ»Ðм´¿É¡£

×¥°ü½çÃæ
ÎÒÃÇÖ÷Òª¹Ø×¢Á½¸öÄÚÈÝ£¬ÉÏÃæµÄ´óºì¿òÀïÃæÊÇÊý¾ÝÁ÷£¬°üº¬ÁË TCP¡¢DNS¡¢ICMP¡¢HTTP µÈÐÒ飬ÑÕÉ«»¨»¨ÂÌÂÌ£¬Ñ¤Àö¶à²Ê¡£Ò»°ãÀ´ËµºÚÉ«µÄÄÚÈݱíʾÓöµ½´íÎó£¬ÐèÒªÖØµã¹Ø×¢£¬ÆäËûÄÚÈÝÔò¸¨ÖúÀí½â¡£·´¸´µ÷ÊÔ¼¸´ÎÒÔºóÒ²¾ÍÄÜ»ù±¾¼Çס¸÷ÖÖÑÕÉ«¶ÔÓ¦µÄº¬ÒåÁË¡£
ÏÂÃæµÄСºì¿òÀïÃæÖ÷ÒªÊÇijһ¸ö°üµÄÊý¾ÝÏê½â£¬»á¸ù¾Ý²»Í¬µÄÐÒé²ãÀ´»®·Ö£¬±ÈÈçÎÒÑ¡ÖÐµÄ 99 ºÅ°üʱһ¸ö TCP
°ü£¬¿ÉÒÔºÜÇå³þµÄ¿´µ½ËüµÄ IP Í·²¿¡¢TCP Í·²¿ºÍ TCP Payload¡£ÕâЩÊý¾Ý±ØÒªÊ±¿ÉÒÔ×ö¸üÏêϸµÄ·ÖÎö£¬µ«Ò»°ãÒ²²»ÓùØ×¢¡£

Ò»°ãÀ´ËµÒ»´ÎÇëÇóµÄÊý¾Ý°ü»á·Ç³£´ó£¬¿ÉÄÜ»áÓÐÉÏǧ¸ö£¬ÈçºÎÕÒµ½×Ô¼º¸ÐÐËȤµÄÇëÇóÄØ£¬ÎÒÃÇ¿ÉÒÔʹÓÃ֮ǰÌáµ½µÄ¹ýÂ˹¦ÄÜ¡£WireShark
µÄ¹ýÂËʹÓÃÁËÒ»Ì××Ô¼º¶¨ÒåµÄÓï·¨£¬²»ÊìϤµÄ»°ÐèÒªÉÏÍø²éÒ»²é»òÕß½èÖú×Ô¶¯²¹È«¹¦ÄÜÀ´¡°ÍûÎÄÉúÒ塱¡£
ÓÉÓÚÊÇÒª²é¿´ HTTP ÇëÇóµÄ¾ßÌåϸ½Ú£¬ÎÒÃÇÏȵÃÕÒµ½ÇëÇóµÄÍøÖ·£¬È»ºóÀûÓà ping ÃüÁîµÃµ½Ëü¶ÔÓ¦µÄ
IP µØÖ·¡£ÕâÖÖ×ö·¨Ò»°ãûÎÊÌ⣬µ«Ò²²»ÅųýÓеÄÓòÃû»á×öһЩÓÅ»¯£¬±ÈÈ粻ͬµÄ IP ÇëÇó DNS ½âÎöʱ·µ»Ø²»Í¬µÄ
IP µØÖ·À´±£Ö¤×î¼ÑËÙ¶È¡£Ò²¾ÍÊÇ˵ÊÖ»úÉÏ DNS ½âÎöµÄ½á¹û²¢²»×ÜÊǺ͵çÄÔÉϵĽâÎö½á¹ûÒ»Ö¡£ÕâÖÖÇé¿öÏÂÎÒÃÇ¿ÉÒÔͨ¹ý²é¿´
DNS Êý¾Ý°üÀ´È·¶¨¡£

±ÈÈç´ÓͼÖпÉÒÔ¿´µ½ res.wx.qq.com Õâ¸öÓòÃû½âÎö³öÁËÒ»´ó¶Ñ IP µØÖ·£¬¶øÕæÕýʹÓõĽöÓÐǰÁ½¸ö¡£
½âÎö³öµØÖ·ºó£¬ÎÒÃǾͿÉÒÔ×ö¼òµ¥µÄ¹ýÂËÁË£¬ÊäÈëip.addr == 220.194.203.68:

ÕâÑù¾ÍÖ»ÏÔʾºÍ 220.194.203.68 Ö÷»úÖ®¼äµÄͨÐÅÁË¡£×¢Òâºì¿òÖÐµÄ SourcePort£¬ÕâÊǿͻ§¶Ë¶Ë¿Ú¡£ÎÒÃÇÖªµÀ
HTTP Ö§³Ö²¢·¢ÇëÇ󣬲»Í¬µÄ²¢·¢ÇëÇó¿Ï¶¨ÊÇÕ¼Óò»Í¬µÄ¶Ë¿Ú¡£ËùÒÔÔÚͼÖп´µ½µÄÉÏÏÂÁ½¸öÊý¾Ý°ü£¬²¢·ÇÒ»¶¨ÊÇÇëÇóÓëÏìÓ¦µÄ¹ØÏµ£¬ËûÃÇ¿ÉÄÜÊôÓÚÁ½¸ö²»Í¬µÄ¶Ë¿Ú£¬±Ë´ËÖ®¼äºÁÎÞ¹ØÏµ£¬Ö»ÊÇÇ¡ºÃÔÚʱ¼äÉÏ×î½Ó½ü¶øÒÑ¡£
Èç¹ûÖ»ÏëÏÔʾij¸ö¶Ë¿ÚµÄÊý¾Ý£¬¿ÉÒÔʹÓÃ:ip.addr == 220.194.203.68 and tcp.dstport
== 58854¡£
Èç¹ûÖ»Ïë¿´ HTTP ÐÒéµÄ GET ÇëÇóÓëÏìÓ¦£¬¿ÉÒÔʹÓà ip.addr == 220.194.203.68
and (http.request.method == "GET" || http.response.code
== 200) À´¹ýÂË¡£
Èç¹ûÏë¿´¶ª°ü·½ÃæµÄÊý¾Ý£¬¿ÉÒÔÓà ip.addr == 220.194.203.68 and (tcp.analysis.fast_retransmission
|| tcp.analysis.retransmission)
ÒÔÉÏÊDZÊÕßÔÚµ÷ÊÔ¹ý³ÌÖÐÓõ½±È½Ï¶àµÄÃüÁ½ö¹©²Î¿¼¡£ÓÐÐËȤµÄ¶ÁÕß¿ÉÒÔ×ÔÐÐ×¥°üʵÑ飬¾Í²»°¤¸öÌùͼÁË¡£
Case1: DNS½âÎö
¾¹ý¶à´Î×¥°üºóÎÒ¿ªÊ¼·ÖÎöÄÇЩ³¤Ê±¼ä°×ÆÁµÄÍøÒ³¶ÔÓ¦µÄÊý¾Ý°ü£¬¹ûÈ»·¢ÏÖ²»ÉÙÎÊÌ⣬±ÈÈçÕâÀï:

¿ÉÒÔºÜÃ÷ÏԵĿ´µ½ÔÚÒ»´ó´®ºÚÉ«´íÎóÐÅÏ¢£¬µ«Èç¹ûÄãÈ¥µ÷ÊÔÕâЩÊý¾Ý°ü£¬ÄÇô¾Íµô½øÏÝÚåÁË¡£DNS ÊÇ»ùÓÚ UDP
µÄÐÒ飬²»»áÓÐ TCP ÖØ´«£¬ËùÒÔÕâЩºÚÉ«µÄÊý¾Ý°ü±Ø¶¨ÊÇ֮ǰµÄ¶ª°üÖØ´«£¬²»ÓùØÐÄ¡£Èç¹ûÖ»¿´À¶É«µÄ DNS
ÇëÇ󣬾ͻᷢÏÖÁ¬Ðø·¢ËÍÁ˼¸¸öÇëÇ󵫶¼Ã»ÓÐÏìÓ¦£¬Ö±µ½µÚ 12s ²ÅµÃµ½½âÎöºóµÄIP µØÖ·¡£
´Ó DNS ÇëÇóµÄ½ÓÊÕ·½µÄµØÖ·ÒÔ 172.24 ¿ªÍ·¿ÉÒÔ¿´³ö£¬ÕâÊÇÄÚÍø DNS ·þÎñÆ÷£¬²»ÖªµÀΪʲô¿¨Á˺ܾá£
Case2: ÎÕÊÖÏìÓ¦ÑÓ³Ù
ÏÂͼÊÇÒ»´ÎµäÐ굀 TCP ÎÕÊÖʱµÄ³¡¾°¡£Í¬Ê±Ò²¿ÉÒÔ¿´µ½µÚÒ»ÕÅͼÖÐµÄ SYN ÎÕÊÖ°ü·¢³öºó£¬¹ýÁËÒ»ÃëÖӲŽÓÊܵ½
ACK¡£µ±È»ÁË£¬ÔÒòÒ²²»Çå³þ£¬Ö»ÄܽâÊÍÎªÍøÂç¶¶¶¯¡£

ËæºóÎÒÓÖÔÚ 4G ÍøÂçÏÂ×¥ÁËÒ»´Î°ü:

Õâ´ÎÊÂÇé¾Í¸üÀëÆ×ÁË£¬µÚ¶þÃë·¢³öµÄ SYN ÎÕÊÖ°ü·´¸´¶ªÊ§(Ò²ÓпÉÄÜÊÇ·þÎñ¶ËûÓÐÏìÓ¦¡¢»òÕßÊÇ ACK ¶ªÊ§)£¬×ÜÖ®¿Í»§¶Ë²»¶ÏÖØ´«
SYN °ü¡£
¸üÓÐÒâ˼µÄÊÇ£¬¹Û²ì TSval£¬Ëü±íʾ°ü·¢³öʱµÄʱ¼ä´Á¡£ÎÒÃǹ۲ìÕ⼸¸öÖµ»á·¢ÏÖ£¬Ç°¼¸´ÎµÄ¼ä¸ôʱ¼äÊÇ 1s£¬ºóÀ´±ä³ÉÁË
2s£¬4s ºÍ 8s¡£Õâ²»½ûÈÃÎÒÏëÆðÁË RTO µÄ¸ÅÄî¡£
ÎÒÃÇÖªµÀ RTT ±íʾµÄÊÇÍøÂçÇëÇó´Ó·¢Æðµ½½ÓÊÕÏìÓ¦µÄʱ¼ä£¬ËüÊÇÒ»¸öËæ×ÅÍøÂç»·¾³¶ø¶¯Ì¬¸Ä±äµÄÖµ¡£TCP
Óд°¿ÚµÄ¸ÅÄ¶ÔÓÚ´°¿ÚµÄµÚÒ»¸öÊý¾Ý°ü£¬Èç¹ûËüÎÞ·¨·¢ËÍ£¬´°¿Ú¾Í²»ÄÜÏòºó»¬¶¯¡£¿Í»§¶ËÒÔ½ÓÊÕµ½ ACK ×÷ΪÊý¾Ý°ü³É¹¦·¢Ë͵ıêÖ¾£¬ÄÇôÈç¹û
ACK ÊÕ²»µ½ÄØ£¿¿Í»§¶Ëµ±È»²»»áÒ»Ö±µÈÏÂÈ¥£¬Ëü»áÉèÖÃÒ»¸ö³¬Ê±Ê±¼ä£¬Ò»µ©³¬¹ýÕâ¸öʱ¼ä¾ÍÈÏΪÊý¾Ý°ü¶ªÊ§£¬´Ó¶øÖØ´«¡£
Õâ¸ö³¬Ê±Ê±¼ä¾Í±»³ÆÎª RTO£¬ÏÔÈ»Ëü±ØÐëÂÔ´óÓÚ RTT£¬·ñÔò¾Í»áÎó±¨Êý¾Ý°ü¶ªÊ§¡£µ«Ò²²»Äܹý´ó£¬·ñÔò»áÀË·Ñʱ¼ä¡£Òò´ËºÏÀíµÄ
RTO ±ØÐë¸úËæ RTT ¶¯Ì¬µ÷Õû£¬Ê¼ÖÕ±£Ö¤´óÓÚ RTT µ«Ò²²»ÖÁÓÚÌ«´ó¡£¹Û²ìÉÏÃæµÄ½ØÍ¼¿ÉÒÔ·¢ÏÖ£¬Ä³Ð©Çé¿öÏÂ
RTT »á·Ç³£Ð¡£¬Ð¡µ½Ö»Óм¸ºÁÃë¡£Èç¹û RTO Ò²ÉèÖÃΪ¼¸ºÁÃë¾Í»áÏԵò»Ì«ºÏÀí£¬Õâ»á¼Ó´ó¿Í»§¶ËºÍÑØÍ¾¸÷·ÓÉÆ÷µÄѹÁ¦¡£Òò´Ë
RTO »¹»áÉèÖÃÏÂÏÞ£¬²»Í¬µÄ²Ù×÷ϵͳ¿ÉÄÜÓв»Í¬µÄʵÏÖ£¬±ÈÈç Linux ÉÏÊÇ 200ms¡£Í¬Ê±£¬RTO
Ò²»áÉèÖÃÉÏÏÞ£¬¾ßÌåµÄËã·¨¿ÉÒԲο¼ÕâÆªÎÄÕ ºÍÕâÆªÎÄÕ¡£
ÐèҪעÒâµÄÊÇ£¬RTO Ëæ×Å RTT ¶¯Ì¬±ä»¯£¬µ«Èç¹û´ïµ½ÁË RTO µ¼ÖÂÁ˳¬Ê±ÖØ´«£¬ÒÔºóµÄ RTO ¾Í²»ÔÙËæ×Å
RTT ±ä»¯ÁË(´ËʱµÄ RTT ÎÞ·¨¼ÆËã)£¬»áÖ¸ÊýÔö³¤¡£Ò²¾ÍÊÇÉÏÃæ½ØÍ¼Öеļä¸ôʱ¼ä´Ó 2s ±ä³É 4s
ÔÙ±ä³É 8s µÄÔÒò¡£
ͬÑùµÄ£¬ÎÒÃÇ·¢ÏÖÁËÎÕÊÖ»¨·ÑÁË 20s ÕâÒ»ÏÖÏ󣬵«ÎÞ·¨¸ø³ö׼ȷÔÒò£¬Ö»ÄܽâÊÍÎªÍøÂç¶¶¶¯¡£
×ܽá
ͨ¹ý TCP ²ãÃæµÄ×¥°ü£¬ÎÒÃDz»½ö½öѧϰÁË WireShark µÄʹÓã¬Ò²¸´Ï°ÁË TCP ÐÒéµÄÏà¹ØÖªÊ¶£¬¶ÔÎÊÌâµÄ·ÖÎöÒ²¸ü¼ÓÉîÈë¡£´Ó×î³õµÄÍøÂçÎÊÌ⿪ʼϸ»¯ÍÚ¾ò£¬µÃ³öÁË°×ÆÁʱ¼ä¹ý³¤¡¢ÍøÒ³¼ÓÔØÌ«ÂýµÄ½áÂÛ£¬×îÖÕÓÖ¾ßÌåµÄ¼ÆËã³öÁËÓжàÉÙ¸ö
HTTP ÇëÇó£¬DNS ½âÎö¡¢TCP ÎÕÊÖ¡¢TCP Êý¾Ý´«ÊäµÈ¸÷¸ö½×¶ÎµÄºÄʱ¡£ÓÉ´Ë¿´À´£¬ÍøÒ³¼ÓÔØÂýµÄ×ï¿ý»öÊײ¢·Ç¹ã¸æÖ÷ÍøÒ³µÄÖÊÁ¿ÎÊÌ⣬¶øÊÇÍøÂçµÄ²»Îȶ¨ÎÊÌâ¡£ËäÈ»×îÖÕҲûÓеõ½ÓÐЧµÄ½â¾ö·½°¸£¬µ«ÖÁÉÙÃ÷È·ÁËÎÊÌâµÄ·¢ÉúÔÒò£¬¸ø³öÁËÁîÈËÐÅ·þµÄ½âÊÍ¡£
|