Nagle’s Algorithm
問題
當封包太小時(例如: 1 byte),會有以下問題:
- 浪費:目標是傳遞 1 byte 的訊息,但是實際傳輸是 header + 1 byte。
- 在較慢的網路環境下,會讓這些封包在同一時間送出。
做法
搜集一定程度大小才傳送。
MSS = Maximum Segment Size
if 有新資料要傳送
if 訊窗大小>= MSS and 可傳送的資料>= MSS
立刻傳送完整 MSS 大小的segment
else
if 管線中有尚未確認的資料
在下一個確認(ACK)封包收到前,將資料排進緩衝區佇列
else
立即傳送資料
(from wiki:納格演算法)
不能使用的地方
- ssh:每打一個字就要立刻有反應