tcp協議之 nagle算法

 1. nagle算法主要目的是減小網絡流量,當你發送的數據包過小時,TCP並不當即發送該數據包,而是緩存起來直到數據包
   到達必定大小後才發送。算法

 2. 當應用程序每次發送的數據很小,特別是只發送1個字節,加上TCP和IP頭的封裝,TCP頭佔20個字節,IP頭也佔20個字      節,這時候發一個包是41個字節,效率過低。而nagle算法容許計算機緩衝數據,當數據緩存到必定長度後,若是以前發送     的數據獲得了ACK確認且接收方有足夠空間容納數據 (固然也要考慮MSS),就發送這些數據,不然繼續等待。緩存

 3.  TCP socket提供了關閉nagle算法的接口,能夠經過TCP_NODELAY選項決定是否開啓該算法。  網絡

wikipedia上面關於這個算法的資料:http://en.wikipedia.org/wiki/Nagle's_algorithmsocket

wikipedia上有一段nagle的僞代碼便於理解:spa

if there is new data to send
     
if the window size >= MSS and available data is >= MSS
       send complete MSS segment now
     
else
       
if there is unconfirmed data still in the pipe
         enqueue data 
in the buffer until an acknowledge is received
       
else
         send data immediately
       end 
if
     end 
if
   end 
if 
接口

相關文章
相關標籤/搜索