關於滑動視窗協議的筆記

2021-09-20 01:47:57 字數 1656 閱讀 4956

滑動視窗協議

還可以看我的另一篇部落格,有更詳細的介紹:

屬於tcp協議中的一種應用,用於網路資料傳輸時的流量控制,以避免擁塞的發生。

該協議允許傳送方在停止並等待確認前傳送多個資料分組。由於傳送方不必每傳送乙個分組就停下來等待確認,所以該協議可以加速資料的傳輸,提高網路吞吐量。

tcp利用乙個滑動的視窗來告訴傳送端對它所傳送的資料能夠提供多大的緩衝區,由16位定義,最大為65535個位元組。

滑動視窗本質上是描述接收方的tco資料報緩衝區大小的資料,傳送方根據這個資料來計算自己最多能傳送多長的資料。這個視窗大小為0時,傳送方將停止傳送資料。啟動堅持定時器,等待這個視窗變成非0.

(持續定時器,收到對方的零視窗時,就啟動該定時器,時間到了就傳送乙個位元組的探測報文,對方此時會回應自身的視窗大小,如果仍然為0,就重置定時器,繼續等待。

視窗合攏:當視窗左邊界向右靠近時,這種現象發生在資料被傳送方確認時。

視窗張開:視窗的右邊界向右移動的時候。這種現象發生在接收端處理的資料的時候。

視窗收縮:視窗右邊界向左移動時,這種現象不常發生。

tcp採用可變大小的滑動視窗大小是為了取得更好的效能。

tcp規定的視窗大小是由接收方通告的,通過採取慢啟動和擁塞避免演算法等機制來使頻寬和效能取得最佳

傳遞效率問題:

單個傳送位元組,單個確認,會使網路中增加很多不必要的報文(比如需要20位元組的ip頭,20位元組的tcp頭)。所以我們的原則是一次盡可能多發幾個位元組,或者視窗空餘較多的時候通知傳送方一次傳送多個位元組:

nagle演算法:

1)若傳送應用程式要把傳送的資料逐個位元組的送到tcp的傳送快取,則傳送方就把第乙個位元組先傳送出去,其餘的先快取起來

2)當第乙個位元組得到確認時(也得到了網路情況和對方視窗大小),再把緩衝區的剩餘位元組組成合適大小的報文傳送出去。

3)當到達的資料已達到傳送視窗大小的一半或達到報文段的最大長度時就立即傳送乙個報文段(對於達到最大長度的情況:做法是讓接受方等待一段時間,或者接收方獲得足夠的空間容納乙個報文段或接收方快取有一半快取時再通知傳送方傳送資料)

關於擁塞控制可以看這個:

擁塞控制

就是防止過多的資料注入到網路中,這樣可以使網路中的路由器或鏈路不致過載。

常用的方法就是:

1)慢啟動、擁塞控制

2)快重傳、快恢復

傳送方維護乙個擁塞視窗(cwd)和慢啟動門限(ssthresh)。

cwd開始為1,確認一次之後變成2,成指數增加。直到到達ssthresh,改為擁塞避免演算法。

之後若發生擁堵,cwd變為1,ssthresh減半,又進入慢啟動。

若連續收到3次某個包的ack,則進入快啟動,快重傳。

ssthresh減半,cwd減為ssthresh減半後是數值,執行擁塞避免演算法(高起點,線性增長)

擁塞避免演算法(讓視窗緩慢增長,每經過乙個往返時間rtt就把傳送方的cwd加1,線性緩慢增長)

滑動視窗協議

只有在接收視窗向前滑動時 與此同時也傳送了確認 傳送視窗才有可能向前滑動。收發兩端的視窗按照以上規律不斷地向前滑動,因此這種協議又稱為滑動視窗協議。當傳送視窗和接收視窗的大小都等於 1時,就是停止等待協議。當傳送視窗大於1,接收視窗等於1時,就是回退n步協議。當傳送視窗和接收視窗的大小均大於1時,就...

滑動視窗協議

百科名片 滑動視窗協議,是tcp使用的一種 流量控制方法。該協議允許傳送方在停止並等待確認前可以連續傳送多個分組。由於傳送方不必每發乙個分組就停下來等待確認,因此該協議可以加速資料的傳輸。只有在接收視窗向前滑動時 與此同時也傳送了確認 傳送視窗才有可能向前滑動。收發兩端的視窗按照以上規律不斷地向前滑...

滑動視窗協議

協議4 滑窗協議 全雙工協議 簡介 兩個視窗 預設視窗為1,序列號長度為3位的傳送過程 文字描述 接收方收到幀後,首先核對是否為預期幀號 frame expected 如果是的,則接收並frame expected 1,移動接收視窗 傳送端收到應答幀,核對響應幀號 next frame to sen...