TCP的可靠傳輸之滑動視窗

2021-10-23 23:23:14 字數 1118 閱讀 9392

tcp中的滑動視窗是以位元組為單位來傳送的。假設現在有兩個視窗a和b,其中a視窗向b視窗傳送資料,b視窗接收到資料並返回乙個確認報文。

其中用紅色框框出來的位元組數就是滑動視窗的大小,滑動視窗的大小取決於b視窗快取區的大小。滑動視窗越大,說明效率越高。就像拿杯子去接水一樣,杯子越大,水管的水流量就越粗。所以說滑動視窗實質上是用來負責流量控制的。

前面的1234四個位元組是已經傳送且對方成功接受的資料,第五個位元組是b期望的下乙個位元組。在滑動視窗中的位元組都可以傳送出去,但是要保留一會兒等待接受區去接受,如果資料在路上丟失的話,還可以進行超時傳送。14、15、16三個位元組是不可傳送的,只有當b視窗接受了前面的位元組後,滑動視窗會往後走,此時才可以傳送。

假設b視窗在接受時接收到的位元組順序分別為1、2、3、4、6、7,這途中5號訊息可能丟失了,那麼它給a視窗返回的確認報文仍然是5號訊息而不是7號。因為b視窗(接受區視窗)只能對按序收到的最高序號給出確認。

如果a視窗中的訊息都傳送完,b視窗也都接受完。但是此時的確認報文卻丟失了,結果a在一定時間內沒有收到b傳送過來的確認報文,就會再次給b視窗傳送一次資料,知道收到b的確認報文為止。

注意點:

1.滑動視窗雖然可以根據接受區的快取大小來調整。但是它們並不總是一樣大的。因為網路傳輸需要經歷一定的時間,還要考慮當前網路的擁堵狀態。

2.對沒有按序到達的資料,tcp並沒有明確規定如何處理。一般情況下會把亂序的資料先保留等到所缺的位元組到達後,在按序交給上層應用。

3.接受方必須要有累積確認的功能來減少傳輸開銷。但是也不應過分推遲以免不必要的重傳。

超時重傳時,如何確定接收方接收到的是先傳送的資料還是後來重傳的資料?

典型的做法:取新的重傳時間為舊的重傳時間的兩倍。

選擇確認sack

當接受區在接受資料時接收到的時亂序的資料,就會形成乙個個的位元組塊。如果這些位元組都在接受視窗之內,就會將這些資料保留下來,同時準確的告訴傳送方使傳送方不要再重複的傳送這些資料。

TCP可靠傳輸 滑動視窗

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

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

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

28 tcp可靠傳輸 滑動視窗

前面我們在學習tcp可靠傳輸時,講了停止等待和連續arq兩種可靠傳輸的協議方式,其中連續arq協議還使用了滑動視窗來保證資料的可靠傳輸和通訊效率,可見滑動視窗是非常重要的。對於滑動視窗我們可以分成視窗和滑動來進行理解。所謂視窗就是一段可以被傳送或接收的位元組資料,其連續範圍稱之為 視窗 滑動則是這個...