<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 網絡基本功(二十五):Wireshark抓包實例分析TCP重復ACK與亂序 **轉載請在文首保留原文出處:EMC中文支持論壇**[https://community.emc.com/go/chinese](https://community.emc.com/go/chinese) [![image001.gif](https://community.emc.com/servlet/JiveServlet/downloadImage/2-863284-106692/image001.gif)](https://community.emc.com/servlet/JiveServlet/showImage/2-863284-106692/image001.gif) ## 介紹 TCP的一大常見問題在于重復ACK與快速重傳。這一現象的發生也是由于性能問題,本章討論如何發現這一問題以及他們意味著什么。 另一個常見問題是前一片段丟失以及亂序片段。某些情況下,這一現象喻示著故障發生,可能是由于網絡問題或是抓包中斷。 ## 更多信息 **重復ACK與快速重傳:** 當網速變慢時,重復ACK是可能的原因之一。大多數情況下,重復ACK的發生是由于高延時,延遲的變化,或無法響應ACK請求的慢速終端。 1. 當重復ACK的數量保持在合理范圍時,即1或2個百分比,則可能不是本機問題。 2. 當有大量的重復ACK時(假設有10個),則可能: * 通信鏈路繁忙引起延遲改變 * 服務器或客戶端無響應 3. 快速重傳是對重復ACK的響應報文。 4. 下圖是該問題的示例。本例中51個重復ACK之后發生了快速重傳: [![image002.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-863284-106693/670-300/image002.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-863284-106693/image002.jpg) 5. 以下是如何解決該問題: * 如果重復ACK和重傳數量較少(少于1個百分比),是可以接受的。 * 如果重復ACK發生在無線網絡環境,或是Internet之上的連接,延時或是延時的改變對于這類網絡來說很常見,所以也沒有什么可做的。 * 如果發生在組織內的網絡,則可能有問題。如果發生在LAN之上,檢查嚴重的問題,例如緩存和CPU負載,慢速服務器,等等。如果發生在WAN之上,查看延時,負載以及線路不穩定。 工作原理 當發現有丟失報文時(期望的序列號沒有收到),或者收到了預期之外的序列號。這種情況下,接收端生成一個ACK,聲明自己希望收到的下一個序列號。接收方持續生成丟失片段的ACK請求,直到實際收到。 在發送方,當它收到三個相同的ACK(初始ACK和兩個重復ACK),就會假設有報文丟失并重傳該報文,無論重傳計時器是否過期。再次發送的報文稱為快速重傳。 重復ACK也減少了發往網絡的吞吐量。減少了多少吞吐量取決于TCP版本。比較早期的TCP版本中出現了重復ACK,發送方將吞吐量減少為之前的一半。在多個DupACK的情況下,吞吐量減到最小。 下圖顯示了重復ACK和重傳的典型例子,本圖中第一次重復ACK將吞吐量降低至大約40%,之后重傳將吞吐量減至最小。 [![image003.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-863284-106694/670-434/image003.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-863284-106694/image003.jpg) **亂序報文:** 在兩端抓包,亂序情況下需要關注三種現象: * **先前片段丟失**:當前收到報文的序列號高于該連接的下一個期望序列號時,表明之前的一個或多個報文未能到達 * **亂序報文**:當前報文的序列號低于該連接先前收到的報文 * **先前片段未能捕捉**:(Wireshark 1.8.x及以上版本):同先前報文丟失。 何時發生? 用戶可能在以下情況看到亂序報文: * **連接開始時抓包**:當建立連接時抓包,這時,看到連接上的報文沒有SYN/SYN-ACK/ACK,因此,Wireshark認為連接有問題。 * **確實有報文丟失**:這時會看到丟失報文重傳和/或重復ACK告知發送方重傳丟失報文。 [![image004.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-863284-106695/670-155/image004.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-863284-106695/image004.jpg) 上圖是報文丟失的典型示例。從圖中可見,10.0.0.6嘗試瀏覽站點62.90.90.210。這一過程中, TCP片段每個1420字節發送到web服務器,334到336之間3個報文丟失,338到340之間2個報文丟失。兩者Wireshark都有提示:TCP’s previous segment is not captured. * **延時變化**:這可能是由于報文從源地址到目的地址經由不同的路由。檢查這一點可以使用Tracert,在源和目的地址之間查找路由改變。如果在公司內部網絡上是可以做到的,例如,在路由器上配置trap。 * **數據捕捉問題**:可能報文正常收發,但Wireshark沒有捕捉到。可能有以下幾種原因: * 數據量比較大時,Wireshark在高比特率的情況下可能會丟失報文(高于150-180 Mbps)。要避免這一問題,使用其他工具(大多數需要付費)。 * 臺式機不夠強大,內存或CPU無法讓Wireshark工作的足夠快。這一點很好發現。 * 當LAN交換機的端口緩存太小,報文可能被丟棄。連接到交換機(用控制臺或telnet連接)使用交換機命令行來檢查該問題。 * 無線網絡抓包,由于某種原因沒有看到所有發送報文。 總結 亂序報文的原理很簡單。TCP發送以其字節數為編號的報文到接收方。當一個報文沒有按照順序到達時,Wireshark就會注意到。原因有兩點: * **確實有問題**:這時會看到重傳和重復ACK,這是TCP對于收到亂序報文的響應。 * **抓包問題**:這時僅看到亂序報文,但沒有看到對可能丟失及亂序報文的響應,可能實際上并沒有問題。 ## 參考 Network Analysis Using Wireshark Cookbook
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看