TCP擁塞控制、網絡各層協議

我們知道TCP和UDP都是傳輸層的協議,最大的區別UDP無連接是面向報文的,不保證可靠傳輸,無擁塞控制,就是TCP是面向連接的協議,能提供安全,可靠,有序的數據傳輸,保證數據無差錯,不丟失,不重複按序到達

那麼TCP是如何保證可靠傳輸的?

(1)校驗和

如果接受到的段檢驗和有差錯,TCP將丟棄這個段,且不會確認收到

(2)流量控制

流量控制的目的是防止數據丟失,如果發送方發送的太快,接收方來不及接受處理那麼數據就會丟失,所以流量控制是控制發送方的發送速度的。

流量控制採用滑動窗口在實現,在接收端有自己的緩存大小,接收方只允許發送方發送的數據大小就是目前自己的緩存還能接受多少數據,這個大小也就是滑動窗口的大小。接收方在返回確認信息的時候就會返回自己滑動窗口的大小,

(3)擁塞控制

擁塞控制是作用於網絡的,防止過多的數據出現在網絡中,導致網絡負載過大,主要通過慢開始,快重傳,快恢復和避免擁塞來實現的。

慢開始

(1)發送方維護一個擁塞窗口cwnd,這個窗口有一個慢開始ssthresh,發送方一開始傳輸的時候採用慢開始,也就是不會一下子發送大小爲ssthresh的數據量,而是按照指數的增長速度來慢慢加大cwnd的大小,如下圖。

 當cwnd>ssthresh時就開始採用擁塞避免算法

擁塞避免算法

擁塞避免算法就是讓cwnd的大小線性增長,一個輪次只增加1,這樣不會那麼快使得網絡擁塞。

不論是在慢開始階段還是擁塞避免階段,如果出現網絡擁塞,ssthresh的大小變爲擁塞發生時cwnd值的一半,然後cwnd變爲1,在開始慢開始算法

 

快重傳

快重傳是指當接收方收到一個失序的數據,可以立刻向發送方發送重複確認信息,而不會等到發送下一個確認時捎帶發送,發送方只要接收三個連續的重複確認,就會立刻重複發送剛纔沒有收到確認的數據

快恢復 

與快重傳配合使用,當發送方接收到連續三個重複確認請求,爲了避免網絡擁塞,就會把ssthresh的值減少爲當然擁塞窗口的一半,但是發送方認爲當前網絡並沒有發生擁塞,因爲還可以接收到三個確認請求,所以不會去執行慢開始算法,而是執行擁塞避免算法

(4)停止等待協議

發送方沒發送一個數據就會等待接收方的確認,超過時間沒有收到,就會重傳

 網絡各層協議

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章