TCP面試題之滑動視窗原理

2022-05-07 03:06:13 字數 1725 閱讀 2836

作用:

1. 提供tcp可靠性:對傳送的資料進行確認

2. 流量控制:視窗大小隨鏈路變化

一、tcp視窗機制

tcp中視窗大小是指tcp協議一次傳輸多少個資料。因為tcp是乙個面向連線的可靠的傳輸協議,既然是可靠的就需要傳輸的資料進行確認。tcp視窗機制有兩種,一種是固定視窗大小,另一種是滑動視窗。資料在傳輸時,tcp會對所有資料進行編號,傳送方在傳送過程中始終保持著乙個視窗,只有落在傳送視窗內的資料幀才允許被傳送;同時接收方也始終保持著乙個接收視窗,只有落在視窗內的資料才會被接收。這樣通過改變傳送視窗和接收視窗的大小就可以實現流量控制。

二、tcp視窗大小

tcp的視窗滑動技術通過動態改變視窗的大小來調節兩台主機之間資料傳輸。每個tcp/ip主機支援全雙工資料傳輸,因此tcp有兩個滑動視窗,乙個用於接收資料,乙個用於傳送資料。接收方裝置要求視窗大小為0時,表明接收方已經接收了全部資料,或者接收方應用程式沒有時間讀取資料,要求暫停傳送。

tcp在傳送資料時,第一次接受方視窗大小是由鏈路頻寬決定的,但是接收方在接收到的資料後,返回ack確認報文,同時也告訴了傳送方自己的視窗大小,此時傳送方第二次傳送資料時,會改變自己的視窗大小和接收方一致。

當視窗過大時,會導致不必要的資料來擁塞我們的鏈路,但是視窗太小時,會造成很大的延時,比如為1時,傳送方每傳送乙個資料,接收方就會返回乙個ack報文,在傳送方未接收到接收方的確認報文ack之前不會進行下一次傳送。(當鏈路變好了或者變差了這個視窗還會發生變化,並不是第一次協商好了以後就永遠不變了。)【這句話不太理解】

三、視窗滑動協議

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

四、滑動視窗原理

視窗大小是指無需等待確認就可以繼續傳送資料的最大值,上圖的視窗大小是4000位元組(4段)

傳送前4段時,無需ack,直接傳送

收到第乙個ack後,滑動視窗向後移動,繼續傳送第五段的資料

作業系統核心為了維護這個滑動視窗,需要開闢傳送緩衝區來記錄當前還有哪些資料沒有應答,只有應答的資料才會從緩衝區中刪除

視窗越大,則網路的吞吐率就越高

五、滑動視窗丟包原理

傳送端丟包原理

當某一段報文丟失了,圖中(1001-2000)資料段丟失了,接收方沒有接收到該資料段,則會一直給傳送端傳送ack(下乙個是1001),如果傳送端連續收到同樣的ack(下乙個是1001),就會將對應的(1001-2000)重新傳送,這時候如果接收端收到1001後,再次返回的就是ack(7001)。這種機制被稱為「高速重發機制」(快速重傳)

接收端丟包原理

接收端的下乙個2001丟失了,但是傳送端收到了ack(下乙個3001),說明1-3000的資料段已經接收到了,資料已經傳輸到了傳送端,所以不需要理會。

TCP滑動視窗原理

tcp 滑動視窗 滑動視窗分為接受視窗和傳送視窗 滑動視窗協議是傳輸層進行流控的一種措施,接收方告訴傳送方自己視窗的大小,從而控制傳送方的傳送速度,ack是收到資料後,接收方給傳送方的乙個確認ack,它包含了兩個重要的資訊 期望接受到的下乙個位元組的序號n,代表接收方已經接受到n 1位元組的資料,如...

TCP協議之滑動視窗

1 滑動視窗 當一次只發乙個分組處理重傳很容易,但是在延遲很高的網路中效率會很低。滑動視窗解決一次性可以傳送多個分組過去,接收ack的問題相當於是在解決資料應答機制的效率,另外當視窗大小基於來自接收方或其他訊號的回饋而改變是流量控制和擁塞控制就實現了 傳送視窗 傳送方維持的允許傳送的幀的序號。包含了...

TCP滑動視窗控制流量的原理

tcp的滑動視窗機制 tcp這個協議是網路中使用的比較廣泛,他是乙個面向連線的可靠的傳輸協議。既然是乙個可靠的傳輸協議就需要對資料進行確認。tcp協議裡視窗機制有2種 一種是固定的視窗大小 一種是滑動的視窗。這個視窗大小就是我們一次傳輸幾個資料。對所有資料幀按順序賦予編號,傳送方在傳送過程中始終保持...