TCP/IP——TCP協議中提高網路利用率的機制

readyao發表於2016-05-04

TCP協議中提高網路利用率的機制主要有:Nagle演算法,延遲確認應答,捎帶應答

  • Nagle演算法
TCP中為了提高網路利用率,經常使用一個叫Nagle的演算法。

該演算法是指傳送端即使還有應該傳送的資料,但如果這部分資料很少的話,則進行延遲傳送的一種處理機制。
具體來講就是,只有在滿足下面兩個條件其中一個的時候,才可以傳送資料。否則,暫停等待一段時間之後再傳送。
1、已經傳送的資料都已經收到確認應答。
2、可以傳送最大段長度(MSS)的資料時。

根據這個演算法雖然網路利用率可以提高,但是可能會發生某種程度的延遲。為此,在視窗系統(X Window System)和機械控制等領域中使用TCP時,往往會關閉對該演算法的啟用。

  • 延遲確認應答
接收資料的主機如果每次都立刻回覆確認應答的話,可能會返回一個較小的視窗。那是因為剛接收完資料,緩衝區已滿。
當某個傳送端收到這個小視窗的通知的以後,會以它為上限傳送資料,從而降低了網路的利用率。為此,引入了一個方法,那就是收到資料以後並不立即返回確認應答,而是延遲一段時間的機制。

1、在收到2*MSS大小的資料之前不做確認應答。(根據作業系統的不同,有時候不論資料的大小,只要收到兩個包就立即返回確認應答)
2、其它情況下,最大延遲0.5秒傳送確認應答。(很多作業系統設定為0.2秒左右)

事實上,沒有必要為每一個資料段都進行一次確認應答。TCP採用滑動視窗的控制機制,因此通常確認應答少一些也無妨。TCP檔案傳輸中,絕大多數是每兩個資料段返回一次確認應答。

  • 捎帶應答
根據應用層協議,傳送出去的訊息到達對端,對端進行處理以後,會返回一個回執。
例如,電子郵件協議的SMTP或POP、檔案傳輸協議FTP中的連線控制部分等。

在此類通訊中,TCP的確認資料和回執資料可以通過一個包傳送。這種方式叫做捎帶應答。通過這種機制,可以使收發的資料量減少。
此外,接收資料之後,如果立刻返回確認應答,就無法實現捎帶應答。也就是說,如果沒有啟用延遲確認應答就無法實現捎帶應答。延遲確認應答是能夠提高網路利用率從而降低計算機處理負荷的一種較優的處理機制。

正是因為延遲確認和捎帶應答機制,讓TCP斷開連線的時候四次揮手有時候變成三次揮手
因為,如果在TCP斷開連線的時候,有時候只能夠抓取3個資料包。這三個資料包為客戶端的FIN,伺服器的FIN和ACK,客戶端的ACK。



相關文章