Skip to content

Nagle’s Algorithm

問題

當封包太小時(例如: 1 byte),會有以下問題:

  1. 浪費:目標是傳遞 1 byte 的訊息,但是實際傳輸是 header + 1 byte。
  2. 在較慢的網路環境下,會讓這些封包在同一時間送出。

做法

搜集一定程度大小才傳送。

MSS = Maximum Segment Size

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

(from wiki:納格演算法)

不能使用的地方

  • ssh:每打一個字就要立刻有反應

Changelog

Just observe 👀