ICMP详解

3 ICMP

ICMP(Internet Control Message Protocol,因特网控制报文协议)是一个差错报告机制,是TCP/IP协议簇中的一个重要子协议,通常被IP层或更高层协议(TCP或UDP)使用,属于网络层协议,主要用于在IP主机和路由器之间传递控制消息,用于报告主机是否可达、路由是否可用等。这些控制消息虽然并不传输用户数据,但是对于收集各种网络信息、诊断和排除各种网络故障以及用户数据的传递具有至关重要的作用。

2.3.1 ICMP报文

     ICMP报文格式如图2-7所示,每一个ICMP消息都将包含引发这条ICMP消息的数据包的完全IP包头,ICMP报文则作为IP数据包的数据部分封装在IP数据包内部。ICMP包头中包含的三个固定字段就是源端设备确定发生错误的类型的主要依据。

图2-7 ICMP报文格式

ICMP字段解析如下:

  • Type字段表示ICMP消息的类型
  • Code字段表示ICMP消息类型细分的子类型
  • Checksum字段表示ICMP报文的校验和

不同的Type和Code值表示不同的ICMP报文类型,对应了数据包处理过程中可能出现的不同错误情况,常见的报文分类如图2-8所示

     图2-8  常见的ICMP报文

在文章最后加作者VX:可以免费领取以下资料

2.3.2 ICMP重定向

     ICMP 重定向消息用于支持路由功能。如图2-9所示,主机A希望发送报文到服务器A,于是根据配置的默认网关地址向网关RB发送报文。网关RB收到报文后,检查报文信息,发现报文应该转发到与源主机在同一网段的另一个网关设备RA,因为此转发路径不是最优的路径,所以RB会向主机A发送一个Redirect消息,通知主机直接向另一个网关RA发送该报文。主机A收到Redirect消息后,会向RA发送报文,然后RA会将该报文再转发给服务器A。

图2-9 ICMP重定向

2.3.3 ICMP应用-Ping

     Ping是检测网络连通性的常用工具。用户可以在Ping命令中指定不同参数,如ICMP报文长度、发送的ICMP报文个数、等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP报文,进行Ping测试。

Ping常用的配置参数说明如下:

  • -a 指定发送ICMP ECHO-REQUEST报文的源IP地址。如果不指定源IP地址,将采用出接口的IP地址作为ICMP ECHO-REQUEST报文发送的源地址。
  • -c 指定发送ICMP ECHO-REQUEST报文次数。缺省情况下发送5个ICMP ECHO-REQUEST报文。
  • -h指定TTL的值。缺省值是255。
  • -t 指定发送完ICMP ECHO-REQUEST后,等待ICMP ECHO-REPLY的超时时间。

Ping命令的输出信息中包括目的地址、ICMP报文长度、序号、TTL值以及往返时间。其中序号是包含在Echo回复消息(Type=0)中的可变参数字段,TTL和往返时间包含在消息的IP头中。下面是PING一段输出举例

[RTA]ping 10.0.0.2

  PING 10.0.0.2 : 56  data bytes, press CTRL_C to break

    Reply from 10.0.0.2 : bytes=56 Sequence=1 ttl=255 time=340 ms

    Reply from 10.0.0.2 : bytes=56 Sequence=2 ttl=255 time=10 ms

    Reply from 10.0.0.2 : bytes=56 Sequence=3 ttl=255 time=30 ms

    Reply from 10.0.0.2 : bytes=56 Sequence=4 ttl=255 time=30 ms

    Reply from 10.0.0.2 : bytes=56 Sequence=5 ttl=255 time=30 ms

  --- 10.0.0.2 ping statistics ---

    5 packet(s) transmitted

    5 packet(s) received

    0.00% packet loss

    round-trip min/avg/max = 10/88/340 ms

在文章最后加作者VX:可以免费领取以下资料

2.3.4 ICMP应用——Tracert

     Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径。为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。该报文到达第一个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时间戳。然后源端将报文的TTL值设置为2,报文到达第二个节点后超时,该节点同样返回TTL超时消息,以此类推,直到报文到达目的地。这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并根据时间戳信息计算往返时间。Tracert是检测网络丢包及时延的有效手段,同时可以帮助管理员发现网络中的路由环路。

     Tracert常用的配置参数说明如下:

  • -a source-ip-address指定tracert报文的源地址。
  • -f first-ttl指定初始TTL。缺省值是1。
  • -m max-ttl指定最大TTL。缺省值是30。
  • -name使能显示每一跳的主机名。
  • -p port指定目的主机的UDP端口号。
  • 本文出自作者的《HCIA Datacom学习指南》
    https://item.jd.com/14032255.html

  • 25
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值