目录
[1. 什么是IGMP:](#1. 什么是IGMP:)
[2. IGMP如何工作:](#2. IGMP如何工作:)
[3. IGMP报文类型:](#3. IGMP报文类型:)
[3.1. Membership Query](#3.1. Membership Query)
[3.2. Membership Report](#3.2. Membership Report)
[3.3. Leave Group Message](#3.3. Leave Group Message)
[4. IGMP v2 vs. IGMP v3](#4. IGMP v2 vs. IGMP v3)
[4.1. IGMPv2 messages](#4.1. IGMPv2 messages)
[4.2. IGMPv3 membership query](#4.2. IGMPv3 membership query)
1. 什么是IGMP:
- IGMP或互联网组管理协议是IPv4网络中用于多播组管理的通信协议。它允许主机通知其本地路由器它想要接收指定多播组的消息。它还允许路由器识别其网络上的哪些主机属于特定的多播组,并确保多播流量的有效传递。
- 换句话说,IGMP通过管理主机在各种组播组中的成员资格来帮助提高IPv4组播网络的性能和效率。如果没有IGMP,IPv4网络将无法有效地支持多媒体流或其他需要多播的应用程序。
- 在网络中,多播是指一次使用特定的IP地址将单个数据包传输给多个接收者。这与单播和广播不同,单播向每个单独的接收者发送单独的包,广播向网络上的所有可能的接收者发送相同的包。
- 多播可用于有效地向选定组发送大量数据,例如向多个参与者流式传输视频会议或同时更新多个设备上的软件。然而,它确实要求所有接收器都是指定多播组的成员,以便传输成功。
2. IGMP如何工作:
- 多播IP地址允许一次将单个包发送到多个主机,使其成为传递信息的有效方式。然而,为了使多播工作,主机必须首先通知多播路由器它想加入某个多播组。这就是IGMP发挥作用的地方。
- 互联网组管理协议管理这些多播组,并确保多播路由器只向请求它们的主机发送包。
- 当主机想要加入多播组时,它会向其本地路由器发送IGMP成员报告。然后,路由器将此信息传递给网络中的其他路由器,允许主机接收该组的多播流量。
- 同样,当主机想要离开多播组时,它会发送一个IGMP离开报告,该报告会在整个网络中传播。这确保了主机只接收他们专门加入的组的多播流量,从而节省了网络资源。
- 除了管理成员资格外,IGMP还定期发送IGMP查询消息,以衡量对某些组的兴趣,并修剪那些没有活动成员的组。
3. IGMP报文类型:
- 在管理互联网组管理协议(IGMP)网络中的成员资格时,可以使用三种类型的消息。多播路由器发送成员查询,以确定哪些主机是特定多播组的成员。主机发送成员资格报告,以表明其在特定组中的成员资格。
- 最后,当主机希望离开多播组时,它会发送离开组消息。这些消息允许高效管理多播组中的成员资格,并有助于确保消息仅发送给感兴趣的收件人。
3.1. Membership Query
- 当网络上的某些设备想要加入多播组时,它们会发送一条互联网组管理协议(IGMP)成员查询消息。这些消息有两种形式:一般成员资格查询和特定于组的成员资格查询。路由器发送一般成员查询,以确定网络上的哪些设备想要加入任何多播组。
- 路由器使用特定于组的成员资格查询来检查网络上是否存在特定多播组的任何成员。这两种类型的查询都有助于路由器维护高效的多播系统,确保数据只发送到需要它的设备。
3.2. Membership Report
- 作为互联网组管理协议(IGMP)的一个组成部分,成员报告是由主机发送的消息,用于指示其在特定多播组中的成员身份。此消息允许网络上的路由器准确跟踪哪些主机是哪些多播组的一部分,以有效地路由多播流量。
- 成员报告可以采用初始加入报告或活动成员报告的形式,分别表示主持人刚刚加入或正在积极参与某个组。
3.3. Leave Group Message
- 当主机想要停止接收某个组的多播流量时,会向路由器发送离开组消息。
- 这种类型的消息允许在多播网络内进行高效通信,因为不再希望接收特定组数据的主机可以很容易地通知网络。
- 这有助于减少不必要的网络流量,提高整体网络性能。
4. IGMP v2 vs. IGMP v3
- 随着技术的进步,IGMP的新版本不断发布,以解决特定问题并增强整体功能。
- IGMPv2于1997年发布,增加了主机报告离开组的功能。
- IGMPv3于2004年发布,引入了特定于源的多播,并允许主机报告他们对多播组内特定源的兴趣,从而提供了一种更有效的管理组成员资格的方法。此外,IGMPv3增加了对"兼容模式"的支持,这允许在升级过程中与旧版本的协议进行互操作。
- 最终,IGMPv2和IGMPv3都用于管理多播组成员资格,但IGMPv3提供了更大的灵活性和效率。
4.1. IGMPv2 messages
| bit offset | 0--7 |||||||| 8--15 |||||||| 16--31 ||||||||
| 0 | Type |||||||| Max Resp Time |||||||| Checksum ||||||||
32 | Group Address |
---|
Type: 按如下方式指示消息类型:
**最大响应时间:**指定对成员资格查询的答复所需的响应时间(0x11)。此字段仅在成员查询中有意义;在其他消息中,它被设置为0并被接收者忽略。该字段以0.1秒为单位指定时间(字段值10指定1秒)。当最后一个主机离开组时,较大的值会减少IGMP流量突发性,较小的值会提高协议响应性。
** 组地址:**这是在发送特定于组或特定于组和源的查询时查询的多播地址。发送常规查询时,该字段为零。
使用以下IP目标地址发送消息:
|---------------------------------------|--------------------------|
| General Query | All hosts (224.0.0.1) |
| Group-Specific Query | The group being queried |
| Membership Report (all IGMP versions) | The group being reported |
| Leave Group | All routers (224.0.0.2) |
4.2. IGMPv3 membership query
| bit offset | 0--3 |||| 4 | 5--7 ||| 8--15 |||||||| 16--31 ||||||||||||||||
| 0 | Type = 0x11 |||||||| Max Resp Code |||||||| Checksum ||||||||||||||||
| 32 | Group Address ||||||||||||||||||||||||||||||||
| 64 | Resv |||| S | QRV ||| QQIC |||||||| Number of Sources (N) ||||||||||||||||
| 96 | Source Address [1] ||||||||||||||||||||||||||||||||
| 128 | Source Address [2] ||||||||||||||||||||||||||||||||
| | . . . ||||||||||||||||||||||||||||||||
Source Address [N] |
---|
最大响应代码:此字段指定发送响应报告之前允许的最长时间(以1/10秒为增量)。如果数字低于128,则直接使用该值。如果该值为128或更大,则将其解释为指数和尾数。
校验和:这是整个IGMP消息的补码和的16位补码。
组地址:这是在发送特定于组或特定于组和源的查询时查询的多播地址。发送常规查询时,该字段为零。
Resv:此字段已保留。发送时应归零,接收时应忽略。
S(抑制路由器侧处理)标志:当设置此标志时,它向接收路由器指示它们要抑制正常的定时器更新。
QRV(查询者鲁棒性变量):如果该值为非零,则它包含查询发送者使用的鲁棒性变量值。路由器应更新其鲁棒性变量,以匹配最近收到的查询,除非该值为零。
QQIC(查询器的查询间隔代码):此代码用于指定查询器使用的查询间隔值(以秒为单位)。如果数字低于128,则直接使用该值。如果该值为128或更大,则将其解释为指数和尾数。
源数量(N):此字段指定查询中存在的源地址数量。对于常规查询和组特定查询,此值为零。对于组和源特定查询,此值为非零,但受网络MTU的限制。源地址
**源地址[i]字段 :**是n个IP单播地址的向量,其中n是源数量(n)字段中的值。
关于以太网的基础知识点大概就这些了,后面就要开始在CANoe工程上去仿真/实际操作以太网报文了,敬请期待!!!