我们在使用路由器或者交换机,不论是做实验还是在实际工程中,我们都必须使用到的两个命令,那么一个就是我们的PING命令与traceroute命令。使用这两个命令来测试我们的网络配置是否正常,那么你到底对这两个命令又了解多少呢?那么我们这一节就来看看这两个命令的一些扩展用法。
Ping命令
ping (信息包互联网探索程序)命令是排除设备的可及性的一个非常普通的方法故障。 它使用两个互联网控制信息协议(ICMP)查询消息,ICMP响应请求和ICMP回应应答,确定一台远端主机是否是活跃的。ping命令也测量用收到ECHO回复的时间。
ping命令首先发起一个响应请求包到目的地址,然后等待回复。ping是成功的仅当 ECHO请求达到对端目的地,并且目的地能得到ECHO回复回到ping的来源在一个预定义的时间间隔之内。
那么我们现在先来看看如何来使用这个ping命令呢?
拓扑图如下:
p_w_picpath
首先把最基本IP地址/路由协议配通。
现在在R4上面查看一下路由表:
R4#sh ip route
1.0.0.0/24 is subnetted, 1 subnets
C 1.1.1.0 is directly connected, Loopback0
2.0.0.0/24 is subnetted, 1 subnets
D 2.2.2.0 [90/3321856] via 24.0.0.2, 00:00:18, Serial1/0
24.0.0.0/24 is subnetted, 1 subnets
C 24.0.0.0 is directly connected, Serial1/0
12.0.0.0/24 is subnetted, 1 subnets
D 12.0.0.0 [90/2681856] via 24.0.0.2, 00:00:50, Serial1/0
13.0.0.0/24 is subnetted, 1 subnets
D 13.0.0.0 [90/3193856] via 24.0.0.2, 00:00:50, Serial1/0
R4#
现在我们使用ping命令来测试到达2.2.2.2
R4#ping 2.2.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 88/120/156 ms
R4#
我们可以看到在中间!表示我们R4发送给2.2.2.2的icmp请求包,2.2.2.2通过icmp的echo给发一个回应包给我们R4表示正常通信了。
那么我们现在来看看这个ping包的一些详细的命令。
R4#ping 2.2.2.2 ?
data specify data pattern
df-bit enable do not fragment bit in IP header
repeat specify repeat count 表示我们需要发送多少个数据包
size specify datagram size 如果怀疑报文由于延迟过长或者分段失败而丢失,则可以提高报文的大小。例如,我们可以使用1600字节的报文来强制分段。
source specify source address or name 源地址
timeout specify timeout interval 如果怀疑超时是由于响应过慢而不是报文丢失,则可以提高该值。
validate validate reply data
<cr>
例如:
R4#ping 2.2.2.2 repeat 100 size 1000 source 1.1.1.1
Type escape sequence to abort.
Sending 100, 1000-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (100/100), round-trip min/avg/max = 76/116/196 ms
这里我们可以看见,我们现在ping 2.2.2.2发送100数据包,每个包1000个字节,源地址是1.1.1.1
这就是ping命令的一种简单的使用。
那么我们现在来看看扩展ping命令的使用。
R4#ping 扩展ping就只输入这一个单词
Protocol [ip]: 使用什么协议,默认的是IP协议
Target IP address: 2.2.2.2 目标地址
Repeat count [5]: 10 发送多少个数据包
Datagram size [100]: 1000 如果怀疑报文由于延迟过长或者分段失败而丢失,则可以提高报文的大小。例如,我们可以使用1600字节的报文来强制分段。
Timeout in seconds [2]: 5 如果怀疑超时是由于响应过慢而不是报文丢失,则可以提高该值。默认2秒
Extended commands [n]: y 这里是否使用扩展命令,输入Y表示使用
Source address or interface: 1.1.1.1 源地址,必须是路由器接口的地址。
Type of service [0]: 根据RFC 791 TOS规定的属性,通常缺省值为0。
Set DF bit in IP header? [no]: 通过设置DF位禁止分段,即使是报文超过了路由器定义的MTU也禁止分段。
Validate reply data? [no]:
Data pattern [0xABCD]: 通过改变数据模式可以测试线路的噪声。
Loose, Strict, Record, Timestamp, Verbose[none]: r 这些都是IP报文头的属性。一般只使用Record属性和Verbose,其他属性很少被使用。Record可以用来记录报文每一跳的地址,Verbose属性给出每一个回应应答的响应时间
Number of hops [ 9 ]: 这里这项表示我们下面的“Record route:”显示多少条。
Loose, Strict, Record, Timestamp, Verbose[RV]:
Sweep range of sizes [n]: y 该属性主要用于测试大报文被丢失、处理速度过慢或者分段失败等故障
Sweep min size [76]: 500 一个包最小大小为500字节
Sweep max size [18024]: 2000 一个包最大为2000字节
Sweep interval [1]: 500
Type escape sequence to abort.
Sending 20, [500..2000]-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
Packet has IP options: Total option bytes= 39, padded length=40
Record route: <*>
(0.0.0.0)
(0.0.0.0)
(0.0.0.0)
(0.0.0.0)
(0.0.0.0)
(0.0.0.0)
(0.0.0.0)
(0.0.0.0)
(0.0.0.0)
Reply to request 0 (100 ms) (size 500). Received packet has options
Total option bytes= 40, padded length=40
Record route:
(24.0.0.4)
(12.0.0.2)
(13.0.0.1)
(2.2.2.2)
(13.0.0.3)
(12.0.0.1)
(24.0.0.2)
(1.1.1.1) <*>
(0.0.0.0)
End of list
Reply to request 1 (120 ms) (size 1000). Received packet has options
Total option bytes= 40, padded length=40
Record route:
(24.0.0.4)
(12.0.0.2)
(13.0.0.1)
(2.2.2.2)
(13.0.0.3)
(12.0.0.1)
(24.0.0.2)
(1.1.1.1) <*>
(0.0.0.0)
End of list
Reply to request 2 (112 ms) (size 1500). Received packet has options
Total option bytes= 40, padded length=40
Record route:
(24.0.0.4)
(12.0.0.2)
(13.0.0.1)
(2.2.2.2)
(13.0.0.3)
(12.0.0.1)
(24.0.0.2)
(1.1.1.1) <*>
(0.0.0.0)
End of list
Reply to request 3 (128 ms) (size 2000). Received packet has options
Total option bytes= 40, padded length=40
Record route:
(24.0.0.4)
(12.0.0.2)
(13.0.0.1)
(2.2.2.2)
(13.0.0.3)
(12.0.0.1)
(24.0.0.2)
(1.1.1.1) <*>
(0.0.0.0)
End of list
Reply to request 4 (84 ms) (size 500). Received packet has options
Total option bytes= 40, padded length=40
Record route:
(24.0.0.4)
(12.0.0.2)
(13.0.0.1)
(2.2.2.2)
(13.0.0.3)
(12.0.0.1)
(24.0.0.2)
(1.1.1.1) <*>
(0.0.0.0)
End of list
Reply to request 5 (80 ms) (size 1000). Received packet has options
Total option bytes= 40, padded length=40
Record route:
(24.0.0.4)
(12.0.0.2)
(13.0.0.1)
(2.2.2.2)
(13.0.0.3)
(12.0.0.1)
(24.0.0.2)
(1.1.1.1) <*>
(0.0.0.0)
End of list
Reply to request 6 (84 ms) (size 1500). Received packet has options
Total option bytes= 40, padded length=40
Record route:
(24.0.0.4)
(12.0.0.2)
(13.0.0.1)
(2.2.2.2)
(13.0.0.3)
(12.0.0.1)
(24.0.0.2)
(1.1.1.1) <*>
(0.0.0.0)
End of list
Reply to request 7 (116 ms) (size 2000). Received packet has options
Total option bytes= 40, padded length=40
Record route:
(24.0.0.4)
(12.0.0.2)
(13.0.0.1)
(2.2.2.2)
(13.0.0.3)
(12.0.0.1)
(24.0.0.2)
(1.1.1.1) <*>
(0.0.0.0)
End of list
Reply to request 19 (100 ms) (size 2000). Received packet has options
Total option bytes= 40, padded length=40
Record route:
(24.0.0.4)
(12.0.0.2)
(13.0.0.1)
(2.2.2.2)
(13.0.0.3)
(12.0.0.1)
(24.0.0.2)
(1.1.1.1) <*>
(0.0.0.0)
End of list
Success rate is 100 percent (20/20), round-trip min/avg/max = 80/101/136 ms
从上面输入可以看出PING记录是路由器出口的IP地址,*表示源地址。
以上就是我们扩展ping的一个详解。我想大家看了这一些应该对ping命令有了一个重新的认识吧!好了,那么我们现在下来看看如何使用traceroute命令。
Traceroute命令:
Traceroute的工作原理:
Traceroute最简单的基本用法是:traceroute hostname
Traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field)。首先,traceroute送出一个TTL是1的IP datagram(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个datagram时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL是2 的datagram,发现第2 个路由器...... traceroute 每次将送出的datagram的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个datagram 抵达目的地。当datagram到达目的地后,该主机并不会送回ICMP time exceeded消息,因为它已是目的地了,那么traceroute如何得知目的地到达了呢?
Traceroute在送出UDP datagrams到目的地时,它所选择送达的port number 是一个一般应用程序都不会用的号码(30000 以上),所以当此UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable」的消息,而当traceroute 收到这个消息时,便知道目的地已经到达了。所以traceroute 在Server端也是没有所谓的Daemon 程式。
Traceroute提取发 ICMP TTL到期消息设备的IP地址并作域名解析。每次 ,Traceroute都打印出一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。
Traceroute face="宋体" 有一个固定的时间等待响应(ICMP TTL到期消息)。如果这个时间过了,它将打印出一系列的*号表明:在这个路径上,这个设备不能在给定的时间内发出ICMP TTL到期消息的响应。然后,Traceroute给TTL记数器加1,继续进行
执行traceroute命令的设备派出用户数据协议顺序 (UDP)数据包,其中每一带有增加存活时间(TTL)值,到一个无效的端口地址(默认值33434)在远端主机。
首先,三个数据包被发送,其中每一与TTL预值设定到1。当在路径,击中第一个路由器TTL值为1导致数据包对"超时"; 此路由器然后回应与表明的ICMP "时间超出的"消息数据包到期了。
其次,更多UDP信息被发送,其中每一个带有设置的TTL值到2。这在路径导致第二个路由器对目的地对回归ICMP "时间超出的"消息。
此进程继续直到信息包到达目的地 并且直到产生追踪途径的系统在路径从每个路由器收到了ICMP "时 间超出的"消息对目的地。因为这些数据包设法访问一个无效的端口(默认值33434)在目的地主机,主机回应与ICMP "表示一个不可达的端口的端口不可得到的"消息。此事件信号追踪路由程序完成。
那么我们现在来看看命令如何使用呢?
R4#traceroute 2.2.2.2 source 1.1.1.1
Type escape sequence to abort.
Tracing the route to 2.2.2.2
1 24.0.0.2 100 msec 52 msec 28 msec
2 12.0.0.1 172 msec 56 msec 44 msec
3 13.0.0.3 152 msec * 92 msec
R4#
而traceroute则是记录着路由器入口的IP地址
我们可以看见,上面这条命令是查看1.1.1.1到2.2.2.2如何走的。
使用方法很简单,那么我们知道ping有扩展功能,那么traceroute它有没有扩展功能呢?
R4#traceroute 直接输入traceroute
Protocol [ip]: 基于那种协议
Target IP address: 2.2.2.2 目标地址
Source address: 1.1.1.1 源地址
Numeric display [n]: 默认值是有一个符号和数字显示; 然而,您能抑制符号显示。
Timeout in seconds [3]: 等待对探针信息包的一种回应的秒钟的数量。默认值是3秒。
Probe count [3]: 将被发送的探测的数量在每个TTL级别。默认计数是3。
Minimum Time to Live [1]: 第一次探测的TTL值。默认值是1 ,但可以设 置为一个高价值抑制已知跳跃显示。
Maximum Time to Live [30]: 能使用的最大的TTL值。默认值是30。 traceroute命令终止当目的地 到达时或当此值达到时。
Port Number [33434]: UDP探测消息使用的目 的地端口。 默认值是33434。
Loose, Strict, Record, Timestamp, Verbose[none]: IP头选项。您能指定所有组合。 traceroute命令发出提 示对于要求的字段。注意 traceroute命令在每次探测将安置请求的选项 ; 然而,没有保证所有路由器(或端节点)将处理选项
Type escape sequence to abort.
Tracing the route to 2.2.2.2
1 24.0.0.2 40 msec 28 msec 32 msec
2 12.0.0.1 60 msec 76 msec 92 msec
3 13.0.0.3 128 msec * 72 msec
R4#
总结
ping 与 traceroute一般都用于连通性的试测,不过使用扩展ping和traceroute可以让我得到更多链路上的信息