编辑:我在其他地方使用 ADSL 连接也见过这个问题,不仅仅是 USB 调制解调器或蜂窝网络。
我已经连接并配置了蜂窝网络 USB 调制解调器,在 Ubuntu 10.04 下运行。虽然数据流良好,但连接总体上很慢建立连接后,问题是实际建立连接需要的时间太长。IP 查找速度非常快,所以这根本不是问题。我试过 ssh、skype 和 FTP。这些都没有问题。
问题主要出现在 HTTP 连接中,尤其是包含从多个来源收集的大量资源的网站,最终这些资源(图像、CSS 或 JS 文件)中的一个或两个加载失败,浏览器会持续报告“正在等待 example.com ...”,然后冻结并继续等待加载此单个资源。我想这可能是一个线索。我尝试了 Firefox 以外的浏览器:Chrome 和 Opera,问题也存在!
幕后到底发生了什么?欢迎提问。
答案1
如果 HTTP 以外的其他服务运行良好,则可能是您的 Internet 提供商正在使用过载的反向代理来缓存内容并节省带宽。您可以尝试连接到在非标准上运行的远程 HTTP 服务器(但 ISP 可以使用第 7 层防火墙拦截您的请求)或在某处设置 openvpn 服务器并通过它传输所有流量。
答案2
蜂窝网络可能具有较高的延迟,因此您的数据包往返时间可能高达一秒。只需通过向具有已知恒定延迟的某个互联网主机发出 ping 即可检查,例如:
# ping www.gogle.de
PING www.l.google.com (74.125.79.99) 56(84) bytes of data.
64 bytes from ey-in-f99.1e100.net (74.125.79.99): icmp_seq=1 ttl=53 time=12.7 ms
64 bytes from ey-in-f99.1e100.net (74.125.79.99): icmp_seq=2 ttl=53 time=16.1 ms
64 bytes from ey-in-f99.1e100.net (74.125.79.99): icmp_seq=3 ttl=53 time=17.2 ms
^C
--- www.l.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 12.794/15.377/17.218/1.886 ms
TCP 能够适应高延迟网络,因为它具有内部缓冲功能,并且能够发送大量数据而无需立即收到响应,因此您可能会看到使用您的连接进行批量传输时具有良好的吞吐率。但高延迟当然会极大地影响 TCP 握手(即连接启动)和每个“乒乓式”协议的性能,在这些协议中,一方在进行任何进一步处理之前会等待另一方的响应(例如 HTTP,其中有许多小对象需要获取,如果它们相互依赖,情况会更糟,就像框架和 iframe 以及包含的 javascript 文件的情况一样)。
编辑:你应该使用类似的东西萤火虫了解正在发生的情况。或者运行Wireshark跟踪协议级信息。如果您收到指向 ISP 问题的数据,您可能想向他们投诉。除此之外,使用较小的 MTU可能值得一试——一些变速器可能会受到MTU 黑洞。
答案3
您应该调查 DNS 设置。如果 IP 查找速度很快,那么您可能正在等待速度较慢的 DNS 服务器的响应,或者您配置为轮询多个 DNS 服务器,而前几个服务器已关闭/无响应。在 Ubuntu 上,您可以编辑 /etc/resolv.conf 以暂时地更改您的 DNS 设置。首先删除文件中的所有内容,然后将其替换为:
nameserver 8.8.8.8
nameserver 8.8.4.4
如果您的 USB 浏览情况有所改善,那么 USB 调制解调器的 DNS 配置就是导致您遇到麻烦的原因。
答案4
在蜂窝网络上,在后台保持恒定的数据流(例如互联网广播流)实际上有助于降低所有流量的延迟。这与蜂窝网络如何调度数据包有关。持续使用网络,您将获得更好的服务。