我们在使用路由器或者交换机,不论是做实验还是在实际工程中,我们都必须使用到的两个命令,那么一个就是我们的PING命令与traceroute命令。使用这两个命令来测试我们的网络配置是否正常,那么你到底对这两个命令又了解多少呢?那么我们这一节就来看看这两个命令的一些扩展用法。

Ping命令

ping (信息包互联网探索程序)命令是排除设备的可及性的一个非常普通的方法故障。 它使用两个互联网控制信息协议(ICMP)查询消息,ICMP响应请求和ICMP回应应答,确定一台远端主机是否是活跃的。ping命令也测量用收到ECHO回复的时间。

ping命令首先发起一个响应请求包到目的地址,然后等待回复。ping是成功的仅当 ECHO请求达到对端目的地,并且目的地能得到ECHO回复回到ping的来源在一个预定义的时间间隔之内。

那么我们现在先来看看如何来使用这个ping命令呢?

拓扑图如下:

image

首先把最基本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可以让我得到更多链路上的信息