內容絕對正確,所
以請讀者抱著懷疑的態度閱讀本部落格內的文字。如果讀
者因本部落格內的文字造成損失,本人
無力負責。如果有任何謬誤或者問題,
希望讀者不吝賜教。
在廣域網,tcp報文可能要經過多個路由器和速率較慢的鏈路。如果傳送方一開始就向網路
傳送多個報文段,則中間路由器的緩衝負擔會立刻加重,很可能致使路由器快取空間耗盡,
引發丟包。
舉例說明:假設中間路由儲存空間可以快取3個報文段(這是作了簡化的假設),傳送端連續發
出了編號為1,2,3,4,5的報文段,中間路由可能來不及一次性全部**,於是先將**1和2,
快取3,4,5,此時路由器儲存空間耗盡。這時傳送方又有新報文6,7到達,於是來不及**的3,
4被丟棄,6,7被快取,這樣不可避免地導致了重傳發生。
為了解決這一問題,tcp需要支援「慢啟動」演算法,該演算法通過觀察到新分組進入網路的速
率應該與另一端返回確認的速率相同而進行工作。
慢啟動演算法在傳送方tcp增加了乙個擁塞視窗,記為cwnd,它與通告視窗相互配合來完成
慢啟動過程。
當tcp連線建立成功以後,開始階段,cwnd為1個報文段。傳送方每收到乙個ack,cwnd都
會增加。收到第乙個ack時,cwnd = 2;收到第2個ack時,cwnd = 4,如此這般以指數關係
增加,直到cwnd = 通告視窗或者傳送報文的速率達到了網路的容量,中間路由器開始丟棄
分組,這就通知傳送方擁塞視窗開得過大。
需要注意的是:
1.傳送方傳送上限是cwnd和通告視窗的最小值(單位是位元組)。
2.cwnd以位元組為單位,但是慢啟動以報文段大小為單位進行增加
TCP慢啟動演算法
慢啟動,是傳輸控制協議使用的一種阻塞控制機制。慢啟動也叫做指數增長期。慢啟動是指每次tcp接收視窗收到確認時都會增長。增加的大小就是已確認段的數目。這種情況一直保持到要麼沒有收到一些段,要麼視窗大小到達預先定義的閾值。如果發生丟失事件,tcp就認為這是網路阻塞,就會採取措施減輕網路擁擠。一旦發生丟失...
TCP協議的慢啟動
tcp協議的慢啟動 傳統的tcp協議慢啟動時的演算法是每次收到新的ack則視窗 1,即cwnd cwnd 1 而很多演算法對tcp實現改進也是從這裡入手,因為這樣的演算法,視窗值是隨著rtt時間指數增長的。為什麼說是隨著rtt時間指數增長的?這裡解釋一下。www.2cto.com 例如某一次傳送過程...
TCP擁塞控制,慢啟動演算法
當乙個網路面對的負載超過了它的處理能力時,擁塞就會發生。internet也不例外。理論上,通過使用一條從物理學中套用過來的法則 分組守恆法則,擁塞現象就可以得到控制。它的基本思想是,只有當乙個老的分組離開之後才允許向網路注入乙個新的分組。tcp企圖通過動態的維護視窗的大小來實現這個目標。管理擁塞的第...