TCP_NODELAY 和 TCP_CORK主要區別

一句話總結:node

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

tcp_cork:它是一種增強的nagle算法,過程和nagle算法相似,都是累計數據而後發送。但它沒有 nagle中1的限制,因此,在設置cork後,即便全部ack都已經收到,但我仍是不想發送數據,我還想繼續等待應用層更多的數據,因此它的效果比nagle更好。效率上與Nagle算法相比,Nagle算法主要避免網絡由於太多的小包(協議頭的比例很是之大)而擁塞,而CORK算法則是爲了提升網絡的利用率,使得整體上協議頭佔用的比例儘量的小網絡

 

tcp_cork使用方法tcp

 

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)); /* 拔去塞子 ,發送數據*/ spa

相關文章
相關標籤/搜索