納格算法

维基百科,自由的百科全书
跳转至: 导航搜索

納格演算法是以減少封包傳送量來增進TCP/IP網路的效能。 它是由約翰.納格任職於Ford Aerospace時命名。

納格的文件,Congestion Control in IP/TCP Internetworks (RFC896) 描述了他所謂的「小封包問題」-某個應用程式不斷地送出小單位的資料,且某些常只佔1位元組大小。 因為TCP封包具有40位元組的標頭資訊(TCP與IPv4各佔20位元組),這導致了41位元組大小的封包只有1位元組的可用資訊,造成龐大的浪費。 這種狀況常常發生於Telnet工作階段-大部分的鍵盤操作會產生1位元組的資料並馬上送出。 更糟的是,在慢速的網路連線下,這類的封包會大量地在同一時點傳輸,造成壅塞碰撞(Congestion Collapse)。

納格演算法的工作方式是合併(coalescing)一定數量的輸出資料後一次送出。特別的是,只要有已送出的封包尚未確認,傳送者會持續緩衝封包,直到累積一定數量的資料才送出。

演算法[编辑]

 if 有新資料要傳送
   if 訊窗大小 >= MSS and 可傳送的資料 >= MSS
     立刻傳送完整MSS大小的segment
   else
    if 管線中有尚未確認的資料
      在下一個確認(ACK)封包收到前,將資料排進緩衝區佇列
    else
      立即傳送資料  

MSS = 最大segment大小

外部連結[编辑]