http://www.cnblogs.com/ggjucheng/archive/2012/01/15/2323068.html
如果是异步socket 呢?内核会等待这个间隔吗?
nagle算法的ack发送时机:
http://blog.csdn.net/turkeyzhou/article/details/6764389
http://wenku.baidu.com/view/fbfda71aa300a6c30c229f99.html
http://www.360doc.com/content/12/0320/14/8426738_195950612.shtml
http://blog.csdn.net/dog250/article/details/5941637
http://hi.baidu.com/zzcqh/item/144ddaedd004ccd3ea34c912
so?
nagle 算法是 发送端 收到前一个报文的确认然后再发送下一个tcp数据。这样可以避免大量的小数据。 TCP_NODELAY选项控制。
Delay ACK是 接收端 在等待超时(还有其他发送ack确认的时机) 然后才发送ACK给客户端。
CORK算法 是 发送端 尽可能的进行数据的组包,以最大mtu传输,如果发送的数据包大小过小则如果在0.6~0.8S范围内都没能组装成一个MTU时,直接发送。
如果发送的数据包大小足够间隔在0.45内时,每次组装一个MTU进行发送。如果间隔大于0.4~0.8S则,每过来一个数据包就直接发送。TCP_CORK选项控制。
禁用nagle算法 导致小片数据包多 但是ack确认的返回的机制仍旧不变(Delay ACK)。