我自己複習的流量控制主要設計兩個方面:
1,滑動視窗:就像tcp滑動視窗那樣,客戶端的傳送視窗被服務端的接受緩衝區大小的嚴格控制,讓客戶端不會肆無忌憚的傳送接收方無法處理的資料。
補充:如果之前服務端反饋的緩衝區滿,客戶端就不會傳送資料,但是當服務端的緩衝區裡的資料處理後出現富裕,就會給客戶端傳送乙個確認報文段,通告他的緩衝區出現富裕,但是這個ack(其實它不是確認報文段,不確認任何資訊,只進行視窗的更新)報文段丟失了呢?所以客戶端通常會有乙個計時器,當客戶端收到ack表示的服務端緩衝區滿時,就暫時不會傳送資料,計時器開始計時,時間到後如果沒有收到視窗更新報文,就會傳送乙個查詢視窗的報文段,這樣避免了,互相等待的死鎖問題。
2,效率問題:如果你每次都傳送乙個位元組的資料,利用率相當低,網路由於太多的包而過載,因為還有20位元組tcp首部和20位元組的ip首部。nagle演算法:nagle演算法要求乙個tcp連線上最多只能有乙個未被確認的未完成的小分組,在該分組的確認到達之前不能傳送其他的小分組。nagle的演算法通常會在tcp程式裡新增兩行**,在未確認資料傳送的時候讓傳送器把資料送到快取裡。任何資料隨後繼續直到得到明顯的資料確認或者直到攢到了一定數量的資料了再發包。
TCP流量控制
一般來說,我們總是希望資料傳輸的更快一些,但如果傳送方把資料傳送的很快,而接收方來不及接收,這就可能造成資料的丟失。流量控制就是讓傳送方的傳送速率不要太快,讓接收方來得及接收。對於成塊資料流,tcp利用滑動視窗機制來實現流量的控制,對於互動資料流,tcp利用捎帶ack和nagle演算法來實現流量的控...
TCP流量控制
如果傳送端傳送的速度較快,接收端接收到資料後處理的速度較慢,而接收緩衝區的大小是固定的,就會丟失資料。tcp協議通過 滑動視窗 sliding window 機制解決這一問題。滑動視窗 傳送端發起連線,宣告最大段尺寸是1460,初始序號是0,視窗大小是4k,表示 我的接收緩衝區還有4k位元組空閒,你...
TCP流量控制
流量控制 一般來說,我們總是希望資料傳輸的更快一些,但如果傳送方把資料傳送的很快,而接收方來不及接收,這就可能造成資料的丟失。流量控制就是讓傳送方的傳送速率不要太快,讓接收方來得及接收。對於成塊資料流,tcp利用滑動視窗機制來實現流量的控制,對於互動資料流,tcp利用捎帶ack和nagle演算法 來...