一句话总结: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