最佳缓冲区大小 - TCP

时间:2011-07-11 15:55:18

标签: .net tcp

如果我正在以4KB的增量进行大量传输和Flush(),应用程序是否会发送2个完整数据包和第3个部分数据包,还是等待填充直到第3个数据包已满?

所以我的问题是,我是否应该以数据包有效负载大小的倍数进行刷新?

谢谢: - )

1 个答案:

答案 0 :(得分:0)

应用程序无法控制数据包的传输方式(我假设您使用TCP套接字发送文件)。因此,基于TCP的窗口大小发送分组。窗口大小由不同因素决定:MSS(最大段大小),网络状态(是否存在拥塞)以及接收方处理数据包的速度。

然而,让我们假设4096字节将被分段为1460(1),1460(2)和1176(3)(假设MSS = 1460并且窗口大小= MSS(固定))。如果启用Nagle算法,将立即发送1460(1)因为它是第一个段,将立即发送1460(2)因为= MSS和1176(3)将被延迟,直到TCP收到先前段的确认。