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

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

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

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

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

文章插图
其中 type(类型)字段表示 ICMP 消息的类型,code(代码)字段表示 ICMP 消息的具体含义 。例如:type 值为 3 表示目的不可达消息( Destination Unreachable Message ),若 code 值为 0 表示目的网络不可达( Network Unreachable ) 。常见的 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 时,并同时记录到达时间 。这些时间戳可以估计网络上的传输时间 。
推荐阅读
- 42张图详解 NAT : 换个马甲就能上网
- 一张图片也能SQL注入?
- 网络也会堵车?!有3大法宝可以搞定它!
- 电脑没有网线怎么连接WiFi?很简单,一部闲置的手机就可以搞定
- 集合 一篇文章搞定Redis数据类型-set及基础命令
- 绿松石|还傻傻分不清绿松石?一张图,让你辨别真假绿松石
- 手机拍的图片怎么转换成Word文档,这样操作分分钟搞定
- 历经艰难险阻,我搞定了自动修改路由器 WIFI 密码
- 一文带你搞定TCP挥手
- 电脑残留垃圾清除:执行1行代码轻松搞定!无需杀毒软件