Nagle的算法是一個用來提高網絡效率的系統,尤其是互聯網。該系統涉及避免不必要的小批量發送數據,這也增加了發送的批處理數量。雖然Nagle的算法有其用途,但它與網絡通信的其他元素之間的交互作用很差 Nagle的算法是一個...
Nagle的算法是一個用來提高網絡效率的系統,尤其是互聯網。該系統涉及避免不必要的小批量發送數據,這也增加了發送的批處理數量。雖然Nagle的算法有其用途,但它與網絡通信的其他元素之間的交互作用很差

Nagle的算法是一個用來提高網絡效率的系統,尤其是互聯網一個叫約翰·納格爾的人,納格爾的算法適用于使用TCP/IP協議的網絡。這些協議,或者說是網絡如何傳輸數據的"規則"。雖然這些協議可以應用于任何網絡,但它們最常與互聯網相關聯該算法處理數據以小塊或"數據包"的方式傳輸。每個數據包都包含一些數據加上標頭信息,這相當于物理信封上的發送方和接收方地址。數據包還包含校驗和,一種數學等價物,相當于包括一份裝箱單,以便收件人知道包裹中的所有內容都已安全到達。雖然該系統正常工作良好,但如果數據塊特別小,則可能效率低下。在極端情況下在這種情況下,數據包中的數據可能只有一個字節,但是不管數據的大小,報頭信息將占用40個字節這大致相當于給某人寫一封信,然后把它剪成一個單獨的信封發送。事實上,由于消息是以二進制的形式發送的,它的效率甚至比這個還要低。這不僅浪費了帶寬,還增加了必須發送的包數,Nagle算法的原理是發送一個包后,發送計算機將等待兩個事件中的一個發生,然后再發送下一個包如果它收到最后一個數據包已經收到的確認,它將立即發送它所擁有的數據,而不管它的大小。否則,它將等待直到它有一個"完整"的數據包發送。一旦發生這種情況,它將發送完整的包,而不管前一個包是否已收到在某些情況下,納格爾的算法弊大于利。一個例子是在線視頻游戲,其設計假設數據會立即發送。如果使用納格爾算法,有些數據會被延遲到一個完整的數據包準備好,這會對玩家的反應速度產生明顯的影響,并且會有效地降低玩家的反應速度。