如果我尝试使用 Windows 请求页面,此特定网站 (gops.tay.be) 会快速提供对象,但如果尝试使用 Linux,则会非常慢。如果我使用浏览器或 curl,则没有区别:
视窗:
C:\curl>curl http://gops.tay.be/RadControls/Upload/Skins/Office2007/RadUpload.css -w %{time_total} -o 1.txt -s
0,078
Linux:
[root@ ~]# curl http://gops.tay.be/RadControls/Upload/Skins/Office2007/RadUpload.css -w %{time_total} -o 1.txt -s
5.551
[root@ ~]# host gops.tay.be
gops.tay.be has address 194.7.31.58
[root@ ~]# ip -s -o r s c |grep 194.7.31.58
194.7.31.58 from 192.168.252.176 via 192.168.252.254 dev eth0 \ cache used 2 age 2sec ipid 0x26de rtt 98ms rttvar 110ms cwnd 10
194.7.31.58 via 192.168.252.254 dev eth0 src 192.168.252.176 \ cache age 8sec ipid 0x26de rtt 98ms rttvar 110ms cwnd 10
local 192.168.252.176 from 194.7.31.58 dev lo src 192.168.252.176 \ cache <local> used 6 age 2sec iif eth0
在 wireshark 中,两个下载(会话初始化等)似乎完全相同,只是 linux 有tcp.options.wscale.multiplier = 4
而 windows 有256
。gops.tay.be
服务器始终有tcp.options.wscale.multiplier = 1
。
从 Linux 机器下载的任何其他文件都可以正常工作。例如,对于http://cdn.sstatic.net/serverfault/all.css?v=b1f1055f1c12
Linux,其开头为tcp.options.wscale.multiplier = 4
,cdn.sstatic.net
其值为1024
。
什么原因导致这种限制?相比之下,为什么 Windows 系统的下载速度如此之快?
答案1
差异是由于 Linux 中使用了 tcp 时间戳,而 Windows 不使用。关闭它们可解决此问题。
但我不知道为什么您会因为这个选项打开而丢失数据包。