TCP 流量控制和擁塞控制中的重要機制

中止等待協議:
放送方發送一個數據包,要收到接收方對該包的確認後,才發送下一個數據包。
缺點:慢,信道利用率低。
ARQ  Automatic Repeat reQuest
接收方採用累加確認的方式,接收方沒必要對每個分組進行缺,只須要對按序到
達的最後一個分組發送確認。
缺點:當發送方發送了5個分組,中間第3個丟失,那麼接收方只對前兩個分組進
行確認。發送方只好把後面的3個分組都重傳一次。這叫作Go-back-N(回退N)
選擇確認 selective ack
接收方對接收到的數據字節流中,如有中間字節塊的缺失,只須要從新傳輸缺失
的就能夠了,對已經接收到的字節塊無需重傳。
須要在TCP首部的選項中設置 」容許SACK」 的選項。
TCP流量控制:
讓發送方的發送速率不要太快,要讓接收方來得及接收。端到端的問題。
機制:滑動窗口
S--------------->R
當接收方R 的窗口爲0時候,S就不能再發送數據了。當R的窗口不爲0時候R會發
送一個數據給S來代表當前的窗口大小,可是爲了防止S收不到R又有窗口的通
告,S啓動一個持續計時器(persistent timer),只要TCP鏈接的一方接收到對方
的零窗口通告,就啓動持續計時器。若持續計時器設置的時間到期,那麼發送一
個零窗口的探測報文段。

Nagle算法:
此算法在TCP的實現中普遍使用。
若發送應用進程把要發送的數據逐個字節地發送到TCP的發送緩存,則發送方就
把第一個數據字節先發出去,把後面到達的數據緩存起來。當發送接收到對第一
個數據字符的確認後,再把發送緩存中的全部數據組裝成一個報文段發送出去,
同時繼續對隨後到達的數據進行緩存。只有收到對前一個報文段的確認後才繼續
發送下一個報文段。Nagle算法還規定,當到達的數據已經達到發送窗口的一半或
已經達到報文段的最大長度時,就當即發送一個報文。

糊塗窗口綜合症:
接收方緩存已經滿了,而且一次只從緩存讀取一個字節,因此通告給發送方的窗
口只有一個字節,那麼接收方一次只發送一個字節的數據,可是發送效率低,因
爲一個字節數據要40個字節協議頭部。若是每次發送一個字節的話效率很低,解
決方法是:讓接收方等待一段時間,再通告本身的窗口大小給接收方。

 
 
TCP擁塞控制:
是整個網絡的問題(全局性的)。算法

①慢開始和擁塞避免:
    發送方維持一個叫作擁塞窗口CWND(congestion window)的狀態變量。發送
方的擁塞窗口等於本身發送窗口。
慢開始:
發送方一開始設置CWND=1,發送一個包,接收到該包確認後,發送方設置
CWND=2,發送以後,接收到該包的確認,發送方設置CWND=4 ……以此類推,成倍增加。
千萬注意:窗口大小並不時一次性發送數據的大小,發送方能夠根據CWND進行
連續幾回的發數據,這連續發送的數據大小不該該超過CWND。

   爲了防止cwnd增加過大引發網絡擁塞,還須要設置一個慢啓動開始門限 
ssthresh 。
當cwnd等於ssthresh 的時候,cwnd並不在是成倍的增加了,而是逐漸加1

TCP 流量控制和擁塞控制中的重要機制
當網絡擁塞時候(就是發送方沒有按時接收到確認),那麼就把慢開始門限值設
置成當前的CWND的一半,接着將cwnd設置爲1,執行慢開始算法。緩存

②快重傳和快恢復:
快重傳要求接收方收到一個失序報文段後當即發送重複確認(目的是讓發送方儘早
知道數據段沒到達),而不要等到本身發送確認數據時候後捎帶。
發送方發送5個報文,第3個缺失,收到第四個報文時候當即發送對第2個的重複確
認,接收到第4個、第五個報文時候也發送對第2個的重複確認。只要發送方一連
收到3個重複確認就應該重發接收發未收到的報文,而沒必要等到第3個報文的重傳
計時器過時才重發。
所以,使用快重傳能夠提升整個網絡的吞吐量。

TCP 流量控制和擁塞控制中的重要機制
 
 

快恢復與快重傳配合使用:
當發送方連續接收到3個重複確認,就執行「乘法減少」算法,把慢開始門限值
ssthresh設置爲當前CWND的一半,同時,將此時的CWND=新的ssthresh值,接
下去並不執行慢開始算法。
由於收到3個重複報文並不時意味着網絡出現問題,可能僅僅就是那個包缺失了,
因此ssthresh減半後,cwnd在ssthresh的基礎上逐漸加1。

TCP 流量控制和擁塞控制中的重要機制

相關文章
相關標籤/搜索