我最近和我的父母一起度过了复活节银行假期,他们的父母住在英国的一个乡村地区。他们有一个(可怕的)ADSL互联网连接,该连接在几公里长的笨拙的铜线上运行,并且当附近的农民将拖拉机拖回电话线时会定期中断。
我注意到他们的路由器反复丢弃pptp
握手,然后重新协商,有效地终止了连接。这真令人沮丧。因此,为了避免发疯,我告诉它将最低可接受的SNR余量和握手速度降低一倍,以降低速度:
$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
U.S. Robotics Wireless MAXg ADSL Gateway
Login: ***********
Password:
> sh
BusyBox v1.00 (2006.02.17-20:30+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.
# adsl configure --snr 200; exit
Connection closed by foreign host.
事情得到了改善,事情变得很稳定(即使非常缓慢),也可以连接到外界:
$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
64 bytes from 8.8.8.8: icmp_seq=0 ttl=55 time=3236.679 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=3699.541 ms
...
大约在这一点上,现实生活介入了,然后我花了几个小时与猫玩耍,在手机上看了猫的gif图像, 实际上是在和家人聊天等等。一天后打ctrl-c
。
显示的摘要统计数据使我感到震惊:
--- 8.8.8.8 ping statistics ---
103074 packets transmitted, 100564 packets received, 2.4% packet loss
round-trip min/avg/max/stddev = 32.986/3034.479/3600577.732/87527.276 ms
如您所见,对到Google的DNS服务器进行跨大西洋短跃的ICMP数据包的最大记录响应时间为3600577.732 ms。这几乎是一个小时,而且肯定比ping
默认超时时间长得多。
地球上怎么这样可以吗?是它准确吗?哪个路由器会愉快地保留一个数据包六十分钟,然后再发送它?为什么这个包没有丢掉?这是8位数据包计数器溢出并产生较大延迟的结果吗?
最后,我想知道英国是否有任何行为准则,说明与RFC 1149和RFC 2549相比,消费者ADSL连接有望具有更少的延迟和更好的流量管理。
ping
源代码(来自〜l 761),我可以看到在随后的计算中忽略了时区(gettimeofday(nv, NULL)
返回纪元微秒)。确实花了一个小时!