24 张图搞定 ICMP :最常用的网络命令 ping 和 tracert

图片

 

ICMP 


IP 是尽力传输的网络协议,提供的数据传输服务是不可靠的、无连接的,不能保证数据包能成功到达目的地。那么问题来了:如何确定数据包成功到达目的地?

图片

                                                                                                                         不可靠传输

 这需要一个网络层协议,提供错误检测功能和报告机制功能,于是出现了 ICMP互联网控制消息协议)。ICMP 的主要功能是,确认 IP 包是否成功送达目的地址通知发送过程中 IP 包被丢弃的原因有了这些功能,就可以检查网络是否正常、网络配置是否正确、设备是否异常等信息,方便进行网络问题诊断

图片

                                                                                                                  ICMP网络诊断功能

举个栗子:如果在传输过程中,发生了某个错误,设备便会向源设备返回一条 ICMP 消息,告诉它发生的错误类型。

图片

                                                                                                                          ICMP举例

ICMP 消息是通过 IP 进行传输,但它的目的并不是让 IP 成为一种可靠的协议,而是对传输中发生的问题进行反馈。ICMP 消息的传输同样得不到可靠性保证,也有可能在传输过程中丢失。因此 ICMP 不是传输层的补充,应该把它当做网络层协议。图片

 

ICMP 消息封装


ICMP 消息使用 IP 来封装,封装格式如下图。

图片

                                                                                                                     ICMP封装格式 

其中 type(类型)字段表示 ICMP 消息的类型code(代码)字段表示 ICMP 消息的具体含义。例如:type 值为 3 表示目的不可达消息( Destination Unreachable Message ),若 code 值为 0 表示目的网络不可达( Network Unreachable )。常见的 ICMP 消息类型如下图。

图片

                                                                                                                        ICMP消息类型 

从功能上,ICMP 的消息可分为两类:一类是通知出错原因的错误消息,另一类是用于诊断的查询消息。

图片

                                                                                                                错误消息和查询消息 

 

常见的 ICMP 消息类型


  • 回送请求消息( Echo Request ):是由源设备(主机或路由器等)向一个指定的目的设备发出的请求。这种消息用来测试目的地是否可达。

  • 回送响应消息( Echo Reply ):对 Echo Request 的响应。目的设备发送 Echo Reply 来响应收到的 Echo Request 。最常用的 ping 命令就是使用 Echo Request 和Echo Reply 来实现的。

 

图片

                                                                                                                             回送消息 

  • 目的不可达( Destination Unreachable ):路由器无法将 IP 包发送给目的地址时,会给源设备返回一个 Destination Unreachable 消息,并在消息中显示不可达的具体原因。 

图片

                                                                                                                               目的不可达 

实际情况下,经常会遇到的错误代码是 1 ,表示主机不可达,它是指路由表中没有目的设备的信息,或目的设备没有连接到网络。

图片

  • 参数问题( Parameter Problem ):路由器发现 IP 包头出现错误或非法值后,向源设备发送一个 Parameter Problem 消息。这个消息包含有问题的 IP 头,或错误字段的提示信息。

图片

                                                                                                                      参数问题消息

  • 重定向( Redirect ):如果路由器发现一条更优的路径发送数据,那么它就会返回一个 Redirect 消息给主机。这个消息包含了最合适的路由信息和源数据。

    实际情况下,这种 Redirect 消息会引发路由问题,所以不进行这种设置。比如:路由器的路由表不准确时,ICMP 有可能就无法正常工作。

图片

                                                                                                                             重定向

  • 超时( Time Exceeded ):IP 包中有一个字段是 TTL(生存周期),它的值每经过一次路由器就减 1 ,直到减到 0 时 IP 包会被丢弃。这时,路由器会发送一个 Time Exceeded 消息给源设备,并通知 IP 包已被丢弃。

    设置 TTL 的主要目的,是当路由发生环路时,避免 IP 包无休止的在网络上转发。还可以用 TTL 控制 IP 包的可达范围,比如设置一个较小的 TTL 值。

图片

                                                                                                                            超时

  • 时间戳请求/时间戳响应( Timestamp Request / Timestamp Reply ):时间戳可以记录 ICMP 消息一次往返所需的时间。源设备发送一个带有发送时间的 Timestamp Request 消息,目的设备收到后,发送一个带有原设备发送时间、目的设备接收时间以及目的设备发送时间的 Timestamp Reply 消息。源设备收到 Timestamp Reply 时,并同时记录到达时间。这些时间戳可以估计网络上的传输时间。

图片

                                                                                                                                时间戳

 

网络实战


在 Windows 电脑上使用 ping 命令,并查看返回信息。

图片

同步抓包进行验证。

图片

                                                                                                              ping抓包

还可以直接使用 ping 命令,查看 ping 命令的使用方法

图片

 

图片

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值