你好,这里是网络技术联盟站。
前几天给大家带来了ICMP的文章:
- 什么是 ICMP ?ping和ICMP之间有啥关系?
在多个平台广受大家喜爱,有朋友又想看IGMP的文章,咋一看这两个技术中间就差了一个字母,不过两者可是完全不一样的技术,那么今天瑞哥就安排一下!
让我们直接开始!
什么是IGMP?
- 英文全称:
Internet Group Management Protocol
- 中文名称:互联网组管理协议
- 第 3 层协议
- IP 协议号:2
- IPv4 组播的关键组件
- IGMP 有 3 个版本:IGMPv1、IGMPv2 和 IGMPv3
IGMP允许主机将其组播成员身份通告给相邻的交换机和路由器,主机通过向其本地组播路由器发送 IGMP 消息来识别组成员身份,在 IGMP 下,路由器侦听 IGMP 消息并定期发送查询来发现特定子网上哪些组是活动的或非活动的。
流量类型
流量一般三种类型:
单播
单播英文名叫Unicast,是点对点传输,单播需要一个发送方和一个接收方使用基于会话的协议发送数据包,例如TCP和UDP。
- TCP的常见传输模式示例有http、telnet、smtp。
- UDP 的常见传输模式示例有 VoIP、视频会议、流媒体、实时服务。
广播
广播英文名叫Broadcast,单个设备向网络上的所有其他设备发送通信。
LAN 上广播流量的常见示例包括查询 LAN 上所有计算机的 ARP 消息。
广播流量不是可路由流量。
组播
组播英文名叫Multicast,也叫多播,支持从一个节点到多个接收者的单个数据传输副本,发送设备会将 UDP 数据包转发到组播 IP 地址和端口,以便所有想要接收流的目的地都可以接收传输,从而节省带宽和网络开销。
组播流量是可路由的流量,但需要 IGMP 和 PIM 来控制整个网络的泛滥、使上行链路饱和并可能导致网络瘫痪。
组播版本
在组播介绍中,我们介绍了组播有 3 个版本:
我们来稍微详细的了解一下。
IGMPv1
IGMPv1 是 TCP 网络中使用的通信协议的第一个开发和发布版本,对于这个版本,定义了组地址0.0.0.0
,并定义了224.0.0.1
作为一般查询的目标地址。
这些路由器生成请求的标准时间是 60 秒,并允许计算机加入对应的组播组。
随后,向对应的组播地址发出成员资格请求。
IGMPv1 不允许计算机通过超过时间限制自行离开组,从而将计算机从其访问的组中删除。
IGMP 头的总长度为 64 位,前 8 位表示协议版本和消息类型。
lGMPv1报文头如下:
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包头如下:
IGMPv3
IGMPv3 版本在 RFC 3376 和 RFC 4604 在 2002 中定义,在这个版本中,0.0.0.0
和 224.0.0.1
地址被认为是一个组和目标地址,间隔时间与版本 2 相同。
新的特点是可以特殊选择组播流,这大大降低了对网络的需求,并且由于在传输过程中不使用未知或随机源,因此还提供了更高的安全性。
前两个 32 位序列与 lGMPv2 头类型、最大响应时间、校验和和组地址相同。
IGMPv3包头如下:
IGMP如何工作?
我们已经知道组播就是发送方向一组主机发送一条消息,组播路由器有责任将消息复制并转发给组播组的每个主机,组播组的每个主机都会收到消息,除非在接收主机上应用了过滤器。
IGMP协议工作的最核心部分就是管理主机在组播组中的成员关系,在管理组播组中主机或路由器的成员身份时,协议必须处理以下过程:
ICMP消息
暂且不看IGMP的版本,一般来说,从大的方面,IGMP消息有以下这六种:
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是默认版本。
本文主要介绍了:
- 什么是IGMP?
- 流量类型
- 单播
- 广播
- 组播
- 组播版本
- IGMPv1
- IGMPv2
- IGMPv3
- IGMP如何工作?
- ICMP消息
- Membership Report 成员报告消息
- Leave 离开消息
- General Query 一般查询消息
- Specific Query 具体查询消息
- Membership Query 成员查询消息
- IGMP优缺点
- 优点
- 缺点
- IGMP 侦听
- ICMP和IGMP的区别
- 总结
谢谢您的阅读,如果有任何疑问,请在评论区与我讨论!