99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

(四):網(wǎng)絡(luò)性能排查之TCP重傳與重復(fù)ACK

2018-02-24 15:48 更新

作為網(wǎng)絡(luò)管理員,很多時(shí)間必然會(huì)耗費(fèi)在修復(fù)慢速服務(wù)器和其他終端。但用戶感到網(wǎng)絡(luò)運(yùn)行緩慢并不意味著就是網(wǎng)絡(luò)問題。

解決網(wǎng)絡(luò)性能問題,首先從TCP錯(cuò)誤恢復(fù)功能(TCP重傳與重復(fù)ACK)和流控功能說起。之后闡述如何發(fā)現(xiàn)網(wǎng)絡(luò)慢速之源。最后,對(duì)網(wǎng)絡(luò)各組成部分上的數(shù)據(jù)流進(jìn)行概況分析。這幾張內(nèi)容將會(huì)幫助讀者識(shí)別,診斷,以及排查慢速網(wǎng)絡(luò)。

更多信息
接下來的內(nèi)容,較多是黑白圖片了。雖然看起來有點(diǎn)不爽,但還是很值得一看。

TCP錯(cuò)誤恢復(fù)功能:

TCP的錯(cuò)誤恢復(fù)功能是定位,診斷及修復(fù)網(wǎng)絡(luò)延時(shí)的最佳工具。延時(shí)可以在單程也可以往返方向測(cè)量。高延時(shí)是網(wǎng)絡(luò)管理員的頭號(hào)大敵。本節(jié)我們討論TCP高延時(shí)是如何導(dǎo)致序列號(hào)和確認(rèn)號(hào)亂序的。

TCP重傳:

主機(jī)報(bào)文重傳是TCP最基本的錯(cuò)誤恢復(fù)功能,它的目的是防止報(bào)文丟失。

報(bào)文丟失的可能因素有很多種,包括應(yīng)用故障,路由設(shè)備過載,或暫時(shí)的服務(wù)宕機(jī)。報(bào)文級(jí)別速度是很高的,而通常報(bào)文丟失是暫時(shí)的,因此TCP能夠發(fā)現(xiàn)和恢復(fù)報(bào)文丟失顯得尤為重要。

決定報(bào)文是否有必要重傳的主要機(jī)制是重傳計(jì)時(shí)器(retransmission timer),它的主要功能是維護(hù)重傳超時(shí)(RTO)值。當(dāng)報(bào)文使用TCP傳輸時(shí),重傳計(jì)時(shí)器啟動(dòng),收到ACK時(shí)計(jì)時(shí)器停止。報(bào)文發(fā)送至接收到ACK的時(shí)間稱為往返時(shí)間(RTT)。對(duì)若干次時(shí)間取平均值,該值用于確定最終RTO值。在最終RTO值確定之前,確定每一次報(bào)文傳輸是否有丟包發(fā)生使用重傳計(jì)時(shí)器,下圖說明了TCP重傳過程。

當(dāng)報(bào)文發(fā)送之后,但接收方尚未發(fā)送TCP ACK報(bào)文,發(fā)送方假設(shè)源報(bào)文丟失并將其重傳。重傳之后,RTO值加倍;如果在2倍RTO值到達(dá)之前還是沒有收到ACK報(bào)文,就再次重傳。如果仍然沒有收到ACK,那么RTO值再次加倍。如此持續(xù)下去,每次重傳RTO都翻倍,直到收到ACK報(bào)文或發(fā)送方達(dá)到配置的最大重傳次數(shù)。

最大重傳次數(shù)取決于發(fā)送操作系統(tǒng)的配置值。默認(rèn)情況下,Windows主機(jī)默認(rèn)重傳5次。大多數(shù)Linux系統(tǒng)默認(rèn)最大15次。兩種操作系統(tǒng)都可配置。
示例如下圖:

TCP重傳過程發(fā)送的第一個(gè)報(bào)文如下圖所示(圖片不很清楚,已經(jīng)盡力了):

這是一個(gè)TCP PSH/ACK報(bào)文①,包含648字節(jié)數(shù)據(jù)②,從10.3.30.1發(fā)送至10.3.71.7。這是一個(gè)典型的數(shù)據(jù)報(bào)文。

在通常情況下,第一個(gè)報(bào)文發(fā)送之后很快會(huì)收到TCP ACK報(bào)文。然而,在這個(gè)case里,第二個(gè)是重傳報(bào)文??梢栽赑acket list面板里看到。Info欄清楚的標(biāo)明“TCP Retransmission”,報(bào)文以黑色背景紅色字體標(biāo)出。下圖是Packet List面板中的重傳示例(仍然不清楚,但可參見上圖):

也可以在Packet Details和Packet Bytes面板中查看來確定是否是重傳報(bào)文,如下圖所示:

注意此報(bào)文與源報(bào)文相同(除了IP標(biāo)識(shí)和checksum字段)。要驗(yàn)證這一點(diǎn),比較兩個(gè)報(bào)文的Packet Bytes①。

在Packet Details面板,注意到重傳報(bào)文在SEQ/ACK Analysis下面有些額外的信息②。這些信息是由Wireshark提供的而并非報(bào)文本身。SEQ/ACK Analysis告訴我們這確實(shí)是一個(gè)重傳報(bào)文,RTO值是0.206秒,此時(shí)的RTO是基于報(bào)文1的時(shí)間增量。

檢查剩下的報(bào)文會(huì)得到類似的結(jié)果,不同之處只有IP標(biāo)識(shí)和checksum,以及RTO值。要使報(bào)文之間的時(shí)間間隔形象化,在Packet List面板中查看Time欄,如下圖所示。這里可以看到RTO值的翻倍增長關(guān)系。

TCP重復(fù)ACK以及快速重傳:

重復(fù)ACK是指在接收方收到亂序報(bào)文時(shí),所發(fā)出的一類TCP報(bào)文。TCP使用報(bào)文頭的序列號(hào)和確認(rèn)號(hào)以有效保證數(shù)據(jù)按照發(fā)送的順序接收和重組。

當(dāng)TCP連接建立以后,握手過程中交換的一個(gè)最重要的信息是初始序列號(hào)(ISN)。一旦連接雙方設(shè)定了ISN之后,接下來發(fā)送的報(bào)文所包含的序列號(hào)增加一個(gè)數(shù)據(jù)載荷值。

假設(shè)有個(gè)主機(jī)ISN是5000,發(fā)送500字節(jié)報(bào)文至接收方。一旦報(bào)文接收之后,接收端回復(fù)一個(gè)ACK號(hào)為5500的TCP ACK報(bào)文,基于以下公式:

Sequence Number In + Bytes of Data Received = Acknowledgment Number Out

按照上述計(jì)算結(jié)果,返回發(fā)送端的確認(rèn)編號(hào)實(shí)際上是接收端希望收到的序列號(hào)。示例如下圖:

數(shù)據(jù)接收方通過序列號(hào)來檢查報(bào)文丟失。接收方通過追蹤接收到的序列號(hào),能夠確認(rèn)序列號(hào)是否亂序。當(dāng)接收方收到一個(gè)不正常的序列號(hào),它會(huì)假設(shè)傳輸過程中有報(bào)文丟失。為了正確重傳數(shù)據(jù),接收方必須擁有丟失報(bào)文,所以它發(fā)送包含有丟失報(bào)文正確序列號(hào)的ACK報(bào)文,以便發(fā)送方重傳此報(bào)文。

當(dāng)重傳主機(jī)從發(fā)送端接收到3個(gè)重復(fù)ACK時(shí),它會(huì)假設(shè)此報(bào)文確實(shí)在傳送中丟失,并且立即發(fā)送一個(gè)快速重傳。一旦觸發(fā)了快速重傳,所有正在傳輸?shù)钠渌麍?bào)文都被放入隊(duì)列中,直到快速重傳報(bào)文發(fā)送為止。過程如下圖所示:

承接上文的彩圖:

本例中第一個(gè)報(bào)文如下圖:

重傳報(bào)文同樣可以通過Packet List面板的Info欄觀察到。報(bào)文呈現(xiàn)黑色背景紅色字體。這個(gè)報(bào)文的SEQ/ACK Analysis截面告訴我們這可能是一個(gè)快速重傳幀。(標(biāo)識(shí)報(bào)文為快速重傳的信息不是報(bào)文本身所包含的內(nèi)容,而是Wireshark的功能)。最后一個(gè)報(bào)文是接收到快速重傳的ACK。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)