ICMP 是个啥破玩意?(三)

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

其他 ICMP 消息

ICMP 原点抑制消息(类型 4)

在使用低速率网络的情况下,网络通信可能会遇到网络拥堵的情况下,ICMP 的原点抑制就是为了应对这种情况的。当路由器向低速线路发送数据时,其发送队列的残存数据报变为 0 从而无法发送时,可以向 IP 数据报的源地址发送一个 ICMP 原点抑制(ICMP Source Quench Message) 消息,收到这个消息的主机了解到线路某处发生了拥堵,从而抑制 IP 数据报的发送。

微信图片_20220416153833.png

不过这个 ICMP 消息可能会引起不公平的网络通信,一般不被使用。

ICMP 路由器探索消息(类型 9、10)

ICMP 路由器探索消息主要用于路由器发现(Router Discovery, RD),它主要分为两种,路由器请求(Router Solicitation, 类型 10)路由器响应(Router Advertisement, 类型 9)。主机会在任意路由连接组播的网络上发送一个 RS 消息,想要选择一个路由器进行学习,以此来作为默认路由,而相对应的该路由会发送一个 RA 消息来作为默认路由的响应。

微信图片_20220416153837.png

ICMP 地址掩码消息(类型 17、18)

主要用于主机或者路由器想要了解子网掩码的情况。可以向那些目标主机或路由器发送 ICMP 地址掩码请求消息(ICMP Address Mask Request, 类型 17)ICMP 地址掩码应答消息(ICMP Address Mask Reply, 类型 18) 获取子网掩码信息。

ICMPv6

ICMPv6 的作用

IPv4 中 ICMP 仅仅作为一个辅助作用支持 IPv4。也就是说,在 IPv4 时期,即使没有 ICMP,也能进行正常的 IP 数据包的发送和接收,也就是 IP 通信。但是在 IPv6 中,ICMP 的作用被放大了,如果没有 ICMP,则不能进行正常的 IP 通信。

尤其在 IPv6 中,从 IP 定位 MAC 地址的协议从 ARP 转为 ICMP 的邻居探索消息(Neighbor Discovery) 。这种邻居探索消息融合了 IPv4 的 ARP、ICMP 重定向以及 ICMP 的路由选择等功能于一体。甚至还提供了自动设置 IP 的功能。

在 IPv6 中,ICMP 消息主要分为两类:一类是错误消息,一类是信息消息。0 - 127 属于错误消息;128 - 255 属于信息消息。

RFC 2463 中描述了以下消息类型:

类型 描述
1 目标不可达 Destination Unreachable
2 数据包太大 Packet Too Big
3 超时 Time Exceeded
4 参数问题 Parameter Problem
128 回送请求消息 Echo Request
129 回送应答消息 Echo Reply
130 多播监听查询 Multicast Listener Query
131 多播监听报告 Multicast Listener Report
132 多播监听结束 Multicast Listener Done
133 路由器请求消息 Router Solicitation
134 路由器公告消息 Router Advertisement
135 邻居请求消息 Neighbor Solicitation
136 邻居宣告消息 Neighbor Advertisement
137 重定向消息 Redirect Message
138 路由器重编号 Router Renumbering
139 信息查询 ICMP Node Information Query
140 信息应答 ICMP Node Information Response
141 反邻居探索请求消息 Inverse Neighbor Discovery Solicitation
142 反邻居探索宣告消息 Inverse Neighbor Discovery Advertisement

ICMPv6 除了包含 ICMPv4 的所有功能外,还有两个额外的功能。

ICMPv6 邻居探索

邻居探索是 ICMPv6 非常重要的功能,主要表示的类型是 133 - 137 之间的消息叫做邻居探索消息。这种邻居探索消息对于 IPv6 通信起到举足轻重的作用。邻居请求消息用于查询 IPv6 地址于 MAC 地址的对应关系。邻居请求消息利用 IPv6 的多播地址实现传输。

微信图片_20220416153843.png

此外,由于 IPv6 实现了即插即用的功能,所以在没有 DHCP 服务器的环境下也能实现 IP 地址的自动获取。如果是一个没有路由器的网络,就使用 MAC 地址作为链路本地单播地址。如果在一个有路由器的网络环境中,可以从路由器获得 IPv6 地址的前面部分,后面部分使用 MAC 地址进行设置。此时可以利用路由器请求消息和路由器公告消息进行设置。

微信图片_20220416153846.png

ICMPv6 的组播收听发现协议

组播收听发现协议(MLD,Multicast Listener Discovery)由子网内的组播成员管理。MLD 协议定义了3条ICMPv6 消息:

  • 组播收听查询消息:组播路由器向子网内的组播收听者发送此消息,以获取组播收听者的状态。
  • 组播收听者报告消息:组播收听者向组播路由器汇报当前状态,包括离开某个组播组。
  • 组播收听者。

与 ICMP 有关的攻击

涉及 ICMP 攻击主要分为 3 类:泛洪(flood)、炸弹(bomb) 和信息泄露(information disclsure)

  • 泛洪将会产生大量流量,导致针对一台或者多台计算机的有效 Dos 攻击。
  • 炸弹指的是发送经过特殊构造的报文,这类报文能够导致 IP 或者 ICMP 的处理失效或者崩溃。
  • 信息泄露本身不会造成危害,但是能够帮助辅助其他攻击。

针对 TCP 的 ICMP 攻击已经记录在了 RFC5927 中。

相关文章
|
9月前
|
网络协议 算法 开发者
[网络坦白局] TCP粘包 数据包:我只是犯了每个数据包都会犯的错 |硬核图解
[网络坦白局] TCP粘包 数据包:我只是犯了每个数据包都会犯的错 |硬核图解
72 1
|
缓存 网络协议 网络架构
太强了,5幅图就拿下了ARP协议
在上一篇文章 别再恐惧 IP 协议 中, 我们了解到,网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。也就是说:只要在网络层确定了 IP 地址,就可以向这个目标地址发送 IP 数据报。然而,在底层数据链路层,进行实际通信时却有必要了解每个 IP 地址所对应的 MAC 地址。
|
缓存 运维 前端开发
看完对于跨域还有疑问,请顺着网线过来打死我
跨域,在前后端分离的项目中是很常见的一个问题,跨域是对于浏览器操作来说的,脱离了浏览器来谈跨域是没有任何意义的,笔者目前所在的项目组就是一个前后端分离的项目,也出现过跨域问题,这里对跨域以及跨域涉及到的CORS、OPTIONS请求、Referer字段、Origin字段等信息做个总结。这篇文章分三个步骤去总结跨域问题,第一部分介绍什么是跨域,以及跨域相关的一些概念;第二部分介绍跨域带来的问题有哪些。第三部分总结解决跨域问题的方式。
132 0
看完对于跨域还有疑问,请顺着网线过来打死我
|
人工智能 文字识别 网络协议
关于我尝试抓包微信失败后想到的新方法居然和奥特曼有关~
关于我尝试抓包微信失败后想到的新方法居然和奥特曼有关~ 以前 微信网页版 还可以登录的时候,我们还可以使用 python 帮助我们实现 自动化操作,调用各种各样的 API ,做做机器人啥的 ,但是现在呢~ 微信网页版 好像不开放了😐 扫码登录都会出现下面的画面 😵 来到之前 很火的 python 库 wxpy, 我看到下面这个场景, 果然也是一片哀嚎 哈哈哈 wireshark 抓包 于是我做了个大胆的决定,尝试用 wireshark 去抓取微信发出的数据包~ (我实在太天真了!🙃) 在电脑上打开微信,参考下面三次握手的图~ 可以看到这里就已经 发出了这么多信息 我晕
254 0
|
缓存 网络协议 网络架构
ICMP 是个啥破玩意?(二)
ICMP 的全称是 Internet Control Message Protocol(互联网控制协议),它是一种互联网套件,它用于IP 协议中发送控制消息。也就是说,ICMP 是依靠 IP 协议来完成信息发送的,它是 IP 的主要部分,但是从体系结构上来讲,它位于 IP 之上,因为 ICMP 报文是承载在 IP 分组中的,就和 TCP 与 UDP 报文段作为 IP 有效载荷被承载那样。
ICMP 是个啥破玩意?(二)
|
网络协议 网络架构
ICMP 是个啥破玩意?(一)
ICMP 的全称是 Internet Control Message Protocol(互联网控制协议),它是一种互联网套件,它用于IP 协议中发送控制消息。也就是说,ICMP 是依靠 IP 协议来完成信息发送的,它是 IP 的主要部分,但是从体系结构上来讲,它位于 IP 之上,因为 ICMP 报文是承载在 IP 分组中的,就和 TCP 与 UDP 报文段作为 IP 有效载荷被承载那样。
ICMP 是个啥破玩意?(一)
|
JavaScript 前端开发 数据可视化
字节不给大伙发月饼?🎑那我亲自给大伙发!🥮人人都有!
字节不给大伙发月饼?🎑那我亲自给大伙发!🥮人人都有!
|
编译器 C++
【C/C++教程】关于C/C++那些坑爹的破事儿,你被坑了吗?
今天,就带大家看看C/C++里面究竟有多少不为人知的秘(keng)密(die)吧。可以测试一下,不看答案,自己能get到多少。
111 0
【C/C++教程】关于C/C++那些坑爹的破事儿,你被坑了吗?
|
网络协议 Linux
ARP,这个隐匿在计网背后的男人(二)
只要确定了 IP 地址后,就能够向这个 IP 地址所在的主机发送数据报,这是我们所熟知的事情。但是再往深了想,IP 地址只是标识网络层的地址,那么在网络层下方数据链路层是不是也有一个地址能够告诉对方主机自己的地址呢?是的,这个地址就是MAC 地址。
ARP,这个隐匿在计网背后的男人(二)
|
缓存 网络协议 安全
ARP,这个隐匿在计网背后的男人(三)
只要确定了 IP 地址后,就能够向这个 IP 地址所在的主机发送数据报,这是我们所熟知的事情。但是再往深了想,IP 地址只是标识网络层的地址,那么在网络层下方数据链路层是不是也有一个地址能够告诉对方主机自己的地址呢?是的,这个地址就是MAC 地址。
ARP,这个隐匿在计网背后的男人(三)