ICMP 和 IGMP 的区别

注:本文为 “ICMP 和 IGMP” 相关文章合辑。


ICMP 和 IGMP 协议 IP 层分支图


ICMP 和 IGMP 的区别

ICMP(Internet Control Message Protocol,因特网控制信息协议)

用于补充 IP 传输数据报的过程中,发送主机无法确定数据报是否到达目标主机。

ICMP 报文分为出错报告报文和查询报文两种。

若数据报不能到达目标主机,ICMP 出错报告报文可以以回送信息的方式,向源主机发去信息,并不能纠正数据报中的任何出错。

除了出错报告,ICMP 还可以诊断出某些网络问题,这就是 ICMP 的查询报文。

ICMP 源抑制消息:当 TCP/IP 主机发送数据到另一主机时,如果速度达到路由器或者链路的饱和状态,路由器发出一个 ICMP 源抑制消息。

ICMP 包结构

在这里插入图片描述)
在这里插入图片描述)

类型:一个 8 位类型字段,表示 ICMP 数据包类型。

代码:一个 8 位代码域,表示指定类型中的一个功能。如果一个类型中只有一种功能,代码域置为 0。

检验和:数据包中 ICMP 部分上的一个 16 位检验和。

指定类型的数据随每个 ICMP 类型变化的一个附加数据。

IGMP (Internet Group Management Protocol,因特网组管理协议)

用于建立和管理多播组,对 IP 分组广播进行控制。

internet 控制消息协议 ICMP 是用于报告错误并代表 IP 对消息进行控制。

IP 运用互联组管理协议 IGMP 来告诉路由器,某一网络上指导组中的可用主机。

IGMP 信息传给别的路由器以使每个支持多路广播的路由器获知哪个主机组和哪个网络中。

IGMP 包结构

版本:IGMP 的版本,值一般为 0x1h。

类型:IGMP 消息的类型。

  • 0x1h 类型称为主机成员请求,在多路广播路由器上用于指定多级组中的任何成员轮询一个网络。

  • 0x2h 类型称为主机成员报告,在主机上用于发布指定组中的成员情况或对一个路由器的主机成员请求进行回答。

未用:未用的域名被发送者置零且被接收者忽略。

检验和:IGMP 头的一个 16 位检验和。

组地址:主机用该组地址在一个主机成员请求中存储 IP 多路广播地址。在主机成员请求中,组地址被全置零,而且硬件级的多路广播地址被用来标示主机组。

ICMP 和 IGMP 比较

编号   ~  ICMPIGMP
1ICMP 代表 Internet 控制消息协议。IGMP 代表 Internet 组消息协议。
2ICMP 具有 PING 功能。IGMP 具有多播功能。
3Internet 控制消息协议是单播的。互联网组消息协议是多播的。
4ICMP 可以在主机到主机或主机到路由器或路由器到路由器之间运行。IGMP 可用于客户端到多播路由器之间。
5ICMP 第 3 层协议。IGMP 第 3 层协议。
6控制单播通信,用于报错。IGMP 控制多播通信。
7ICMP 可以是主机和网关用来将数据报下行通知发送回发送者的机制。IGMP 用于促进将消息同步传输到一堆接收者。
8ICMP 用于测试主机或网络的可达性。IGMP 用于 DTS 服务等分组数据传输。

DTS (Data Transmission Service,数据传输服务)


ICMP/IGMP 协议原理

一、ICMP 协议原理

ICMP 主要的功能包括:确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被废弃的原因和改善网络设置等。

在 IP 通信中如果某个 IP 包因为某种原因未能达到目标地址,那么这个具体的原因将由 ICMP 负责通知。

img

如上图例子,主机 A 向主机 B 发送了数据包,由于某种原因,途中的路由器 2 未能发现主机 B 的存在,这时,路由器 2 就会向主机 A 发送一个 ICMP 目标不可达数据包,说明发往主机 B 的包未能成功。ICMP 的这种通知消息会使用 IP 进行发送 。

因此,从路由器 2 返回的 ICMP 包会按照往常的路由控制先经过路由器 1 再转发给主机 A 。收到该 ICMP 包的主机 A 则分解 ICMP 的首部和数据域以后得知具体发生问题的原因。

1.1 ICMP 大致可以分为两大类:

  • 一类是用于诊断的查询消息,也就是查询报文类型。

  • 另一类是通知出错原因的错误消息,也就是差错报文类型

img

1.2 目标不可达类型的代码

  • 网络不可达代码为 0

  • 主机不可达代码为 1

  • 协议不可达代码为 2

  • 端口不可达代码为 3

  • 需要进行分片但设置了不分片位代码为 4

img

二、IGMP 协议原理

ICMP 跟 IGMP 是一点关系都没有的,大家不要混淆了。

D 类地址中的地址是组播地址,只有一组的主机能收到数据包,不在一组的主机不能收到数组包。

怎么管理是否是在一组呢?那么,就需要 IGMP 协议了。

img

IGMP 是因特网组管理协议,工作在主机(组播成员)和最后一跳路由之间,如上图中的蓝色部分。

  • IGMP 报文向路由器申请加入和退出组播组,默认情况下路由器是不会转发组播包到连接中的主机,除非主机通过 IGMP 加入到组播组,主机申请加入到组播组时,路由器就会记录 IGMP 路由器表,路由器后续就会转发组播包到对应的主机了。

  • IGMP 报文采用 IP 封装,IP 头部的协议号为 2,而且 TTL 字段值通常为 1,因为 IGMP 是工作在主机与连接的路由器之间。

2.1 IGMPv2 查询与响应原理

img

  1. 路由器会周期性发送目的地址为 224.0.0.1 (表示同一网段内所有主机和路由器) IGMP 常规查询报文。

  2. 主机 1 和 主机 3 收到这个查询,随后会启动「报告延迟计时器」,计时器的时间是随机的,通常是 0~10 秒,计时器超时后主机就会发送 IGMP 成员关系报告报文(源 IP 地址为自己主机的 IP 地址,目的 IP 地址为组播地址)。如果在定时器超时之前,收到同一个组内的其他主机发送的成员关系报告报文,则自己不再发送,这样可以减少网络中多余的 IGMP 报文数量。

  3. 路由器收到主机的成员关系报文后,就会在 IGMP 路由表中加入该组播组,后续网络中一旦该组播地址的数据到达路由器,它会把数据包转发出去。

2.2 IGMPv2 离开组播组工作机制

离开组播组的情况一,网段中仍有该组播组:

img

  1. 主机 1 要离开组 224.1.1.1,发送 IGMPv2 离组报文,报文的目的地址是 224.0.0.2(表示发向网段内的所有路由器)

  2. 路由器 收到该报文后,以 1 秒为间隔连续发送 IGMP 特定组查询报文(共计发送 2 个),以便确认该网络是否还有 224.1.1.1 组的其他成员。

  3. 主机 3 仍然是组 224.1.1.1 的成员,因此它立即响应这个特定组查询。路由器知道该网络中仍然存在该组播组的成员,于是继续向该网络转发 224.1.1.1 的组播数据包。

离开组播组的情况二,网段中没有该组播组:

img

  1. 主机 1 要离开组播组 224.1.1.1,发送 IGMP 离组报文。

  2. 路由器收到该报文后,以 1 秒为间隔连续发送 IGMP 特定组查询报文(共计发送 2 个)。此时在该网段内,组 224.1.1.1 已经没有其他成员了,因此没有主机响应这个查询。

  3. 一定时间后,路由器认为该网段中已经没有 224.1.1.1 组播组成员了,将不会再向这个网段转发该组播地址的数据包。


IGMP 与 ICMP 区别

什么是 ICMP ?ping 和 ICMP 之间有啥关系?

作者:wljslmz 2022-06-27

什么是 ICMP ?ping和ICMP之间有啥关系?

什么是 ICMP?

  • 英文全称:Internet Control Message Protocol

  • 中文名称:互联网控制报文协议

  • 工作在 OSI 模型的网络层和 TCP/IP 模型的 Internet 层

  • ICMP 消息不直接传递到数据链路层

  • 在 RFC 792 中定义

img

ICMP 通常不被网络上的用户应用程序直接使用,并且与 TCP 和 UDP 的工作方式完全不同。

简而言之,ICMP 的主要用途是发送 Echo ICMP 请求消息的 Ping 或 Trace 工具,以计算和确定网络上的计算机是否可用、数据包往返这台计算机所需的时间以及它们经过的计算机数量。

ICMP 历史

ICMP 属于 TCP/IP 协议栈,互联网的先驱之一 Jon Postel 撰写了 ICMP 的原始概念,1981 年 4 月,在 RFC 777 中,编写了第一个标准,RFC 792 也是由 Postel 编写并于 1981 年 9 月由 Internet Engineering Community 发布的。

ICMP 的结构

img

  • 类型 Type:ICMP 中的每条消息都包含唯一的类型并放置在此字段中,其中一个常见的字段称为 echo request,类型为 8,此字段为 8 位,因此共有 256 种消息类型。

  • 代码 Code:ICMP 为每种类型的消息提供了带有 Code 字段的附加信息,代码字段为 8 位,有 256 个可能的值。

  • 校验和 Checksum:该字段为 16 位,计算方式与 IPv4 类似,用于为整个 ICMP 消息提供消息的错误检测。

ICMP 的功能

ICMP 主要设计用于在将发送设备连接到接收设备的路径中工作的设备,在路径中间工作的最常见设备是路由器,ICMP 不限于路由器,网络中的任何设备都可以使用 ICMP 并向另一台设备发送消息,ICMP 为所有控制和信息消息提供单一机制。

ICMP 的主要功能如下。

  • 当源发送的 IP 数据包无法传递时,允许路由器通知源。

  • 允许源发现到目标设备的所有可用路径。

  • 允许源检查目标设备是否在线和启动。

  • 允许管理员测试连接和调试与连接相关的问题。

img

ICMP 消息

ICMP 主要有以下消息:

img

Echo Request / Echo Reply

  • 中文名称:回声请求/回声回复

  • Echo Reply:ICMP Type 0

  • Echo Request:ICMP Type 8

回声消息可用于确定网络上的设备是否正在工作。

本地计算机向目标计算机发送 ICMP Echo Request 消息,接收计算机使用 Echo Replymessage 进行响应。

Destination Unreachable

  • 中文名称:目的地不可达

  • ICMP Type 3

表示无法到达目标网络、主机或端口

Redirect

  • 中文名称:重定向

  • ICMP Type 5

用于将主机重定向到不同的网络路径。

Source Quench

  • 中文名称:源抑制

  • ICMP type 4

用于实现一个基本的流量控制机制,并通知源端停止发送数据包一段时间。

此消息通知数据报包在网络上快速传输,如果资源繁忙,则减慢到源设备的数据包传输速度。

Time Exceeded

  • 中文名称:超市

  • ICMP Type 11

表示由于跳数过多,已超过生存时间 ( TTL )。

消息类型汇总:

img

总结

Internet 控制消息协议 (ICMP) 是 TCP/IP 的实用协议,负责提供有关 TCP/IP 网络上的设备、服务或路由的可用性的信息,大多数网络故障排除技术和工具都以常见的 ICMP 消息类型为中心,最著名的就是 ping,主要用于测试设备之间的通信。

什么是 IGMP?IGMP 与 ICMP 有啥区别?

作者:wljslmz

2022-06-29

什么是IGMP?IGMP与ICMP有啥区别?

什么是 IGMP?

  • 英文全称:Internet Group Management Protocol

  • 中文名称:互联网组管理协议

  • 第 3 层协议

  • IP 协议号:2

  • IPv4 组播的关键组件

  • IGMP 有 3 个版本:IGMPv1、IGMPv2 和 IGMPv3

IGMP 允许主机将其组播成员身份通告给相邻的交换机和路由器,主机通过向其本地组播路由器发送 IGMP 消息来识别组成员身份,在 IGMP 下,路由器侦听 IGMP 消息并定期发送查询来发现特定子网上哪些组是活动的或非活动的。

img

流量类型

流量一般三种类型:

img

单播

单播英文名叫 Unicast,是点对点传输,单播需要一个发送方和一个接收方使用基于会话的协议发送数据包,例如 TCP 和 UDP。

  • TCP 的常见传输模式示例有 httptelnetsmtp

  • UDP 的常见传输模式示例有 VoIP视频会议流媒体实时服务

img

广播

广播英文名叫 Broadcast,单个设备向网络上的所有其他设备发送通信。

LAN 上广播流量的常见示例包括查询 LAN 上所有计算机的 ARP 消息。

广播流量不是可路由流量。

img

组播

组播英文名叫 Multicast,也叫多播,支持从一个节点到多个接收者的单个数据传输副本,发送设备会将 UDP 数据包转发到组播 IP 地址和端口,以便所有想要接收流的目的地都可以接收传输,从而节省带宽和网络开销。

组播流量是可路由的流量,但需要 IGMP 和 PIM 来控制整个网络的泛滥、使上行链路饱和并可能导致网络瘫痪。

img

组播版本

在组播介绍中,我们介绍了组播有 3 个版本:

img

我们来稍微的了解一下。

IGMPv1

IGMPv1 是 TCP 网络中使用的通信协议的第一个开发和发布版本,对于这个版本,定义了组地址0.0.0.0,并定义了224.0.0.1作为一般查询的目标地址。

这些路由器生成请求的标准时间是 60 秒,并允许计算机加入对应的组播组。

随后,向对应的组播地址发出成员资格请求。

IGMPv1 不允许计算机通过超过时间限制自行离开组,从而将计算机从其访问的组中删除。

IGMP 头的总长度为 64 位,前 8 位表示协议版本和消息类型。

lGMPv1 报文头如下:

img

IGMPv2

IGMPv2 在第一个版本发布后,于 1997 年在 RFC 2236 中定义,在 lGMPv2 中,group(0.0.0.0)和 destination(224.0.0.1)地址没有变化,但是间隔时间增加到 125 秒。

第二个版本的主要创新是通过替换使用的注销时间限制来加快进程,由设备启动注销过程的第一个版本。

另一项创新是特定组播地址的接收状态是通过特定于组的消息确定的。

在这个版本中,地址 224.0.0.2 被定义为目标地址,IGMPv2 使用简单的 IP 数据包发送消息,IP 协议号为 2

在 IGMPv2 版本中,子网中具有最低 IP 地址的路由器用于多播查询

lGMPv2 包头如下:

img

IGMPv3

IGMPv3 版本在 RFC 3376 和 RFC 4604 在 2002 中定义,在这个版本中,0.0.0.0224.0.0.1 地址被认为是一个组和目标地址,间隔时间与版本 2 相同。

新的特点是可以特殊选择组播流,这大大降低了对网络的需求,并且由于在传输过程中不使用未知或随机源,因此还提供了更高的安全性。

前两个 32 位序列与 lGMPv2 头类型、最大响应时间、校验和和组地址相同。

IGMPv3 包头如下:

img

IGMP 如何工作?

我们已经知道组播就是发送方向一组主机发送一条消息,组播路由器有责任将消息复制并转发给组播组的每个主机,组播组的每个主机都会收到消息,除非在接收主机上应用了过滤器。

IGMP 协议工作的最核心部分就是管理主机在组播组中的成员关系,在管理组播组中主机或路由器的成员身份时,协议必须处理以下过程:

img

ICMP 消息

暂且不看 IGMP 的版本,一般来说,从大的方面,IGMP 消息有以下这六种:

img

Membership Report 成员报告消息

客户端在想要接收组播组时发送此消息,成员报告本质上是一条信息,表明有兴趣收听特定组。

Leave 离开消息

客户端在想要离开组时发送此消息。

General Query 一般查询消息

查询器将一般查询消息发送给所有客户端,无论查询器当前是否正在向客户端发送组播,来找出它们正在侦听的组,对一般查询的响应确保查询者的组成员信息保持最新。

一般查询的组地址字段设置为 0.0.0.0,它们被发送到目标地址 224.0.0.1,默认情况下,Allied Telesis 路由器和交换机每 125 秒发送一次。

Specific Query 具体查询消息

查询器将具体查询消息发送到组地址,来检查客户端是否仍在侦听该组,在客户端为该组发送离开消息后,查询器发送特定查询,特定查询使查询器能够确认所有下游客户端何时离开组,以便查询器可以停止发送多播流。

Membership Query 成员查询消息

这是具体查询和一般查询的通用术语。

IGMP 优缺点

优点

  • IGMP 促使带宽得到了有效利用

  • 比较灵活,可以立即离开某个组再加入另外一个组

  • 不存在大量垃圾包,性能得到提升

缺点

  • 缺少 TCP,可能会发生网络拥塞

  • 安全性不高,容易受到攻击

IGMP 侦听

IGMP 在第 3 层运行,因此,交换机无法理解 IGMP 消息,另外,交换机也不可能将组播 MAC 地址加入转发表,这是因为组播 MAC 地址从不作为源地址,这会导致组播流量被泛洪到广播域内的所有主机。

IGMP 侦听是在第 2 层交换机上启用的一项功能,用于检查主机和路由器之间的 IGMP 传输,通过这种检查,建立了一个映射,其中包含特定 VLAN 中的哪些主机需要接收组播传输,然后,交换机使用此信息将给定组播组的组播流量仅转发给给定 VLAN 内的接收器。

ICMP 和 IGMP 的区别

文章开头也说了,这两个协议只差了一个字母,但是协议本身差异是非常巨大的,我们来了解一下:

1、定义

  • ICMP 代表 Internet 控制消息协议

  • IGMP 代表 Internet 组消息协议

2、典型功能

  • ICMP:ping

  • IGMP:组播

3、工作协议层

  • ICMP:第 3 层协议

  • IGMP:第 3 层协议

4、用途

  • ICMP:用于测试主机或网络的可达性

  • IGMP:用于 DTS 服务等分组数据传输

总结

IGMP 代表 Internet 组播管理协议,是 IPv4 网络上的主机和相邻路由器用来建立多播组成员资格的通信协议,当多播主机希望加入特定多播组并开始接收组流量时,IGMP 消息主要用于向其本地多播路由器发送信号,IGMP 有三个版本:版本 1、版本 2、版本 3,其中版本 2 是默认版本。


via:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值