Nagle算法
如果在一个TCP连接上,客户端每次只发送一个字节到服务器,这就产生一些41字节的分组:20字节的IP首部、20字节的TCP首部和一个字节的数据。在局域网上,这些小分组通常不会引起麻烦,因为局域网一般不会出现拥塞。但在广域网上,这些小分组则会增加拥塞出现的可能。一种简单和好的方法就是采用Nagle算法。
Nagle算法要求一个TCP连接上同一时刻最多只能有一个未被确认的小分组,在该分组的确认到达之前不能发送其他的小分组。相反,TCP收集这些少量的小分组,并在确认到来时以一个分组的方式发送出去。
关闭Nagle算法
有时我们也需要关闭Nagle算法。一个典型的例子是X窗口系统服务器:小消息(鼠标移动)必须无时延地发送,以便为进行某种操作的交互用户提供实时的反馈。
插口API用户可以使用TCP_NODELAY选项来关闭Nagle算法。