ICMP 是个啥破玩意?(二)

简介: ICMP 的全称是 Internet Control Message Protocol(互联网控制协议),它是一种互联网套件,它用于IP 协议中发送控制消息。也就是说,ICMP 是依靠 IP 协议来完成信息发送的,它是 IP 的主要部分,但是从体系结构上来讲,它位于 IP 之上,因为 ICMP 报文是承载在 IP 分组中的,就和 TCP 与 UDP 报文段作为 IP 有效载荷被承载那样。

ICMP 的主要消息

ICMP 目标不可达(类型 3)

我们知道,路由器无法将 IP 数据报发送给目标地址时,会给发送端主机返回一个目标不可达(Destination Unreachable Message) 的 ICMP 消息,并且会在消息中显示不可达的具体原因。

微信图片_20220416153659.png

实际通信过程中会显示各种各样的不可达信息,比如错误代码时 1 表示主机不可达,它指的是路由表中没有主机的信息,或者主机没有连接到网络的意思。一些 ICMP 不可达信息的具体原因如下

错误号 ICMP 不可达消息
0 0 = net unreachable 网络不可达
1 1 = host unreachable 主机不可达
2 2 = protocol unreachable 协议不可达
3 3 = port unreachable 端口不可达
4 4 = fragmentation needed and DF set 需要进行分片但设置不分片比特
5 5 = source route failed 源站选路失败
6 6 = Destination network unknown 目的网络不认识
7 7 = Destination host unknown 目的主机不认识
8 8 = Source host isolated (obsolete)源主机被隔离(作废不用)
9 9 = Destination network administratively prohibited 目的网络被强制禁止
10 10 = Destination host administratively prohibited目的主机被强制禁止
11 11 = Network unreachable for Type Of Service 由于 TOS,网络不可达
12 12 = Host unreachable for Type Of Service 由于 TOS,主机不可达

ICMP 重定向消息(类型 5)

如果路由器发现发送端主机使用了次优的路径发送数据,那么它会返回一个 ICMP 重定向(ICMP Redirect Message) 的消息给这个主机。这个 ICMP 重定向消息包含了最合适的路由信息和源数据。这种情况会发生在路由器持有更好的路由信息的情况下。路由器会通过这样的 ICMP 消息给发送端主机一个更合适的发送路由。

微信图片_20220416153703.png

主机 Host 的 IP 地址为 10.0.0.100。主机的路由表中有一个默认路由条目,指向路由器 G1 的 IP 地址 10.0.0.1 作为默认网关。路由器 G1 在将数据包转发到目的网络 X 时,会使用路由器 G2 的 IP 地址 10.0.0.2 作为下一跳。

当主机向目的网络 X 发送数据包时,会发生以下情况

  1. IP 地址为 10.0.0.1 的网关 G1 在其所连接的网络上接收来自 10.0.0.100 的数据包。
  2. 网关 G1 检查其路由表,并在通往数据包目的网络 X 的路由中获取下一个网关 G2 的 IP 地址 10.0.0.2。
  3. 如果 G2 和 IP 数据包的源地址标识的主机位于同一网络中(也就是 Host 主机),那么 G1 会向主机发送 ICMP 重定向消息。ICMP 重定向消息建议主机直接将发送到网络 X 的数据包发送至 G2,因为 Host - G2 这是通往目的地的较短路径。
  4. 网关 G1 将原始数据包转发到其目的地。

当然,根据主机的配置,Host 主机也可以选择忽略 G1 给它发送的 ICMP 重定向消息。但是,这样就享受不到 ICMP 重定向带来的两大好处,即

  • 优化数据在网络中的转发路径;流量更快到达目的地
  • 降低网络资源利用率,例如带宽和路由器 CPU 负载

如果 Host 主机采用了 ICMP 提供的重定向路径的话,那么 Host 就会直接把数据包发送至网络 X,如下图所示

微信图片_20220416153707.png

在主机为 G2 作为下一跳的网络 X 创建路由缓存条目后,这些优势在网络中可见:

  • 交换机和路由器 G1 之间链路的带宽利用率在两个方向上都会降低
  • 由于从主机到网络 X 的流量不再流经此节点,因此路由器 G1 的 CPU 使用率降低
  • 主机和网络 X 之间的端到端网络延迟得到改善。

ICMP 重定向示例如下

微信图片_20220416153712.png

ICMP 超时消息(类型 11)

在 IP 数据包中有一个叫做 TTL(Time To Live, 生存周期) ,它的值在每经过路由器一跳之后都会减 1,IP 数据包减为 0 时会被丢弃。此时,IP 路由器会发送一个 ICMP 超时消息(ICMP TIme Exceeded Message, 错误号 0)发送给主机,通知该包已经被丢弃。

设置生存周期的主要目的就是为了防止路由器控制遇到问题发生循环状况时,避免 IP 包无休止的在网络上转发,如下图所示

微信图片_20220416153716.png

这里给大家推荐一款比较好用的追踪超时消息的工具 traceroute,它可以显示出由执行程序的主机到达特定主机之前需要经过多少路由器。traceroute 的官网如下 http://www.traceroute.org

ICMP 回送消息(类型 0 和 类型 8)

ICMP 回送消息用于判断相互通信的主机之间是否连通,也就是判断所发送的数据包是否能够到达目标主机。可以向对端主机发送回送请求的消息(ICMP Echo Request Message,类型 8),也可以接收对端主机发送来的回送消息(ICMP Echo Reply Message, 类型 0 )。网络上最常用的 ping 命令就是利用这个实现的。

微信图片_20220416153720.png

目录
打赏
0
0
0
0
4
分享
相关文章
RT-DETR改进策略【模型轻量化】| 替换华为的极简主义骨干网络:VanillaNet
RT-DETR改进策略【模型轻量化】| 替换华为的极简主义骨干网络:VanillaNet
146 0
(极态/JIT)推荐一款真正提升专业开发团队开发效率的工具!
推荐一款真正提升专业开发团队开发效率的工具!极态(jit.pro),面向专业团队的快速开发平台!开发能力不受平台限制,完全自主可控,可无限扩展。
【MyBatis】spring整合mybatis教程(详细易懂)
Spring提供了一种轻量级的容器和依赖注入的机制,可以简化应用程序的配置和管理。会初始化N个数据库链接对象,一般在10个,当需要用户请求操作数据库时候,那么就会直接在数据库连接池中获取链接,用完放回连接池中。我们的实体类创建属性的时候我写get、set等方法,过于麻烦,但是我们有一个lombok,可以节约掉这些。这里是自己本地路径的MySQL的jar包,是需要更改的,路径赋值后也需要再加上。把我们的生成的BookMapper里面的方法复制到我们新建的BookBiz里面。选中对应的项目,依次选中生成。
【MyBatis】spring整合mybatis教程(详细易懂)
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(八)
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(八)
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(八)
ArcGIS:如何对要素类进行查询要素属性、更改符号、标记?
ArcGIS:如何对要素类进行查询要素属性、更改符号、标记?
516 1
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(十)
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(十)
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(十)
探索AI在软件测试中的应用和影响
【2月更文挑战第27天】 随着人工智能(AI)技术的飞速发展,其在软件测试领域的应用也日益广泛。本文将深入探讨AI在软件测试中的角色,包括其如何提高测试效率,减少错误,以及对未来软件测试行业的影响。我们将通过实例分析,阐述AI在自动化测试、性能测试、安全测试等方面的应用,并讨论其对软件测试工程师技能要求的影响。
阿里云服务器2核8G、4核16G、8核32G配置最新收费标准及活动价格参考
2核8G、8核32G、4核16G配置的云服务器处理器与内存比为1:4,这种配比的云服务器一般适用于中小型数据库系统、缓存、搜索集群和企业办公类应用等通用型场景,因此,多为企业级用户选择,目前用户购买2核8G配置活动价格最低为1933.80元/1年起,购买4核16G配置活动价格最低为3489.00元/1年起,购买8核32G配置活动价格最低为6599.40元/1年起,本文介绍这些配置的最新购买价格,包含原价收费标准和最新活动价格。
阿里云服务器2核8G、4核16G、8核32G配置最新收费标准及活动价格参考
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问