tcp是如何保證可靠傳輸的?來看看滑動視窗~-~
1、什麼是滑動視窗?
tcp的滑動視窗是以位元組為單位的。
現假定a收到了b發來的確認報文段,其中視窗是20位元組,而確認號是31.根據這兩個資料,a構造出了自己的傳送視窗
傳送方a的傳送視窗表示:在沒有收到b的確認的情況下,a可以連續把視窗內的資料都傳送出去。凡是已經傳送過的資料,在未收到確認之前都必須暫時保留,以便在超時重傳時使用。
傳送視窗的位置由視窗前沿和後沿的位置共同確定:
現假定a傳送了序號為31~41的資料。這時,傳送視窗位置並未改變,但傳送視窗內靠後面有11個位元組表示已經傳送但未收到確認。而傳送視窗內靠前面的9個位元組是允許傳送但尚未傳送的
小於p1的是已經傳送並收到確認的部分,而大於p3的是不允許傳送的部分
p3-p1 = a的傳送視窗
p2-p1 = 已經傳送但尚未確認的位元組數
p3-p2 = 允許傳送但尚未傳送的位元組數(可用視窗)
再來看一下b的接收視窗。b的接受視窗大小是20.在接收視窗外面,到30為止的資料是已經傳送過確認,並且已經交付主機了。因此在b中可以不保留這些資料,接受視窗內的資料(31~50)是允許接收的。b已經收到32和33的資料,這些資料沒有按序到達,因為序號31的資料沒有收到,b只能對按序收到的資料中的最高序號給出確定,因此b傳送的確認報文段中的確認號仍然是31.
2、視窗和快取的關係
《1》傳送快取和傳送視窗
傳送快取用來暫時存放傳送應用程式傳送給傳送發tcp準備傳送的資料;tcp已經傳送但尚未收到確認的資料。
傳送視窗只是傳送快取的一部分。已經被確認的資料應當從傳送快取中刪除。傳送快取和傳送視窗的後沿是重合的。
《2》接收快取和接收視窗
接收快取用來暫時存放按序到達的、但尚未被接收應用程式讀取的資料;為按序到達的資料;
如果應用程式不及時讀取快取資料,那接收快取最終就會被填滿,使接收視窗減小到零;
如果應用程式即使讀取快取資料,接收視窗就可以增大,但最大不超過接收快取的大小。
3、根據以上內容,強調以下3點:
(1)雖然a的傳送視窗是根據b的接收視窗設定的,但在同一時刻,a的傳送視窗大小並不總和b的接收視窗一樣大,這是因為網路傳送視窗值需要一定的時間滯後。
(2)對於不按序到達的資料如何處理,tcp標準並無明確規定。通常tcp對不按序到達的資料是先臨時存放在接收視窗中,等到位元組流中所缺少的位元組收到後,再按序交付上層的應用程式。
(3)tcp要求接收方必須有累積確認的功能,這樣可以減少傳輸開銷。
滑動視窗 TCP可靠傳輸的實現
1 視窗機制 滑動視窗協議的基本原理就是在任意時刻,傳送方都維持了乙個連續的允許傳送的幀的序號,稱為傳送視窗 同時,接收方也維持了乙個連續的允許接收的幀的序號,稱為接收視窗。傳送視窗和接收視窗的序號的上下界不一定要一樣,甚至大小也可以不同。不同的滑動視窗協議視窗大小一般不同。傳送方視窗內的序列號代表...
28 tcp可靠傳輸 滑動視窗
前面我們在學習tcp可靠傳輸時,講了停止等待和連續arq兩種可靠傳輸的協議方式,其中連續arq協議還使用了滑動視窗來保證資料的可靠傳輸和通訊效率,可見滑動視窗是非常重要的。對於滑動視窗我們可以分成視窗和滑動來進行理解。所謂視窗就是一段可以被傳送或接收的位元組資料,其連續範圍稱之為 視窗 滑動則是這個...
TCP的可靠傳輸之滑動視窗
tcp中的滑動視窗是以位元組為單位來傳送的。假設現在有兩個視窗a和b,其中a視窗向b視窗傳送資料,b視窗接收到資料並返回乙個確認報文。其中用紅色框框出來的位元組數就是滑動視窗的大小,滑動視窗的大小取決於b視窗快取區的大小。滑動視窗越大,說明效率越高。就像拿杯子去接水一樣,杯子越大,水管的水流量就越粗...