nagle算法和延迟ACK
生活随笔
收集整理的這篇文章主要介紹了
nagle算法和延迟ACK
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ? ?nagle算法主要是避免發送小的數據包,要求TCP連接最多只能有一個未被確認的小分組,在該分組的確認到達之前不能發送其他的小分組,由于發送小分組時,包頭會占很大的比重,所以會使TCP得傳輸效率降低。
? ? ? ? ?延遲ACK:對于對等方數據的ACK確認,將由本端下次傳輸數據時隨著數據一起攜帶過去,也是稱捎帶。但有一個超時時間,當超時時間過了以后,還有本端還是沒有數據傳輸過去,則將ACK單獨發送過去。其主要目的也是為了提高TCP傳輸效率。
? ? ? ? 但是nagle算法遇上延遲ACK時,這就變的有趣了。發送端利用nagle算法發送一個數據包,在某些情況下接受端要回復消息給發送端,這時由于接收端沒有回復ACK消息,所以發送端也不會繼續發送消息。當接收的延遲ACK超時之后才會回復發送端ACK,這時候發送端才會開始繼續發送數據,這會傳輸速率降低,因為每次都延遲ACK的超時時間。故這時發送端應該禁掉nagle算法。
? ? ? ? 發送端的應用程序每次調用send函數拷貝一個小包到發送緩沖區,這需要用到系統調用,會進行上下文切換,這本身也會耗費資源,發送端應用程序如果可行,應該先將數據在應用程序進行累積,然后更少調用send函數,減少資源的耗費。
參考資料:高級TCP/IP編程
? ? ? ? ?
總結
以上是生活随笔為你收集整理的nagle算法和延迟ACK的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 暗杀TIME-WAIT
- 下一篇: UDP调用connect