![连接慢但连接后速度很快](https://linux22.com/image/1453932/%E8%BF%9E%E6%8E%A5%E6%85%A2%E4%BD%86%E8%BF%9E%E6%8E%A5%E5%90%8E%E9%80%9F%E5%BA%A6%E5%BE%88%E5%BF%AB.png)
我遇到了一种有趣的缓慢连接建立问题,想请教更多相关人士,了解导致这种情况的原因以及如何排除故障。(就我而言,我是一名 IT 学生,对计算机和网络相当有经验)
在我的网络上,我们有一个连接到互联网的路由器,并通过无线 802.11n 为多个设备提供服务。与其他 WiFi 有一些干扰,但通常连接很稳定。而且所有设备都在一个房间内,距离天线不到 5 米,没有任何阻挡。
有时一切正常,有时连接需要长达 30 秒才能完成握手,但一旦完成,连接速度就会高达 20MBit/s。
您可以在 steam 等下载中看到这一点,当一个包清除时,图表每 10 秒左右就会出现一次峰值。但是一旦建立初始连接,youtube 视频或 http 下载就很快。
无论设备或操作系统(Windows、Linux、Android)如何,都会发生这种情况,重新启动路由器,刷新 DNS 都无法解决该问题。
向 IP 或域发送 ping 需要不到 50 毫秒的时间,并且聊天系统(可能使用套接字)运行良好。
虽然这似乎不是一个 DNS 问题,但第二次加载完全相同的页面会导致连接速度更快。
- mysite.com?page=1(10 秒)
- mysite.com?page=2(10 秒)
- mysite.com?page=1(0.5 秒)
我很好奇是什么原因造成的,以及我可以使用什么工具来分析它。这个问题更适合我了解其背后的技术背景,我很想得到一个关于技术细节的答案。
如果您需要更多详细信息,我很乐意提供!
答案1
我也认为你的 DNS 有问题。你的评论
Windows 上的 nslookup 可在一秒内清除随机域名
无法缓解这些恐惧。我可以提供一个测试和一个解决方案。
加密是一个非常有用的软件包,由 OpenDNS.org 的优秀人员开发,它不仅可以更改 DNS 端口,还可以加密DNS 查询。这里的重点是,您的 ISP 可能已启用自己的 DNS 和防火墙系统,该系统可根据端口和/或协议识别 DNS 查询,因此仅更改端口是行不通的。加密将允许您绕过 ISP 的 DNS。在网站上,您将找到适用于 Windows 和 MacO 的下载包。安装一个,看看是否有任何变化。
如果这种方法行得通,最简单的解决方案就是在 ISP 提供的路由器后面安装自己的路由器,并通过这个新路由器路由所有流量。为此,您可以使用适当制作的 Linux 版本(即使是像我一样在旧的二手硬件上),或者购买一个与Shibby 拍摄的番茄固件,你可能会发现此处列出。此固件具有 dnscrypt,您可以根据需要进行配置,例如这里。
答案2
这也可能是 IPv6 的问题。也许您的浏览器尝试通过 IPv6 连接,并等到超时后再重试 IPv4。
话虽如此,我还相信这是一个 DNS 问题。
您能尝试通过 telnet 直接与 HTTP 服务器通信吗?
类似的东西telnet www.google.com 80
应该可以做到。然后看看连接需要多长时间,并注意它是尝试通过 IPv4 还是 IPv6 进行连接。
一旦连接,您就可以执行这样的手动 HTTP 查询并再次监视响应时间。
GET / HTTP/1.1
Host: www.google.com
Connection: Close
最后一行必须以 2 个换行符结束才能触发服务器响应。