网络排错与查看命令——两主机间各节点分析:traceroute

1.前言

之前我们谈到的命令大多数都是针对主机的网络参数设置的,而ping是两台主机之间的连通性判断
那么有没有命令可以跟踪两台主机之间通过的各个节点(node)的通信状况的好坏呢?
判断是自己的网络有问题还是外部的Internet有问题,这个时候就要使用traceroute命令

2.使用方法如下

traceroute [选项与参数] IP

-n 可以不必进行主机的名称解析,单纯用IP,速度较快
-U 使用UDP的port 33434来进行检测,这是默认的检测协议
-I 使用ICMP的方式来进行检测
-T 使用TCP来进行检测,一般使用port 80测试
-w 若对方主机在几秒钟没有回应就声明不通,默认是5s
-p 端口号 若不想使用UDP与TCP的默认端口号来检测,可以在此改变端口号
-i 设备 用在比较复杂的环境,如果网络接口很多比较复杂时,才会用到这个参数。举例来说,如果我有两条ADSL可以连接到外,那么我的主机就会有两个ppp,我可以用-i 来选择是ppp0还是ppp1
-g 路由 与-i参数相仿,只是-g后面接的是gateway的IP就是了

3.举例

示例一:检测本机至baidu去的各节点的连接状态
网络排错与查看命令——两主机间各节点分析:traceroute_第1张图片
网络排错与查看命令——两主机间各节点分析:traceroute_第2张图片
注意:traceroute这个命令会针对预连接的目标的所有node进行UDP的超时等待
在上面的例子当中,它会经过3个节点,traceroute会主动对这3个节点做UDP的响应等待,并检测回复的时间
比较特殊的是4以及4以后,会返回星号,代表该node可能设有某些防护措施,让我们发送的数据包信息被丢弃掉
因为我们是直接通过路由器传递数据包,并没有进入路由器去取得路由器的使用资源
所以某些路由器仅支持数据包转递,并不会接受来自客户端的各项检测,此时就会出现上述的问题
traceroute默认使用UDP数据包,如果想使用其它数据包,可以用-I 或-T试试看

示例二:防止攻击
由于目前UDP/ICMP的攻击层出不穷,因此很多路由器可能就此取消这两个数据包的响应功能
因此我们可以使用TCP来检测
使用同样的方法,通过等待时间1s,以及TCP 80端口的情况,可以按照如下的方法做:
网络排错与查看命令——两主机间各节点分析:traceroute_第3张图片

你可能感兴趣的:(linux中常用的网络命令)