在我的局域网中,我有一台运行Samba服务器的路由器,我的电脑连接到路由器。
我在上传到服务器和从服务器上下载的过程中发出了疑问。
wireshar结果显示:
结果,下载产生大约120000帧,而上传仅产生70000帧。 下载速率约为12.7Mbytes / s,上传速度为20Mbyte / s。
所以我想弄清楚这个可能的原因。
主要有两种机制来减less返回的ACK数据包数量 – Naglealgorithm和Delayed ACKs(均在RFC 1122中描述)。 两者都是可选的,所以会有主机被configuration为不使用它们或缺less适当的实现。 特别是可以指示Samba通过在configuration中使用socket options = TCP_NODELAY来禁用Naglealgorithm 。
您在SMB文件副本的上游/下游数据速率方面的差异很可能是除了大量的TCP ACK数据包之外的其他原因。
TCP实现确认每隔一个数据包。 所以通常应该看到收到两个数据包,然后发送一个ACK。 发送方当然不会等待ACK。 即使在没有ACK的情况下,它也会继续传输,直到窗口满了。
这里还有其他一些潜在的因素,比如Nagle和延迟ACK。 但是看起来你并没有看到它们的影响。