查看原文
ping 命令
ping(数据包 Internet 探测程序)命令常用于对设备的可访问性进行故障排除。它使用两个互联网控制消息息协议(ICMP)查询消息、ICMP echo请求和ICMP echo应答来确定远端主机是否处于使用状态。ping 命令还计算接收应答所花费的时间。
ping 命令首先发送 ECHO 请求包到一个地址,然后等待回复。只有 ECHO 请求到达目的地,并且目的地能够在预定时间间隔内发送 ECHO 回复到 ping 来源,Ping 命令才算成功。
ping 命令
当某个正常的 ping 命令从路由器发出时,ping 的源地址是数据包退出路由器所用接口的 IP 地址。如果使用外部 Ping 命令,那么源 IP 地址就可以更改为该路由器上的任何 IP 地址。扩展 ping 用于对主机可到达性和网络连接执行更高级的检查。扩展 ping 命令仅可在特权 EXEC 命令行中使用。正常的 ping 在用户 EXEC 模式和特权 EXEC 模式下均可使用。要使用此功能,请在命令行中输入 ping,然后按 Return 键。系统将提示您输入本文 ping 命令字段说明部分中提供的字段。
命令字段说明
下表列出了 ping 命令字段的说明。这些字段可以用扩展 ping 命令进行修改。
字段 |
说明 |
Protocol [ip]: |
系统将提示输入受支持的协议。请输入 appletalk、clns、ip、novell、apollo、vines、decnet 或 xns。默认值为 ip。 |
目标 IP 地址 |
系统将提示输入要 ping 的目的节点的 IP 地址或主机名。如果您指定了所支持的协议,而不是 IP,请在此处输入该协议的相应地址。默认值为无。 |
Repeat count [5]: |
发送到目标地址的 ping 数据包的数目。默认值为 5。 |
数据报大小 [100]: |
ping 数据包的大小(单位:字节)。默认:100 字节。 |
Timeout in seconds [2]: |
超时间隔。默认:2(秒)。只有在此时间间隔内接收到 ECHO 回复数据包时,ping 才能宣称成功。 |
Extended commands [n]: |
指定是否显示一系列其他命令。默认为否。 |
源地址或接口 |
路由器的接口或 IP 地址用作为探针的源地址。路由器通常选择要使用的出站接口的 IP 地址。也可以包含接口,但必须使用正确的语法,如下所示: Source address or interface: ethernet 0 注意: 这是扩展 ping 命令的部分输出。接口不可写作 e0。 |
Type of service [0]: |
指定服务类型(ToS)。每次探测中都会放置请求的 ToS,但无法保证所有的路由器都将处理该 ToS。它是 Internet 服务的质量选择。默认值为 0。 |
在 IP 头中设置 DF 位?[[no] : |
指定是否要在 ping 数据包上设置"不分段"(DF) 位。如果指定yes,当必须通过一个具有较小的最大传输单元(MTU)的分段时,Don't Fragment选项不允许将此信息包分段,您还将收到一个想要分段此信息包的设备发来的错误信息。对于确定目的地路径中的最小 MTU,这非常有用。默认为否。 |
Validate reply data?[[no] : |
指定是否验证应答数据。默认为否。 |
Data pattern [0xABCD] |
指定数据模式。可以使用不同的数据模式来排除串行线路上的成帧错误和时钟问题。默认值为 [0xABCD]。 |
Loose, Strict, Record, Timestamp, Verbose[none]: |
IP 报头选项。此处提示将提供多个选项以供选择。它们是:
在使用此命令的 Record 选项和使用 traceroute 命令之间的区别在于:此命令的 Record 选项不仅通知您到达目的地所经历的 Echo 请求 (ping) 的跳数,而且也通知您返回路径所经历的跳数。使用 traceroute 命令时,无法获取 Echo 应答所选取的路径信息。traceroute 命令将提示输入必填字段。请注意,traceroute 命令将在每次探测中放置请求的选项,但无法保证所有的路由器(或终端节点)都将处理这些选项。默认值为无。 |
Sweep range of sizes [n]: |
可以改变发送的 Echo 数据包的大小。这被用来确定沿目的地地址路径节点所配置 MTU 的最小尺寸。这样可减少数据包分段导致的性能问题。默认为否。 |
!!!!! |
每个感叹号 (!) 表示收到一个应答。句点 (.) 表示等待应答时网络服务器超时。有关其他字符的说明,请参阅 ping 字符。 |
Success rate is 100 percent |
成功返回路由器的数据包百分比。通常,低于 80% 即视为存在问题。 |
round-trip min/avg/max = 1/2/4 ms |
协议 Echo 数据包的往返行程时间间隔,包括最小/平均/最大间隔(单位:毫秒)。 |
Character |
Description |
! |
Each exclamation point indicates receipt of a reply. |
. |
Each period indicates the network server timed out while waiting for a reply. |
U |
A destination unreachable error PDU was received. |
Q |
Source quench (destination too busy). |
M |
Could not fragment. |
? |
Unknown packet type. |
& |
Packet lifetime exceeded. |
在此图中,主机 1 和主机 2 彼此无法执行 ping 操作。针对该问题,您可以在路由器上执行故障排除,确定是否存在路由问题,或者是否其中一台主机设置的默认网关不正确。
为了成功执行从主机 1 到主机 2 的 Ping 操作,每台主机需将其默认网关指向各自 LAN 分段上的路由器,或者主机需要与使用路由协议的路由器交换网络信息。如果或者主机没正确地有其默认网关组,或者在其路由表里没有正确路由,不能发送数据包到目的地不现在其地址解析服务(ARP)缓存。也存在这样的可能:主机不能互相连接,因为其中一个路由器没有从发出 ping 数据包的主机到子网的路由。
下面是一个扩展 ping 命令的示例,该 Ping 从路由器 A 以太网 0 接口发往路由器 B 以太网接口。如果 Ping 成功,则表明路由没有问题。路由器 A 了解如何到达路由器 B 的以太网,且路由器 B 了解如何到达路由器 A 的以太网。此外,两台主机均正确地设置了默认网关。
如果路由器 A 的扩展 Ping 命令发生故障,这说明路由有问题。三台路由器中均可能存在路由问题。路由器 A 可能缺少到路由器 B 以太网子网的路由,或到路由器 C 和路由器 B 间子网的路由。路由器 B 可能缺少到路由器 A 以太网子网的路由,或到路由器 C 和路由器 A 间子网的路由;路由器 C 可能将路由丢失到路由器 A 或路由器 B 的以太网段子网。您应该更正所有路由问题,主机 1 则应该设法 ping 通主机 2。如果主机 1 仍然不能 ping 主机 2,则应检查两台主机的默认网关。可以用扩展 ping 命令检查路由器 A 和路由器 B 之间的以太网连接。
带有路由器 A 到路由器 B 的正常 ping 的以太网接口,ping 数据包的源地址是输出接口的地址,也是 serial 0 接口 (172.31.20.1) 地址。当路由器 B 回复 ping 数据包时,它回复源地址(即 172.31.20.1)。这种方法只测试了路由器 A(172.31.20.1) 的 serial 0 接口和路由器 B (192.168.40.1) 以太网接口之间的连通性。
为了测试路由器 A 以太网 0 (172.16.23.2) 和路由器 B 以太网 0 (192.168.40.1) 之间的连接,可以使用扩展 ping 命令。使用扩展 ping 时,有一个选项可用于指定 Ping 数据包的源地址,如下所示。
Router A>enable
Router A#ping
Protocol [ip]:
Target IP address: 192.168.40.1
!--- The address to ping.
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: 172.16.23.2
!---Ping packets are sourced from this address.
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 162.108.21.8, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 36/97/132 ms
!--- Ping is successful.
Router A#
以下是扩展命令和扫描详细信息示例:
Router A>enable
Router A#ping
Protocol [ip]:
!--- The protocol name.
Target IP address: 192.168.40.1
!--- The address to ping.
Repeat count [5]: 10
!--- The number of ping packets that are sent to the destination address.
Datagram size [100]:
!--- The size of the ping packet in size. The default is 100 bytes.
Timeout in seconds [2]:
!--- The timeout interval. The ping is declared successful only if the
!--- ECHO REPLY packet is received before this interval.
Extended commands [n]: y
!--- You choose yes if you want extended command options
!--- (Loose Source Routing, Strict Source Routing, Record route and Timestamp).
Source address or interface: 172.16.23.2
!--- Ping packets are sourced from this address and must be the IP address
!--- or full interface name (for example, Serial0/1 or 172.16.23.2).
Type of service [0]:
!--- Specifies Type of Service (ToS).
Set DF bit in IP header? [no]:
!--- Specifies whether or not the Don't Fragment (DF) bit is to be
!--- set on the ping packet.
Validate reply data? [no]:
!--- Specifies whether or not to validate reply data.
Data pattern [0xABCD]:
!--- Specifies the data pattern in the ping payload. Some physical links
!--- might exhibit data pattern dependent problems. For example, serial links
!--- with misconfigured line coding. Some useful data patterns to test
!--- include all 1s (0Xffff), all 0s (0x0000) and alternating
!--- ones and zeros (0Xaaaa).
Loose, Strict, Record, Timestamp, Verbose[none]:
!--- IP header options.
Sweep range of sizes [n]: y
!--- Choose yes if you want to vary the sizes on echo packets that are sent.
Sweep min size [36]:
Sweep max size [18024]:
Sweep interval [1]:
Sending 179890, [36..18024]-byte ICMP Echos to 162.108.21.8, timeout is 2 seconds:
!--- The count 179890 depends on the values of min sweep,
!--- max sweep, sweep interval and repeat count. Calculations are based on:
!--- 18024(high end of range) - 36(low end of range) = 17988(bytes in range)
!--- 17988(bytes in range) / 1(sweep interval) = 17988 (steps in range)
!--- 17988(bytes in range) + 1 (first value) = 17989(values to be tested)
!--- 17989(values to be tested) * 10(repeat count) = 179890 (pings to be sent)
!--- In order to decrease the value, increase the sweep interval or decrease
!--- the repeat count, or you can even decrease the difference between
!--- Minimum and Maximum sweep size. Based on the previous example, the
!--- number 17890 is an expected value and tries to ping 17890 times.
Packet sent with a source address of 172.16.23.2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent, round-trip min/avg/max = 1/2/4 ms
!--- Ping is successful.
Router A#
traceroute 命令
可以采用 ping 验证设备间连通性的地方,就可以使用 traceroute 命令,发现数据包通往远程目的地的路径,以及路由中断的路径。
traceroute 命令的目的是记录每个 ICMP"time exceeded"消息的来源,以跟踪数据包为到达目的地所选择的路径。
执行traceroute命令的设备派出用户数据报协议顺序(UDP)数据包,其中每一与增加存活时间(TTL)值,对无效的端口地址(默认33434)在远程主机。
首先,发送三个数据报,每个数据报的 TTL 字段值均设为 1。TTL 值为 1 会导致数据报到达路径中的第一个路由器后就立即"超时"。然后该路由器会以一条 ICMP"time exceeded"消息进行响应,指示该数据报已过期。
其次,还有另外三个 UDP 消息被发送出去,它们的 TTL 值设置为 2。这会导致目的地的路径中的第二台路由器返回 ICMP"time exceeded"消息。
该进程一直持续到数据包到达目的地,并且持续到发出 traceroute 命令的系统收到到达目的地所经路径中每个路由器发送的 ICMP"time exceeded"消息。由于这些数据报尝试访问目标主机上的无效端口(默认 33434),因此主机会以 ICMP"port unreachable"消息进行响应,表示无法到达该端口。此事件将通知 traceroute 程序完成操作。
注意: 确保您不禁用不可达的IP命令使用no ip unreachables在所有VLAN下。此命令取得信息包丢弃没有发送任何ICMP错误信息。在这种情况下, traceroute不工作。
扩展 traceroute 命令
扩展 traceroute 命令是 traceroute 命令的变体。扩展 traceroute 命令可用于查看数据包为到达目的地所选择的路径。同时该命令还可用于检查路由。这是有用为,当您排除故障路由环路时,或者为,当您确定时数据包何处获得丢失(如果路由未命中,或者,如果数据包由访问控制表(ACL)或防火墙阻塞)。您可以使用扩展 ping 命令确定连接类的问题,然后使用扩展 traceroute 命令缩小产生问题的范围。
"time exceeded"错误消息表明一个中间通信服务器发现并丢弃了数据包。"destination unreachable"错误信息表明目的地节点已经接收了探测,并且由于它不能传送信息包已将其丢弃。如果计时器在回应进入前关闭,跟踪会打印上星号 (*)。发生以下任一情况时,该命令将终止:
注意: 同时按下 Ctrl、Shift 和 6 键可以调用此转义序列。
traceroute 命令字段说明
下表列出了 traceroute 命令字段的说明:
字段 |
说明 |
Protocol [ip]: |
系统将提示输入受支持的协议。请输入 appletalk、clns、ip、novell、apollo、vines、decnet 或 xns。默认值为 ip。 |
目标 IP 地址 |
必须输入主机名或 IP 地址。没有默认值。 |
源地址: |
路由器的接口或 IP 地址用作为探针的源地址。路由器通常选择要使用的出站接口的 IP 地址。 |
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 命令将在每次探测中放置请求的选项;但无法保证所有的路由器(或终端节点)都将处理这些选项。 |
示例
Router A>enable
Router A#traceroute
Protocol [ip]:
Target IP address: 192.168.40.2
!--- The address to which the path is traced.
Source address: 172.16.23.2
Numeric display [n]:
Timeout in seconds [3]:
Probe count [3]:
Minimum Time to Live [1]:
Maximum Time to Live [30]:
Port Number [33434]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Type escape sequence to abort.
Tracing the route to 192.168.40.2
1 172.31.20.2 16 msec 16 msec 16 msec
2 172.20.10.2 28 msec 28 msec 32 msec
3 192.168.40.2 32 msec 28 msec *
!--- The traceroute is successful.
Router A#
注意: 扩展 traceroute 命令只能在特权 EXEC 模式下执行,而普通的 traceroute 命令在用户和特权 EXEC 模式下均可使用。