IGMP 是 网络层协议,位于 TCP/IP 协议栈的网络层,它依赖于以太网作为底层传输介质,IGMP 报文封装在 IP 数据包中,而 IP 数据包又封装在以太网帧中传输。IGMP 主要用于在 IPv4 网络 中管理组播组成员关系,确保组播数据仅发送给加入组播组的设备。它的主要功能包括:
总之,对于从事汽车行业的工程师来说,掌握IGMP协议也是必不可少的。
IGMP(Internet Group Management Protocol) 属于 网络层(Network Layer) 的协议,具体位于 TCP/IP协议栈 的网络层。
OSI 模型层 | TCP/IP 协议栈层 | 协议示例 |
---|---|---|
应用层(Application) | 应用层 | HTTP、FTP、DNS |
表示层(Presentation) | 应用层 | SSL/TLS |
会话层(Session) | 应用层 | SIP、RPC |
传输层(Transport) | 传输层 | TCP、UDP |
网络层(Network) | 网络层 | IGMP、IP、ICMP、ARP |
数据链路层(Data Link) | 网络接口层 | Ethernet、PPP |
物理层(Physical) | 网络接口层 | 光纤、电缆 |
虽然 IGMP 是网络层协议,但它依赖于 以太网(Ethernet) 作为其底层传输介质。IGMP 报文封装在 IP 数据包 中,而 IP 数据包又封装在 以太网帧 中。因此,IGMP 报文在以太网中的传输过程如下:
IGMP 报文封装示例:
层级 | 协议/数据单元 | 描述 |
---|---|---|
网络层 | IGMP 报文 | 包含组播组成员管理信息 |
网络层 | IP 数据包 | 封装 IGMP 报文,指定源和目的 IP 地址 |
数据链路层 | 以太网帧 | 封装 IP 数据包,指定源和目的 MAC 地址 |
物理层 | 比特流 | 通过物理介质传输 |
IGMP(Internet Group Management Protocol)协议在组播通信中至关重要,主要原因如下:
1. 管理组播组成员
IGMP允许主机加入或离开组播组,确保只有感兴趣的设备接收组播数据,避免不必要的网络流量。
2. 优化网络资源
通过IGMP,网络设备(如交换机、路由器)能了解哪些设备属于哪个组播组,从而只将组播数据转发给相关设备,减少带宽浪费。
3. 动态组成员管理
IGMP支持动态加入和离开组播组,适应网络环境变化,如设备移动或新设备加入。
4. 支持多种组播应用
IGMP适用于多种组播应用场景,如视频会议、IPTV、在线游戏等,确保数据仅发送给需要的设备。
5. 减少网络拥塞
通过限制组播数据仅发送给加入组的设备,IGMP有效减少网络拥塞,提升整体性能。
6. 提高网络效率
IGMP帮助网络设备维护组播组信息,确保数据高效传输,避免不必要的复制和转发。
7. 支持大规模网络
在大规模网络中,IGMP帮助管理大量组播组和成员,确保数据准确传输到每个成员。
8. 与路由协议协同工作
IGMP与PIM等组播路由协议协同,确保组播数据在网络中正确路由和转发。
IGMP协议通过管理组播组成员、优化网络资源、支持动态成员管理等功能,确保组播通信的高效性和可靠性,是组播通信不可或缺的组成部分。
IGMP 的报文类型主要包括以下几种:
报文类型 | 描述 |
---|---|
成员查询(Membership Query) | 路由器发送,询问主机是否属于某个组播组。 |
成员报告(Membership Report) | 主机发送,告知路由器其组成员身份。 |
离开组(Leave Group) | 主机发送,通知路由器其离开组播组的意图(仅 IGMPv2 和 IGMPv3 支持)。 |
以下是 IGMP报文结构 的表格示例,分别展示了 IGMPv1、IGMPv2 和 IGMPv3 的报文字段及其含义。
字段名 | 长度(字节) | 描述 |
---|---|---|
类型(Type) | 1 | 0x11 :成员查询(Membership Query)0x12 :成员报告(Membership Report) |
未使用(Unused) | 1 | 全0,保留字段 |
校验和(Checksum) | 2 | 用于检测报文传输中的错误 |
组播组地址(Group Address) | 4 | 组播组的IP地址(查询报文中为 0.0.0.0 ) |
字段名 | 长度(字节) | 描述 |
---|---|---|
类型(Type) | 1 | 0x11 :成员查询(Membership Query)0x16 :成员报告(Membership Report)0x17 :离开组(Leave Group) |
最大响应时间(Max Response Time) | 1 | 主机响应查询报文的最大时间(单位:0.1秒) |
校验和(Checksum) | 2 | 用于检测报文传输中的错误 |
组播组地址(Group Address) | 4 | 组播组的IP地址(查询报文中为 0.0.0.0 ) |
IGMPv3 支持源特定组播(SSM),报文结构更复杂,分为 查询报文 和 报告报文。
字段名 | 长度(字节) | 描述 |
---|---|---|
类型(Type) | 1 | 0x11 :成员查询(Membership Query) |
最大响应时间(Max Response Time) | 1 | 主机响应查询报文的最大时间(单位:0.1秒) |
校验和(Checksum) | 2 | 用于检测报文传输中的错误 |
组播组地址(Group Address) | 4 | 组播组的IP地址(一般查询为 0.0.0.0 ,特定组查询为组播组地址) |
S标志(S Flag) | 1位 | 指示是否抑制路由器处理 |
QRV(Querier’s Robustness Variable) | 3位 | 查询者的健壮性变量 |
QQIC(Querier’s Query Interval Code) | 1字节 | 查询间隔代码 |
源地址数量(Number of Sources) | 2字节 | 指定源地址的数量(仅特定组查询有效) |
源地址(Source Addresses) | 4字节 × N | 源地址列表(仅特定组查询有效) |
字段名 | 长度(字节) | 描述 |
---|---|---|
类型(Type) | 1 | 0x22 :成员报告(Membership Report) |
保留(Reserved) | 1 | 全0,保留字段 |
校验和(Checksum) | 2 | 用于检测报文传输中的错误 |
保留(Reserved) | 2 | 全0,保留字段 |
组记录数量(Number of Group Records) | 2字节 | 组记录的数量 |
组记录(Group Records) | 可变长度 | 每个组记录包含组播组地址、源地址列表和记录类型等信息 |
字段名 | 长度(字节) | 描述 |
---|---|---|
记录类型(Record Type) | 1 | 组记录类型(如 MODE_IS_INCLUDE 、MODE_IS_EXCLUDE 等) |
辅助数据长度(Aux Data Len) | 1 | 辅助数据的长度(通常为0) |
源地址数量(Number of Sources) | 2字节 | 源地址的数量 |
组播组地址(Multicast Address) | 4字节 | 组播组的IP地址 |
源地址(Source Addresses) | 4字节 × N | 源地址列表 |
辅助数据(Auxiliary Data) | 可变长度 | 辅助数据(通常为空) |
以上表格展示了 IGMPv1、IGMPv2 和 IGMPv3 的报文结构。IGMPv3 的报文结构更为复杂,支持源特定组播(SSM),适用于更灵活的组播场景。
IGMP(Internet Group Management Protocol) 是一种用于管理组播组成员的协议,主要应用于 IPv4 网络 中。它的工作原理是通过路由器/交换机与主机之间的交互,动态维护组播组成员关系,确保组播数据仅发送给加入组播组的设备。以下是 IGMP 协议的工作原理详解:
IGMP 协议通过路由器/交换机与主机之间的交互,动态维护组播组成员关系,确保组播数据仅发送给需要的设备。它的工作原理包括成员查询、成员报告和离开组报文,支持动态组成员管理和高效数据转发。IGMP 的不同版本(v1、v2、v3)在功能和报文结构上有所改进,适用于不同的组播场景。IGMP 的工作流程主要包括以下步骤:
(1)路由器发送成员查询(Membership Query)
(2)主机响应成员报告(Membership Report)
(3)主机离开组播组(Leave Group)
(4)路由器维护组播组信息
以下是一个车载以太网通过 IGMP协议 实现组播数据交互的完整流程示例,包含详细的报文数据。
假设场景如下:
192.168.1.1
,MAC地址 00:1A:2B:3C:4D:5E
192.168.1.2
,MAC地址 00:1B:2C:3D:4E:5F
192.168.1.3
,MAC地址 00:1C:2D:3E:4F:5A
239.255.10.1
1. 车载网关发送IGMP一般查询(General Query)
车载网关定期发送IGMP一般查询报文,询问网络中的设备是否属于任何组播组。
报文数据:
01:00:5E:00:00:01
(组播MAC地址,对应IP地址 224.0.0.1
)224.0.0.1
(所有主机的组播地址)192.168.1.1
(车载网关的IP地址)0x11
(成员查询)10
(单位:0.1秒,即1秒)0xABCD
(示例值)0.0.0.0
(一般查询,组播组地址为0)报文示例:
Ethernet Header:
Destination MAC: 01:00:5E:00:00:01
Source MAC: 00:1A:2B:3C:4D:5E
IP Header:
Destination IP: 224.0.0.1
Source IP: 192.168.1.1
IGMP Payload:
Type: 0x11
Max Response Time: 10
Checksum: 0xABCD
Group Address: 0.0.0.0
2. Host A响应IGMP成员报告(Membership Report)
Host A属于组播组 239.255.10.1
,发送IGMP成员报告报文,告知车载网关其组成员身份。
报文数据:
01:00:5E:7F:0A:01
(组播MAC地址,对应IP地址 239.255.10.1
)239.255.10.1
(组播组地址)192.168.1.2
(Host A的IP地址)0x16
(IGMPv2成员报告)0
(成员报告中该字段为0)0x1234
(示例值)239.255.10.1
报文示例:
Ethernet Header:
Destination MAC: 01:00:5E:7F:0A:01
Source MAC: 00:1B:2C:3D:4E:5F
IP Header:
Destination IP: 239.255.10.1
Source IP: 192.168.1.2
IGMP Payload:
Type: 0x16
Max Response Time: 0
Checksum: 0x1234
Group Address: 239.255.10.1
3. Host B主动加入组播组
Host B决定加入组播组 239.255.10.1
,主动发送IGMP成员报告报文。
报文数据:
01:00:5E:7F:0A:01
(组播MAC地址,对应IP地址 239.255.10.1
)239.255.10.1
(组播组地址)192.168.1.3
(Host B的IP地址)0x16
(IGMPv2成员报告)0
0x5678
(示例值)239.255.10.1
报文示例:
Ethernet Header:
Destination MAC: 01:00:5E:7F:0A:01
Source MAC: 00:1C:2D:3E:4F:5A
IP Header:
Destination IP: 239.255.10.1
Source IP: 192.168.1.3
IGMP Payload:
Type: 0x16
Max Response Time: 0
Checksum: 0x5678
Group Address: 239.255.10.1
4. 车载网关转发组播数据
车载网关开始向组播组 239.255.10.1
转发车载传感器数据(例如车速、温度等)。
报文数据:
01:00:5E:7F:0A:01
(组播MAC地址,对应IP地址 239.255.10.1
)239.255.10.1
(组播组地址)192.168.1.1
(车载网关的IP地址)车速:60 km/h,温度:25°C
报文示例:
Ethernet Header:
Destination MAC: 01:00:5E:7F:0A:01
Source MAC: 00:1A:2B:3C:4D:5E
IP Header:
Destination IP: 239.255.10.1
Source IP: 192.168.1.1
Data Payload:
车速:60 km/h,温度:25°C
5. Host A和Host B接收组播数据
Host A和Host B作为组播组 239.255.10.1
的成员,接收并处理组播数据。
Host A接收的报文:
Ethernet Header:
Destination MAC: 01:00:5E:7F:0A:01
Source MAC: 00:1A:2B:3C:4D:5E
IP Header:
Destination IP: 239.255.10.1
Source IP: 192.168.1.1
Data Payload:
车速:60 km/h,温度:25°C
Host B接收的报文:
Ethernet Header:
Destination MAC: 01:00:5E:7F:0A:01
Source MAC: 00:1A:2B:3C:4D:5E
IP Header:
Destination IP: 239.255.10.1
Source IP: 192.168.1.1
Data Payload:
车速:60 km/h,温度:25°C
6. Host A离开组播组
Host A不再需要接收组播组 239.255.10.1
的数据,发送IGMP离开组报文。
报文数据:
01:00:5E:00:00:02
(组播MAC地址,对应IP地址 224.0.0.2
)224.0.0.2
(所有路由器的组播地址)192.168.1.2
(Host A的IP地址)0x17
(IGMPv2离开组)0
0x9ABC
(示例值)239.255.10.1
报文示例:
Ethernet Header:
Destination MAC: 01:00:5E:00:00:02
Source MAC: 00:1B:2C:3D:4E:5F
IP Header:
Destination IP: 224.0.0.2
Source IP: 192.168.1.2
IGMP Payload:
Type: 0x17
Max Response Time: 0
Checksum: 0x9ABC
Group Address: 239.255.10.1
7. 车载网关发送特定组查询(Group-Specific Query)
车载网关收到Host A的离开组报文后,发送特定组查询报文,确认是否还有其他设备属于组播组 239.255.10.1
。
报文数据:
01:00:5E:7F:0A:01
(组播MAC地址,对应IP地址 239.255.10.1
)239.255.10.1
(组播组地址)192.168.1.1
(车载网关的IP地址)0x11
(成员查询)10
(单位:0.1秒,即1秒)0xDEF0
(示例值)239.255.10.1
报文示例:
Ethernet Header:
Destination MAC: 01:00:5E:7F:0A:01
Source MAC: 00:1A:2B:3C:4D:5E
IP Header:
Destination IP: 239.255.10.1
Source IP: 192.168.1.1
IGMP Payload:
Type: 0x11
Max Response Time: 10
Checksum: 0xDEF0
Group Address: 239.255.10.1
8. Host B响应特定组查询
Host B仍然属于组播组 239.255.10.1
,发送IGMP成员报告报文。
报文数据:
01:00:5E:7F:0A:01
(组播MAC地址,对应IP地址 239.255.10.1
)239.255.10.1
(组播组地址)192.168.1.3
(Host B的IP地址)0x16
(IGMPv2成员报告)0
0x5678
(示例值)239.255.10.1
报文示例:
Ethernet Header:
Destination MAC: 01:00:5E:7F:0A:01
Source MAC: 00:1C:2D:3E:4F:5A
IP Header:
Destination IP: 239.255.10.1
Source IP: 192.168.1.3
IGMP Payload:
Type: 0x16
Max Response Time: 0
Checksum: 0x5678
Group Address: 239.255.10.1
以上流程展示了车载以太网通过IGMP协议实现组播数据交互的完整过程,包括一般查询、成员报告、组播数据转发、离开组和特定组查询的报文数据。通过IGMP协议,车载网络能够高效管理组播组成员,确保组播数据仅发送给需要的设备。
以上是对IGMP协议在以太网协议栈的位置、IGMP协议的作用、IGMP报文结构、通信原理以及示例进行了详细介绍。希望能对大家学习车载以太网有所帮助!