我意识到这可能是一个无法回答的问题,但我还是想说:
我有一块嵌入式主板,我为它编写了大量软件;可以通过网络浏览器向该主板发送新的固件映像(此处的图像不是图片,而是将在主板上运行的软件的更新)。网络浏览器在普通计算机上运行,由嵌入式主板提供服务。因此,您在计算机上打开浏览器,输入嵌入式主板的 IP 地址,嵌入式主板就会提供一个页面,让您为该嵌入式主板选择新的固件映像。
现在,我一直在 Linux 上开发这个;我的意思是嵌入式板的软件,因此我使用的浏览器一直在我的 Linux 机器上。当我尝试在 Windows 上重复这个时,速度非常慢!
用Wireshark查看,Windows机器发出一个包含新固件数据的数据包,嵌入式板在400μs(四百微秒)后发出一个ACK。Windows机器立即发出下一个数据包,几百微秒后再次返回ACK。
然而,这一四个数据包突发之后的下一个数据包是在五秒后发送的,并且会重复快速的四个数据包序列。
这种情况持续下去,先是四个数据包的突发,然后是五秒的间隔。当你有一个 586K 的文件时,这会使它变得非常慢。
如果使用 Linux 机器发送文件,则需要几秒钟才能发送整个图像。
我在两台 Windows 机器和两台 Linux 机器上尝试过这个方法,结果相同。我已经多年没有“正确”使用过 Windows 了,而且我完全不知道该怎么使用它。我想知道这是否是防火墙问题(但为什么它会让东西通过,尽管速度很慢?)。
有人能解释一下这个问题或提出建议吗?我很想告诉我的客户只使用 Linux,但我认为这不会有什么效果!;~)
编辑:
我添加了 pcap 文件以防它们有帮助。请注意,我中途停止了 Windows,因为它太慢了。Linux 完成了文件传输。 Windows 慢速上传 pcap
答案1
好的,搞定了。我的软件中 TCP Win 大小是这样的。我增加了它,现在它在两个平台上都可以正常工作了。以防其他人遇到这种情况……