如果我正在以4KB的增量进行大量传输和Flush(),应用程序是否会发送2个完整数据包和第3个部分数据包,还是等待填充直到第3个数据包已满?
所以我的问题是,我是否应该以数据包有效负载大小的倍数进行刷新?
谢谢: - )
答案 0 :(得分:0)
应用程序无法控制数据包的传输方式(我假设您使用TCP套接字发送文件)。因此,基于TCP的窗口大小发送分组。窗口大小由不同因素决定:MSS(最大段大小),网络状态(是否存在拥塞)以及接收方处理数据包的速度。
然而,让我们假设4096字节将被分段为1460(1),1460(2)和1176(3)(假设MSS = 1460并且窗口大小= MSS(固定))。如果启用Nagle算法,将立即发送1460(1)因为它是第一个段,将立即发送1460(2)因为= MSS和1176(3)将被延迟,直到TCP收到先前段的确认。