一句話總結: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