TCP IP詳解 讀書筆記 四

2021-06-23 00:43:20 字數 1991 閱讀 7429

tcp提供可靠的運輸層。它使用的方法之一就是確認從另一端收到的資料。但資料和確認都有可能會丟失。tcp通過在傳送時設定乙個定時器來解決這種問題。如果當定時器溢位時還沒有收到確認,它就重傳該資料。對任何實現而言,關鍵之處就在於超時和重傳的策略,即怎樣決定超時間隔和如何確定重傳的頻率。

首先觀察tcp所使用的重傳機制,我們將建立乙個連線,傳送一些分組來證明一切正常,然後拔掉電纜,傳送更多的資料,再觀察tcp的行為。

下圖表示的是tcpdump的輸出結果(已經去掉了bsdi設定的服務型別資訊)。

第1、2和3行表示正常的tcp連線建立的過程,第4行是「hello, world」(1 2個字元加上回車和換行)的傳輸過程,第5行是其確認。接著我們從svr4拔掉了乙太網電纜,第6行表示"and hi"將被傳送。第7 ~ 18行是這個報文段的12次重傳過程,而第1 9行則是傳送方的tcp最終放棄並傳送乙個復位訊號的過程。

現在檢查連續重傳之間不同的時間差,它們取整後分別為 1、3、6、12、24、48和多個6 4秒。在本章的後面,我們將看到當第一次傳送後所設定的超時時間實際上為 1.5秒,此後該時間在每次重傳時增加1倍並直至64秒。這個倍乘關係被稱為"指數退避 (exponential backoff)"

首次分組傳輸(第6行,24 . 4 80秒)與復位訊號傳輸(第19行,566.488秒)之間的時間差約為9分鐘,該時間在目前的tcp實現中是不可變的。

快速重傳與快速恢復演算法

擁塞避免演算法的修改建議1 9 9 0年提出 [jacobson 1990b]。

在介紹修改之前,我們認識到在收到乙個失序的報文段時, tcp立即需要產生乙個ack(乙個重複的ack)。這個重複的ack不應該被遲延。該重複的ack的目的在於讓對方知道收到乙個失序的報文段,並告訴對方自己希望收到的序號。

由於我們不知道乙個重複的ack是由乙個丟失的報文段引起的,還是由於僅僅出現了幾個報文段的重新排序,因此我們等待少量重複的ack到來。假如這只是一些報文段的重新排序,則在重新排序的報文段被處理並產生乙個新的ack之前,只可能產生1 ~ 2個重複的ack。

如果一連串收到3個或3個以上的重複ack,就非常可能是乙個報文段丟失了。於是我們就重傳丟失的資料報文段,而無需等待超時定時器溢位。這就是快速重傳演算法。接下來執行的不是慢啟動演算法而是擁塞避免演算法。這就是快速恢復演算法。

在下圖中可以看到在收到3個重複的ack之後沒有執行慢啟動。相反,傳送方進行重傳,接著在收到重傳的ack以前,傳送了3個新的資料的報文段(報文段67, 69和7 1)。

在這種情況下沒有執行慢啟動的原因是由於收到重複的ack不僅僅告訴我們乙個分組丟失了。

由於接收方只有在收到另乙個報文段時才會產生重複的ack,而該報文段已經離開了網路並進入了接收方的快取。也就是說,在收發兩端之間仍然有流動的資料,而我們不想執行慢啟動來突然減少資料流。

這個演算法通常按如下過程進行實現:

1) 當收到第3個重複的ack時,將ssthresh設定為當前擁塞視窗cwnd的一半。重傳丟失的報文段。設定cwnd為ssthresh加上3倍的報文段大小。

2) 每次收到另乙個重複的ack時,cwnd增加1個報文段大小並傳送 1個分組(如果新的cwnd允許傳送)。

3) 當下乙個確認新資料的ack到達時,設定cwnd為ssthresh(在第1步中設定的值)。這個

ack應該是在進行重傳後的乙個往返時間內對步驟 1中重傳的確認。另外,這個ack也應該是對丟失的分組和收到的第1個重複的ack之間的所有中間報文段的確認。這一步採用的是擁塞避免,因為當分組丟失時我們將當前的速率減半。

快速重傳演算法最早出現在 4.3bsd ta h o e版本中,但它隨後錯誤地使用了慢啟動。

快速恢復演算法出現在4.3bsd reno版本中。

TCP IP詳解讀書筆記

igmp協議 icmp資料報結構 udphdr結構 tcphdr結構 iphdr結構 tcp ip詳解讀書筆記 第13章igmp internet組管理協議 tcp ip詳解讀書筆記 第12章 廣播和多播 tcp ip詳解讀書筆記 第11章 udp 使用者資料報協議 tcp ip詳解讀書筆記 第10...

TCP IP詳解讀書筆記(一)

arp協議用來找到目標主機的ethernet網絡卡mac位址,ip則承載要傳送的訊息。資料鏈路層可以從arp得到資料的傳送資訊,而從ip得到要傳輸的資料資訊。ip不是可靠的協議 這是說,ip協議沒有提供一種資料未傳達以後的處理機制,這被認為是上層協議tcp或udp要做的事情。ip位址協議頭 ttl欄...

TCP IP詳解讀書筆記 IP協議

ip協議是整個協議簇裡最為核心的協議了,幾乎像是tcp,udp,icmp,igmp資料都是以ip資料報文格式傳輸。ip協議是 1不可靠的。2無連線的。不可靠是指的是提供最好的傳輸服務,不能保證ip資料報能全部到達目的地。無連線是指不維護任何關於後續資料報的狀態資訊 ip的路由選擇是簡單的,如果目的主...