如果傳送者傳送資料過快,接收者來不及接收,那麼就會出現分組丟失,為了避免分組丟失,控制傳送者的傳送速度,使得接收者來得及接收,這就是流量控制。
流量控制的目的是:防止分組丟失,是構成tcp可靠性的一方面。
由滑動視窗協議(連續arq協議)實現,滑動視窗協議即保證了分組無差錯,有序接收,也實現了流量控制。主要的方式就是接收方返回的ack會包含自己的接受視窗大小,並利用大小來控制傳送方的資料傳送。
擁塞控制是作用於網路的,它是防止過多的資料注入網路,避免出現網路負載過大的情況,常見的方法就是
我們首先新增幾個限定條件
慢開始演算法
傳送方維持乙個叫做擁塞視窗cwnd(congestion window)的狀態變數,擁塞視窗的大小取決於網路的擁塞程度,並且動態地在變化,傳送方讓自己的傳送視窗等於擁塞視窗,另外考慮到接收方的接受能力,傳送視窗可能小於擁塞視窗。
慢開始演算法的思路就是:不要一開始就傳送大量的資料,先測探一下網路的擁塞程度,也就是說從小到大主鍵增加擁塞視窗的大小。
這裡用報文段的個數作為擁塞視窗的大小舉例說明慢開始演算法,實際的擁塞視窗大小是以位元組為單位的。如下圖所示:
傳送方沒收到乙個確認視窗,就把視窗cwnd加1從上圖可以看到,乙個傳輸輪次所經歷的時間其實就是往返時間rtt,而且每經過乙個傳輸輪次,擁塞視窗cwnd就加倍
為了防止cwnd增長過大引起網路擁塞,還需設定乙個慢開始門限ssthresh狀態變數,ssthresh的用法如下:
擁塞避免演算法
擁塞避免演算法讓擁塞視窗緩慢增長,即沒經過乙個往返時間rtt就把傳送方的擁塞視窗cwnd加1,而不是加倍,這樣能夠讓擁塞視窗按線性規律增長。
無論是在慢開始階段,還是在擁塞控制階段,只要傳送方判斷網路出現擁塞,就把慢開始門限 ssthressh設定為當前出現擁塞時傳送視窗大小的一半(不能小於2),然後將擁塞視窗cwnd設定為1,執行慢開始演算法。
這樣做的目的是迅速減少主機傳送到網路中的分組數,使得傳送擁塞的路由器有足夠時間把佇列中積壓的分組處理完畢。
整個擁塞控制的流程圖如下圖所示:
乘法減小和加法增大
快重傳演算法
快重傳要求接收方在收到乙個失序的報文段後,就立即發出重複確定(為的是使傳送方及早知道有報文段沒有達到對方,可提高網路吞吐量約20%)而不要等到自己傳送資料時捎帶確定。快重傳演算法規定,傳送方只要一連收到三個重複確定就應當立即重傳對方尚為收到的報文段,而不必繼續等待設定的重傳計時器時間到期,如下所示
快恢復快重傳配合使用的還有快恢復演算法,有以下兩點要求
在採用快恢復演算法時,慢開始演算法只是在tcp連線建立時和網路出現超時時才使用
面試準備 計算機網路複習
http協議執行在tcp之上,明文傳輸,客戶端與伺服器端都無法驗證對方的身份 https是身披ssl外殼的http,執行於ssl上,ssl執行於tcp之上,是新增了加密和認證機制的http。二者之間存在如下不同 三次握手 我要和你建立鏈結,你真的要和我建立鏈結麼,我真的要和你建立鏈結,成功 四次揮手...
計算機網路複習
tcp 是面向連線的協議。每乙個 tcp 連線有三個階段 連線建立 資料傳送 連線釋放。每一條 tcp 連線有兩個端點。tcp 連線到埠叫做套接字 socket 或插口。埠拼接到 ip 位址即構成了套接字。每一條 tcp 連線唯一地被通訊兩端的兩個端點 即兩個套接字 所確定 主動發起連線建立的應用程...
計算機網路複習
利用http協議在網際網路上通訊時,資料是非加密傳輸的。資料可能被其他人截獲,造成資訊洩露。為了解決此問題,需要加密。加密有兩種方式,一種是對稱加密,一種是非對稱加密。在對稱加密演算法中,加密和解密對應的秘鑰是相同的。要保證安全的話,對稱加密的秘鑰不能洩露,必須保密。非對稱加密演算法的加密秘鑰和解密...