Nagle's algorithm

    

    Nagle算法是以他的發明人John Nagle的名字命名的,它用於自動鏈接許多的小緩衝器消息;這一過程(稱爲nagling)經過減小必須發送包的個數來增長網絡軟件系統的效率。Nagle算法於1984年定義爲福特航空和通訊公司IP/TCP擁塞控制方法,這是福特經營的最先的專用TCP/IP 網絡減小擁塞控制,從那之後這一方法獲得了普遍應用。Nagle的文檔裏定義了處理他所謂的小包問題的方法,這種問題指的是應用程序一次產生一字節數據, 這樣會致使網絡因爲太多的包而過載(一個常見的狀況是發送端的"愚蠢窗口綜合症")。從鍵盤輸入的一個字符,佔用一個字節,可能在傳輸上形成41字節的 包,其中包括1字節的有用信息和40字節的標題數據。這種狀況轉變成了4000%的消耗,這樣的狀況對於輕負載的網絡來講仍是能夠接受的,可是重負載的福 特網絡就受不了了,它沒有必要在通過節點和網關的時候重發,致使包丟失和妨礙傳輸速度。吞吐量可能會妨礙甚至在必定程度上會致使鏈接失敗。Nagle的算 法一般會在TCP程 序裏添加兩行代碼,在未確認數據發送的時候讓發送器把數據送到緩存裏。任何數據隨後繼續直到獲得明顯的數據確認或者直到攢到了必定數量的數據了再發包。盡 管Nagle的算法解決的問題只是侷限於福特網絡,然而一樣的問題也可能出如今ARPANet。這種方法在包括因特網在內的整個網絡裏獲得了推廣,成爲了 默認的執行方式,儘管在高互動環境下有些時候是沒必要要的,例如在客戶/服務器情形下。在這種狀況下,nagling能夠經過使用TCP_NODELAY 插座選項關閉。 算法

相關文章
相關標籤/搜索