TCP_CORK的影响

时间:2011-09-29 16:36:30

标签: sockets tcp size ip

我有一个用例,我通过TCP / IP向一个方向发送数据。我通过多个send()进行此操作 - 调用非常小(与以太网帧的大小相关)有效负载(没有send()调用的任何标志)。为了防止我的小有效负载数据包膨胀到一个完整的以太网帧的大小,我认为使用TCP_CORK套接字选项会很好。这有效,但在实际比较使用TCP_CORK之前和之后的情况时,我注意到这种聚合已经完成了。为什么会这样?正如我所说,我没有使用任何标志send()(如MSG_MORE)或其他套接字选项,所以我原本期望我的原始解决方案是浪费。

1 个答案:

答案 0 :(得分:2)

如果您非常快速地发送消息,您可能会看到Nagle算法在工作。您必须明确禁用它。在linux中Iirc你必须设置TCP_NODELAY,但在其他操作系统中有不同的选项。