网络诊断小结

网络诊断小结

今天实在无法忍受宽带(电信)访问国外服务器时的速度,或者说已经接近于断开的情况了,做了一点网络诊断。这里记录一下过程,以便于之后再查错用:

我这里的情况好像是美国方向非常堵,日本方向好一些

测试环境是Windows,测试所用网站是github和AWS Japan

  1. 先看一下DNS,这个一般是不太影响网速的,因为它只负责解析域名这一部分,它在网络延迟中占的比例很小,而且电脑都有DNS缓存,不是每一次访问都需要访问DNS服务器的,但是不良的DNS的确可能不能找到离用户最近的服务器(一般指cdn站点),而且恶意的DNS还可能有DNS劫持,况且运营商DNS劫持弹广告这种也挺常见的,知乎有个讨论如何解决DNS劫持,所以还是换成大DNS提供商靠谱,国内我一般用114.114.114.114,出国用8.8.8.8

  2. 再打开路由器管理界面看一下现在的使用情况,没开玩笑····可能你会发现有其他人在P2P下载什么的,不是运营商的锅。(但其实这种情况比较少,感觉主要还是出口带宽的问题)

  3. ping,这个在Windows和ubuntu里都是一样的,只能看延迟和丢包率

  4. tracert,这是Windows里使用的指令,Linux里对应的叫traceroute.

    网络诊断小结_第1张图片

    来源: https://www.cnblogs.com/godtrue/p/5882541.html

    最左侧的,1,2,3,4~8,表明在我使用的宽带(北京宽带)上,经过7(不算自己本地的)个路由节点,可以到达百度的服务;如果是电信可能有不同;其他的IP,也有可能不同;各位可以自行测试一下;

    中间的三列,单位是ms,表示我们连接到每个路由节点的速度,返回速度和多次链接反馈的平均值;

    后面的IP,就是每个路由节点对应的IP,每个IP代表什么

    tracert的原理值得一看:

    首先,tracert送出一个TTL是1的IP 数据包到目的地,当路径上的第一个路由器收到这个数据包时,它将TTL减1。此时,TTL变为0,所以该路由器会将此数据包丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),tracert 收到这个消息后,便知道这个路由器存在于这个路径上,接着tracert 再送出另一个TTL是2 的数据包,发现第2 个路由器...... tracert 每次将送出的数据包的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个数据包 抵达目的地。当数据包到达目的地后,该主机则不会送回ICMP time exceeded消息,一旦到达目的地,由于tracert通过UDP数据包向不常见端口(30000以上)发送数据包,因此会收到「ICMP port unreachable」消息,故可判断到达目的地。

    tracert 有一个固定的时间等待响应(ICMP TTL到期消息)。如果这个时间过了,它将打印出一系列的*号表明:在这个路径上,这个设备不能在给定的时间内发出ICMP TTL到期消息的响应。然后,Tracert给TTL记数器加1,继续进行。
    ————————————————
    版权声明:本文为CSDN博主「Tasfa」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_30135181/article/details/50992151

    但是也不能看链路上有超时就认为是不通(当然我这个图是真的不通,汗),这种的典型是这里的这种,就是目标服务器是通的,但是半路不通,这种一般是运营商的路由器设置不允许Ping或者设置ttl过期的时候不返回消息 ,但是像我上图那样30跳之后还是不能到,就是不通无疑了

    • 使用tracert来检测国内网站,例如百度,还发现了一个有趣的现象:

    网络诊断小结_第2张图片

    这个是什么呢,网上有文章说,这是 电信上网用户的IP反向解析地址 。IP反向解析的相关知识可以看这篇博客: https://www.cnblogs.com/kasumi/p/6117941.html

    • tracert还有很多参数可以控制:

      来源: https://www.cnblogs.com/godtrue/p/5882541.html

      tracert命令的格式为:tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name。

      ①、-d

      表示不将地址解析成主机名。

      ②、-h maximum_hops

      表示搜索目标的最大跃点数。

      ③、-j host-list

      表示与主机列表一起的松散源路由(仅适用于IPv4)。

      ④、-w timeout

      表示等待每个回复的超时间(以毫秒为单位)。

      ⑤、-R

      表示跟踪往返行程路径(仅适用于IPv6)。

      ⑥、-S srcaddr

      表示要使用的源地址(仅适用于IPv6)。

      ⑦、-4和-6

      表示强制使用IPv4或者IPv6。

      ⑧、target_name

      表示目标主机的名称或者IP地址。

  5. 再说一些相关的小工具吧:

    1. 查看自己的网络对IPV6的支持程度: http://www.test-ipv6.com/
    2. 检测ip在国内的访问速度,有图形化的展示:http://tool.chinaz.com/speedtest/ 。实测还是比较靠谱的
    3. 检测Ip地址的物理地址: http://ip.tool.chinaz.com/
  6. v2ex这里对于国际带宽问题有一个讨论,可以康康: https://www.v2ex.com/t/213468

  7. 一点经验之谈:

    • 这里不讨论访问国内网站,因为有cdn,国内带宽也比较富裕,体验还是很好的

    • 联通访问国际线路比电信好

    • 需要下载文件的话,可以买一台延迟比较低的区域(日本、香港)的云机器,通过命令行下载,然后scp下载到本地。

      当然命令行直接下载对许多网站是不行的,可以试着给服务器安个桌面,然后通过teamviwer等等连接上去,指挥服务器通过浏览器进行下载,然后再scp传回本地(这只是我的想法,还没有试过)

      当然有一个比scp传输更好的方法,也是我总结出来的、目前来看在国内使用的最优解,就是通过远程桌面下载后将文件上传到QQ邮箱文件中转站!速度快、容量大,比百度网盘之流高到不知道哪里去了

你可能感兴趣的:(网络诊断小结)