<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國際加速解決方案。 廣告
                作為網絡管理員,很多時間必然會耗費在修復慢速服務器和其他終端。但用戶感到網絡運行緩慢并不意味著就是網絡問題。 解決網絡性能問題,首先從TCP錯誤恢復功能(TCP重傳與重復ACK)和流控功能說起。之后闡述如何發現網絡慢速之源。最后,對網絡各組成部分上的數據流進行概況分析。這幾張內容將會幫助讀者識別,診斷,以及排查慢速網絡。 更多信息 接下來的內容,較多是黑白圖片了。雖然看起來有點不爽,但還是很值得一看。 TCP錯誤恢復功能: TCP的錯誤恢復功能是定位,診斷及修復網絡延時的最佳工具。延時可以在單程也可以往返方向測量。高延時是網絡管理員的頭號大敵。本節我們討論TCP高延時是如何導致序列號和確認號亂序的。 TCP重傳: 主機報文重傳是TCP最基本的錯誤恢復功能,它的目的是防止報文丟失。 報文丟失的可能因素有很多種,包括應用故障,路由設備過載,或暫時的服務宕機。報文級別速度是很高的,而通常報文丟失是暫時的,因此TCP能夠發現和恢復報文丟失顯得尤為重要。 決定報文是否有必要重傳的主要機制是重傳計時器(retransmission timer),它的主要功能是維護重傳超時(RTO)值。當報文使用TCP傳輸時,重傳計時器啟動,收到ACK時計時器停止。報文發送至接收到ACK的時間稱為往返時間(RTT)。對若干次時間取平均值,該值用于確定最終RTO值。在最終RTO值確定之前,確定每一次報文傳輸是否有丟包發生使用重傳計時器,下圖說明了TCP重傳過程。 ![](https://box.kancloud.cn/2015-09-09_55efb0be42972.jpg) 當報文發送之后,但接收方尚未發送TCP ACK報文,發送方假設源報文丟失并將其重傳。重傳之后,RTO值加倍;如果在2倍RTO值到達之前還是沒有收到ACK報文,就再次重傳。如果仍然沒有收到ACK,那么RTO值再次加倍。如此持續下去,每次重傳RTO都翻倍,直到收到ACK報文或發送方達到配置的最大重傳次數。 最大重傳次數取決于發送操作系統的配置值。默認情況下,Windows主機默認重傳5次。大多數Linux系統默認最大15次。兩種操作系統都可配置。 示例如下圖: ![](https://box.kancloud.cn/2015-09-09_55efb0be57db9.jpg) ![](https://box.kancloud.cn/2015-09-09_55efb0be7be7b.jpg) TCP重傳過程發送的第一個報文如下圖所示(圖片不很清楚,已經盡力了): ![](https://box.kancloud.cn/2015-09-09_55efb0be9b0d4.jpg) 這是一個TCP PSH/ACK報文①,包含648字節數據②,從10.3.30.1發送至10.3.71.7。這是一個典型的數據報文。 在通常情況下,第一個報文發送之后很快會收到TCP ACK報文。然而,在這個case里,第二個是重傳報文。可以在Packet list面板里看到。Info欄清楚的標明“TCP Retransmission”,報文以黑色背景紅色字體標出。下圖是Packet List面板中的重傳示例(仍然不清楚,但可參見上圖): ![](https://box.kancloud.cn/2015-09-09_55efb0beb5168.jpg) 也可以在Packet Details和Packet Bytes面板中查看來確定是否是重傳報文,如下圖所示: ![](https://box.kancloud.cn/2015-09-09_55efb0bec9ece.jpg) 注意此報文與源報文相同(除了IP標識和checksum字段)。要驗證這一點,比較兩個報文的Packet Bytes①。 在Packet Details面板,注意到重傳報文在SEQ/ACK Analysis下面有些額外的信息②。這些信息是由Wireshark提供的而并非報文本身。SEQ/ACK Analysis告訴我們這確實是一個重傳報文,RTO值是0.206秒,此時的RTO是基于報文1的時間增量。 檢查剩下的報文會得到類似的結果,不同之處只有IP標識和checksum,以及RTO值。要使報文之間的時間間隔形象化,在Packet List面板中查看Time欄,如下圖所示。這里可以看到RTO值的翻倍增長關系。 ![](https://box.kancloud.cn/2015-09-09_55efb0bf0a2fa.jpg) TCP重復ACK以及快速重傳: 重復ACK是指在接收方收到亂序報文時,所發出的一類TCP報文。TCP使用報文頭的序列號和確認號以有效保證數據按照發送的順序接收和重組。 當TCP連接建立以后,握手過程中交換的一個最重要的信息是初始序列號(ISN)。一旦連接雙方設定了ISN之后,接下來發送的報文所包含的序列號增加一個數據載荷值。 假設有個主機ISN是5000,發送500字節報文至接收方。一旦報文接收之后,接收端回復一個ACK號為5500的TCP ACK報文,基于以下公式: **Sequence Number In + Bytes of Data Received = Acknowledgment Number Out** 按照上述計算結果,返回發送端的確認編號實際上是接收端希望收到的序列號。示例如下圖: ![](https://box.kancloud.cn/2015-09-09_55efb0bf1f789.jpg) 數據接收方通過序列號來檢查報文丟失。接收方通過追蹤接收到的序列號,能夠確認序列號是否亂序。當接收方收到一個不正常的序列號,它會假設傳輸過程中有報文丟失。為了正確重傳數據,接收方必須擁有丟失報文,所以它發送包含有丟失報文正確序列號的ACK報文,以便發送方重傳此報文。 當重傳主機從發送端接收到3個重復ACK時,它會假設此報文確實在傳送中丟失,并且立即發送一個快速重傳。一旦觸發了快速重傳,所有正在傳輸的其他報文都被放入隊列中,直到快速重傳報文發送為止。過程如下圖所示: ![](https://box.kancloud.cn/2015-09-09_55efb0bf3365a.jpg) 承接上文的彩圖: ![](https://box.kancloud.cn/2015-09-09_55efb0c459d83.jpg) 本例中第一個報文如下圖: ![](https://box.kancloud.cn/2015-09-09_55efb0c97d816.jpg) 這是一個TCP ACK報文,從數據接收端(172.31.136.85)發給發送端(195.81.202.68)①,確認前一個報文所發送的數據。 此報文中的確認編號是1310973186②,應當是下一個接收報文的序列號,如下圖所示: ![](https://box.kancloud.cn/2015-09-09_55efb0c9ab466.jpg) 不幸的是接收端的序列號是1310984130①,并不是所期望的值。這意味著報文在傳送中丟失。接收端注意到報文亂序,并且在第三個報文中發送重復ACK,如下圖所示: ![](https://box.kancloud.cn/2015-09-09_55efb0c9c5940.jpg) 可以通過以下兩種方式之一來確認這是一個重復ACK: 在Packet Detaisl面板中的Info欄。報文呈現黑色背景紅色字體。 SEQ/ACK Analysis下的Packet Deatails面板。擴展這一欄會發現報文顯示為duplicate ACK。接下來幾個報文重復此過程。如下圖所示: ![](https://box.kancloud.cn/2015-09-09_55efb0ca5e6fe.jpg) 此文件中的第四個報文是發送端所發出具有錯誤序列號①的另一個數據塊。因此,接收端發送第二個重復ACK②。接收端又收到一個亂序報文③。從而觸發了第三以及最后一個重復ACK④. 一旦發送方接收到接收方所發來的第三個重復ACK,它就會暫停所有傳輸報文并且重傳丟失報文,下圖顯示了快速重傳過程: ![](https://box.kancloud.cn/2015-09-09_55efb0ca731fd.jpg) 重傳報文同樣可以通過Packet List面板的Info欄觀察到。報文呈現黑色背景紅色字體。這個報文的SEQ/ACK Analysis截面告訴我們這可能是一個快速重傳幀。(標識報文為快速重傳的信息不是報文本身所包含的內容,而是Wireshark的功能)。最后一個報文是接收到快速重傳的ACK。
                  <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>

                              哎呀哎呀视频在线观看