工控网络基础入门篇之 Ping 、 TCPing、 traceroute 命令

Ping 命令

Ping 命令,是一个基于网络层 (比传输层还底层) 的 ICMP(Internet Control Message Protocol) 协议的命 令,主要用于检测和目标主机之间的网络是否通畅,以及网络的延时。Ping 命令的使用非常简单,开始, 运行,cmd,回车,打开命令提示符 ( linux 用户应该不需要教你们怎么打开 terminal),“ping IP 地址”,或者 “ping 网站域名”。Ping 命令的解读实在太人性化了,也没必要再解释了。 

ping 命令我们一般很少加别的参数运行,windows 下默认 ping 只运行 4 次,加上参数 “-t” 后可以让 命令持续运行,直到我们手工停止。 

但是前几年,有一种很流行的网络攻击手段就是利用 ping 命令进行的,所以很多主机现在都会在防火墙规则里禁止 ping 响应,即使你可以访问网站也未必就可以 ping 通。这种情况下我们可以利用另一个 tcping 工具,通过对远程服务器的 TCP 端口的通畅与否进行检测,来判断网络的畅通。tcping 在 windows 和 linux 系统中都不是内建的命令,需要我们自己去下载,TCPING 的官方网站在这里。 

TCPing 命令

TCPing 的命令参数和使用方法和 Ping 很相似,主要的区别是 Ping 是通过既有的 ICMP 协议进行,而 TCPing 是通过 TCP 协议进行,所以可以再最后加入一个端口参数,对服务器的不同端口进行探测,例如 网页服务器默认是探测 80 端口 (不指定端口时默认就是 80),而邮件服务器可以探测 SMTP 的 25 端口。 基本上对于一个网站来说,80 端口是不可能关闭的,所以我们一般会用 TCPing 来代替 Ping 对本地 到服务器之间的网络通断进行探测。

traceroute 命令

路由表决定了两个 IP 之间的连接最终是通过那些节点连接起来的。如果我们想要查看两个 IP 之间的连接实际经过了哪些节点,就可以借助 traceroute 命令来查看。traceroute 命令的使用非常简单,“traceroute+ 目标 IP” 然后就会开始追踪出你和目 标 IP 之间经过的路由节点了,当然你也可以直接用 “traceroute+ 域名” 的方式,前提是你执行 traceroute 命 令的机器有个正常工作的 DNS 系统,能正常解析域名。 

在 windows 下,有一个等效的命令叫做 “tracert”。如果你有兴趣的话,可以去这个页面看看 traceroute 的详细解释。我们在 windows 下用 tracert 命令跟踪一下 twitter.com 试试: 

 通过翻墙路由的 tracert 

第三行的目标 IP 因为是我 VPN 服务器的 IP,所以抹黑隐藏掉。可以看到,tracert 会对每一个节点发 出 3 次探测包,并检查每一次节点响应的速度,但这三次探测并不一定每一次都会有响应,于是就出现 了星号 “*”。一般来说,如果到一个节点之后出现了 3 个星号,就意味着到这个节点之后网路已经中断了 (大部分是被 GFW 通过静态路由丢弃了)。但也有可能是某些节点因为自身的设置不响应 tracert 的探测, 碰到这种情况继续等待一下,如果在等待过几个节点之后探测信息又恢复了,那说明只是个别节点不响 应而已,但网路还是通的。 

而对于没有 VPN 转发的普通中国网路来说,到 twitter 的通路一般都是断的,结果会是这样:

 可以看到从第六个几点之后就再也没有跟踪信息了,通过一些查 IP 的网站我们可以看到,最后一个 节点 “221.176.18.114” 是中国移动的骨干网,也就是说我们对 twitter 的访问在这个位置被路由丢弃了,根 本就没达到国外,更不要说 twitter 的服务器了。