TCP
擁塞控制的過程。(四個狀態都要解釋清楚)算法
在某段時間裏,對網絡中某一資源的需求超過可用範圍,也就是供不該求,網絡性能就會降低。這種情況,就是擁塞
緩存
研究的前提網絡
若出現擁塞而不控制,整個網絡的吞吐量將隨輸入負荷的增大而降低
性能
發送方要維護一個擁塞窗口cwnd
的狀態變量,其值取決於網絡的擁塞程度,而且動態變化3d
cwnd的維護原則
:只要網絡沒有出現擁塞,擁塞窗口就在增大一些;只要出現擁塞,擁塞窗口就減少一些網絡擁塞的依據
:沒有按時收到應當到達的確認報文(即發生超時重傳)發送方將擁塞窗口做爲發送窗口swnd,即swnd=cwndcode
維護一個慢開始門限ssthresh
狀態變量:blog
四種擁塞控制算法:慢開始(slow-start)、擁塞避免(congestion avoidance)、快重傳(fast retransmit)、快恢復(fast recovery)資源
若重傳計時器超時,則判斷網絡可能出現擁塞:it
慢開始io
擁塞避免
---------------慢開始和擁塞避免算法是最開始出現的---------------
有時個別報文段丟失會被誤認爲發送擁塞,錯誤減少擁塞算法,下降效率。爲了解決這個問題,增長了後兩個算法
快重傳
快重傳算法可讓發送方儘快知道發生了個別報文段的丟失
快重傳就是讓發送方儘快開始重傳
,而不是等待超時重傳計時器超時
再重傳
當即確認
。重複確認
。當即重傳
,而不是等待該報文段的超時重傳計時器超時再重傳快恢復
三個重複確認
,就知道如今只是丟失了個別報文段,啓動快恢復算法。發送方將慢開始門限ssthresh值和擁塞窗口cwnd值調整爲當前窗口的一半;開始執行擁塞避免算法
TCP
的流量控制
流量控制說白了就是讓發送方不要傳的那麼快,太快了來不及接收
利用滑動窗口
能夠很方便地在TCP鏈接上實現對發送方的流量控制
seq=1 DATA
:seq取值1,表示TCP報文段數據載荷的第一個字節的序號是1DATA
表示該報文段爲TCP數據報文段ACK
:TCP報文段首部中的標誌位,取值1表示這是TCP確認報文段ack
:TCP報文段首部中的確認號字段,取值201表示序號201之前都正確接受,等待接受201後的數據rwnd
:TCP報文段首部中的窗口字段,取值300表示,接受窗口改成300只要TCP鏈接的一方,收到對方的零窗口通知
,就啓動一個持續計時器
,若超時,就發送一個零窗口探測報文(只攜帶1字節數據)
,接收方在收到探測報文段
時,給出本身的接收窗口值
。若依然是0,就重啓計時器。
事實上,TCP規定,即便接收窗口爲0,也必須接收零窗口探測報文段、確認報文段、帶有緊急數據的報文段
。
零窗口探測報文段
也有重傳計時器,超時就重傳。