TCP協議如何提高傳輸效率

2021-08-21 09:16:31 字數 1641 閱讀 3753

本片主要討論tcp協議在保證可靠傳輸的前提下,如何提高傳輸效率;

提高效能

滑動視窗

快重傳延遲應答

捎帶應答

滑動視窗

如果我麼每一次傳送乙個資料,都要給乙個ack應答,收到ack應答以後再去傳送下乙個資料(如下圖),那麼我們的效率會比較低,大部分的時間都浪費在等待ack應答上;

既然一發一收的效率比較低,那麼我們可以一次傳送多條資料,這樣使等待的時間重疊在一起,那麼我們就可以大大的提供效能;

丟包:情況一: 資料報已經抵達,ack丟了

這種情況下,部分ack丟了並不要緊,因為後序的ack已經到達了,證明前面的資料主機b已經收到了(如確認1001丟了,但是確認4001到達了對端,證明在4001以前的資料都收到了)

情況二: 資料報丟失

"快重傳"

傳送端連續收到了三個同樣的ack,就會將1001-2000進行重傳;

這是接收端收到1001以後,再次確認的就是7001,因為已經收到了7001之前的,放在了接收緩衝區中;

延遲應答

如果接收資料的主機⽴刻返回ack應答, 這時候返回的窗⼝可能⽐較⼩;

假設接收端緩衝區為1m. ⼀次收到了500k的資料; 

如果⽴刻應答, 返回的窗⼝就是500k; 

但實際上可能處理端處理的速度很快, 10ms之內就把500k資料從緩衝區消費掉了; 

在這種情況下, 接收端處理還遠沒有達到⾃⼰的極限, 即使窗⼝再放⼤⼀些, 也能處理過來; 

如果接收端稍微等⼀會再應答, ⽐如等待200ms再應答, 那麼這個時候返回的窗⼝⼤⼩就是1m;

視窗越大,網路吞吐量就越大,傳輸效率就越高,我們的目的是在保證網路不阻塞的情況下盡量提高傳輸效率;

延遲應答的兩個限制

具體的數量和超時時間,不同的作業系統也有差異,一般n為2,超時時間取2000ms;

捎帶應答

在延遲應答的基礎上, 我們發現, 很多情況下, 客戶端伺服器在應⽤層也是 "⼀發⼀收" 的. 

意味著客戶端給伺服器說了 "how are you", 伺服器也會給客戶端回⼀個 "fine, thank you"; 

那麼這個時候ack就可以搭順⻛⻋, 和伺服器回應的 "fine, thank you" ⼀起回給客戶端;

傳輸協議 TCP

一tcp可靠資料傳輸 1 封裝tcp報文段 2 發出報文後啟動乙個計時器 3 通過校驗和發現資料差錯 4 通過序號重新排序,丟棄重複報文 5 流量控制 tcp的可靠傳說實現機制包括差錯編碼 確認 序號 重傳 計時器等 tcp的可靠資料傳輸是基於滑動視窗協議,但是傳送的視窗大小動態變化 二tcp流量控...

TCP協議如何實現可靠傳輸

1.可靠傳輸的工作原理 停止等待協議 1.使用確認和重傳機制,我們就可以在不可靠的傳輸網路上實現可靠的通訊 2.這種可靠傳輸協議常稱為自動重傳請求arq automatic repeat request 3.arq表明重傳的請求是自動進行的,接收方不需要請求傳送重傳某個出錯的分組。2.停止等待協議的...

TCP 協議如何保證可靠傳輸

一 綜述 1 確認和重傳 接收方收到報文就會確認,傳送方傳送一段時間後沒有收到確認就重傳。2 資料校驗 3 資料合理分片和排序 udp ip資料報大於1500位元組,大於mtu.這個時候傳送方ip層就需要分片 fragmentation 把資料報分成若干片,使每一片都小於mtu.而接收方ip層則需要...