ping 和 traceroute 命令

ping 和 traceroute 命令

ping 程序 就是发送一个ICMP查询报文给某服务器,以测试该服务器是否可达。
当返回ICMP回显应答时,要打印出序列号、TTL,和往返时间;
 
[root@localhost src]# ping www.baidu.com
PING www.a.shifen.com (61.135.169.125) () bytes of data.
bytes from 61.135.169.125: icmp_seq= ttl= time=1.40 ms
bytes from 61.135.169.125: icmp_seq= ttl= 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  -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), hops max, byte packets
192.168.74.2 (192.168.74.2) 2.606 ms 2.771 ms 2.950 ms
211.151.56.57 (211.151.56.57) 0.596 ms 0.598 ms 0.591 ms
211.151.227.206 (211.151.227.206) 0.546 ms 0.544 ms 0.538 ms
210.77.139.145 (210.77.139.145) 0.710 ms 0.748 ms 0.801 ms
202.106.42.101 (202.106.42.101) 6.759 ms 6.945 ms 7.107 ms
61.148.154.97 (61.148.154.97) 718.908 ms * bt--.bta.net.cn (202.106.228.25) 5.177 ms
124.65.58.213 (124.65.58.213) 4.343 ms 4.336 ms 4.367 ms
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
* * *
* * *
[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

上一篇:【转】C++ 类访问控制public/private/protected探讨


下一篇:php Smarty模板引擎配置与测试