TCP_NODELAY 和 TCP_CORK主要區別


一句話總結:

tcp_nodelay:禁止nagle算法,有需要發送的就立即發送,比較常見

tcp_cork:它是一種加強的nagle算法,過程和nagle算法類似,都是累計數據然后發送。但它沒有 nagle中1的限制,所以,在設置cork后,即使所有ack都已經收到,但我還是不想發送數據,我還想繼續等待應用層更多的數據,所以它的效果比nagle更好。效率上與Nagle算法相比,Nagle算法主要避免網絡因為太多的小包(協議頭的比例非常之大)而擁塞,而CORK算法則是為了提高網絡的利用率,使得總體上協議頭占用的比例盡可能的小

 

tcp_cork使用方法

 

int on = 1; 
setsockopt (fd, SOL_TCP, TCP_CORK, &on, sizeof (on)); /* 設置cork */ 
write (fd, …); 
...
sendfile (fd, …); 
… 
on = 0; 
setsockopt (fd, SOL_TCP, TCP_CORK, &on, sizeof (on)); /* 拔去塞子 ,發送數據*/ 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM