可靠傳輸資料概述之RDT到滑動視窗協議的發展

2022-04-10 17:33:09 字數 2254 閱讀 9979

主要思想是有限狀態機。

rdt1.0

rdt1.0是模擬通道可靠的情況下。

rdt1.0存在的問題:

通道完全可靠是理論的模型

rdt2.0

rdt2.0是模擬通道不可靠的情況下(資料位翻轉,但不丟失分組),解決資訊傳送接收的問題,加入checksum校驗位。

傳送方在傳送完成後會進入乙個等待確認的狀態,當收到接收方返回的訊息為ack時才會讓上層進入下一次呼叫,否則會重新傳送訊息。

接收方在接收到資訊後會對訊息進行校驗,當資訊校驗成功後,會傳送ack,否則傳送nak。

rdt2.0存在的問題:

rdt2.0存在的問題是,ack和nak也會出現因為通道不可靠而出現資料丟失的問題,那麼接受方就無法正確識別ack和nak。當傳送方第一次傳送的資料就已經被接收方接收,而接受方傳送的ack由於通道丟失了資料,傳送方會重新傳送乙份資料,導致資料重疊。

rdt2.1

rdt2.1是對rdt2.0的改進,目的是為了解決rdt2.0存在的問題。

2.1加入的措施:

對傳送者和接收者都加入乙個序列號(0,1)。由於採用的是「停-等」協議,這個序列號只需要2個。

當傳送者傳送資料時會攜帶上當前的序列號,如0。那麼在傳送者傳送後和2.0一樣會進入確認狀態。

傳送者在接收到資料後,會對資料的序列號進行檢查,是否與當前自己所期望的序列號一致。

rdt2.1的問題

如果我們仔細看,nak是多餘的。可以由ack+序列號來替代nak。

rdt2.2

rdt2.2是對rdt2.1的簡單改進,nak被去除,而是接受者在傳送ack時攜帶上序列號,如果是正確接收則新增當前序列號,否則新增另乙個序列號。

rdt2.2中存在的問題:

rdt2.0,2.1以及2.2都是建立在通道不可靠但不丟失分組的模擬環境下,但實際上在資料傳輸的過程中,有可能出現分組丟失的情況,這樣,無論是傳送方還是接收方都將永遠處於等待的狀態,這是rdt2.2所不能解決的情況。

rdt3.0

rdt3.0為了解決rdt2.2中存在的問題,引入了定時器。

定時器會在傳送分組時啟動,當在設定的時間內仍然沒有接收到ack資訊,則會認為該分組在傳輸的過程中丟失了,(有可能是因為網路延遲,但不影響rdt3.0的正常工作)。

rdt3.0存在的問題:

rdt3.0確保了通道互動的可靠性,也就是說,如果不考慮效能的話,rdt3.0滿足了不可靠通道下進行可靠傳輸資料的需求。

\[t_(ransimit) = \frac lr

\]t=0.008us,rrt=15ms

傳送方傳送時間百分比

\[u_(sender)= \frac

\]u = 0.00027。在1gbps鏈路上每30ms才傳送乙個分組---> 33kb/s。

我們可以看出:網路協議限制了物理資源的利用。

流水線和滑動視窗協議

經過分析我們可以看出,rdt3.0中導致效能低下的主要原因是停等協議,一次傳送必須等待一次返回。那能不能先發個10次然後再等10次返回呢?100次?1000次呢?

答案是肯定的,我們允許傳送方在收到ack之前連續傳送多個分組。但實現這個需要更大的序列號範圍,傳送方和/或接收方需要更大的儲存空間以快取分組,這就是流水線的主要思想。

滑動視窗協議是基於流水線思想的實現方法,具體協議實現有兩種。

gbn的實現,傳送方有乙個滑動視窗,而接收方只有當前預期收到序列號的乙個快取空間。

接收方只接收當前預期收到的序列號分組,才會返回ack,其餘的都將被丟棄。

所以傳送方收到的ack都是接收方所收到的最大序列號,傳送方不得不重發大於該序列號的所有分組。這無疑造成的資源的浪費。

sr的實現,不僅傳送方有乙個滑動視窗,接收方也有乙個滑動視窗,但兩個視窗是不同步的,不能知道彼此視窗現在的狀態。在接收方增加滑動視窗後就可以接收一定範圍內的序列號分組,(雖然需要增加快取空間,以空間換時間的做法)。傳送方只需要重新傳送那些超時或者是ack狀態有誤的資料分組即可,sr相對於gbn有了極大的優化。

但sr實際上還存在乙個問題,但只需在設計時需要滿足乙個條件:

\[n_s + n_r <=2^k

\]ns和nr分別是傳送方和接收方滑動視窗的大小,k是定義的可用序列號數。

TCP可靠傳輸 滑動視窗

tcp是如何保證可靠傳輸的?來看看滑動視窗 1 什麼是滑動視窗?tcp的滑動視窗是以位元組為單位的。現假定a收到了b發來的確認報文段,其中視窗是20位元組,而確認號是31.根據這兩個資料,a構造出了自己的傳送視窗 傳送方a的傳送視窗表示 在沒有收到b的確認的情況下,a可以連續把視窗內的資料都傳送出去...

TCP的可靠傳輸之滑動視窗

tcp中的滑動視窗是以位元組為單位來傳送的。假設現在有兩個視窗a和b,其中a視窗向b視窗傳送資料,b視窗接收到資料並返回乙個確認報文。其中用紅色框框出來的位元組數就是滑動視窗的大小,滑動視窗的大小取決於b視窗快取區的大小。滑動視窗越大,說明效率越高。就像拿杯子去接水一樣,杯子越大,水管的水流量就越粗...

滑動視窗 TCP可靠傳輸的實現

1 視窗機制 滑動視窗協議的基本原理就是在任意時刻,傳送方都維持了乙個連續的允許傳送的幀的序號,稱為傳送視窗 同時,接收方也維持了乙個連續的允許接收的幀的序號,稱為接收視窗。傳送視窗和接收視窗的序號的上下界不一定要一樣,甚至大小也可以不同。不同的滑動視窗協議視窗大小一般不同。傳送方視窗內的序列號代表...