ping 和 traceroute 命令

ping 和 traceroute 命令

 

ping 程序 就是发送一个ICMP查询报文给某服务器,以测试该服务器是否可达。
当返回ICMP回显应答时,要打印出序列号、TTL,和往返时间;
 
[root@localhost src]# ping www.baidu.com
PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
64 bytes from 61.135.169.125: icmp_seq=1 ttl=54 time=1.40 ms
64 bytes from 61.135.169.125: icmp_seq=2 ttl=54 time=1.43 ms

 

-d 使用Socket的SO_DEBUG功能。

-f  极限检测。大量且快速地送网络封包给一台机器,看它的回应。

-n 只输出数值。

-q 不显示任何传送封包的信息,只显示最后的结果。

-r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。

-R 记录路由过程。

-v 详细显示指令的执行过程。

-c 数目:在发送指定数目的包后停止。

-i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。

-I 网络界面:使用指定的网络界面送出数据包。

-l 前置载入:设置在送出要求信息之前,先行发出的数据包。

-p 范本样式:设置填满数据包的范本样式。

-s 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。

-t 存活数值:设置存活数值TTL的大小。

 

测试丢包情况:

ping -c 1000 -f 10.75.49.29

 

 
traceroute程序:向目的发送具有不同TTL的IP报文(封装一个UDP格式的数据,并选择一个不可能的值作为UPD端口号),以确定至目的地址的路由;
 
首先,traceroute发送一个TTL=1的IP报文,处理这份数据报的第一个路由器将TTL-1,然后丢弃该数据报,并发回一个ICMP超时报文,
这份包含ICMP信息的IP报文的信源地址就是该路由器的地址,这样就得到了该路径中的第一个路由器的地址;
然后traceroute发送一个TTL=2的IP报文,可以得到第二个路由器的地址;继续这个过程直到数据报送至目的主机。
 
当IP报文到的目的主机时,TTL=1,目的主机认为数据报已经到达目的端,因此不会丢弃该报文;
但由于目的主机上的任何一个应用程序都没有使用指定的UPD端口号,因此会产生一个端口不可达的ICMP报文。
traceroute程序根据接收到的ICMP报文是超时、还是端口不可达以判断什么时候结束
 
traceroute命令格式:
traceroute hostname

 

traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。

 

参数说明:

-d 使用Socket层级的排错功能
-f 设置第一个检测数据包的存活数值TTL的大小
-F 设置勿离断位
-g 设置来源路由网关,最多可设置8个
-i 使用指定的网络界面送出数据包
-I 使用ICMP回应取代UDP,有时可以解决命令打印 “*”的问题
-m 设置检测数据包的最大存活数值TTL的大小
-n 直接使用IP地址而非主机名称,避免DNS解析
-p UDP传输协议的通信端口

-q 设置探测包个数,默认为3
-r 忽略普通的Routing Table,直接将数据包送到远端主机上
-s 设置本地主机送出数据包的IP地址
-t 设置检测数据包的TOS数值
-v 详细显示指令的执行过程
-w 设置等待远端主机回报的时间
-x 开启或关闭数据包的正确性检验

 
[root@localhost ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
 1  192.168.74.2 (192.168.74.2)  2.606 ms  2.771 ms  2.950 ms
 2  211.151.56.57 (211.151.56.57)  0.596 ms  0.598 ms  0.591 ms
 3  211.151.227.206 (211.151.227.206)  0.546 ms  0.544 ms  0.538 ms
 4  210.77.139.145 (210.77.139.145)  0.710 ms  0.748 ms  0.801 ms
 5  202.106.42.101 (202.106.42.101)  6.759 ms  6.945 ms  7.107 ms
 6  61.148.154.97 (61.148.154.97)  718.908 ms * bt-228-025.bta.net.cn (202.106.228.25)  5.177 ms
 7  124.65.58.213 (124.65.58.213)  4.343 ms  4.336 ms  4.367 ms
 8  202.106.35.190 (202.106.35.190)  1.795 ms 61.148.156.138 (61.148.156.138)  1.899 ms  1.951 ms
 9  * * *
30  * * *
[root@localhost ~]# 

说明:

1、记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 www.58.com ,表示向每个网关发送4个数据包。
2、有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
3、有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n 参数来避免DNS解析,以IP格式输出数据。
4、如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;

 

 

更网络命令请参考:http://linux.vbird.org/linux_server/0140networkcommand.php 

posted @ 2014-09-23 15:22  如果的事  阅读(3541)  评论(0编辑  收藏  举报