每日一个计算机小知识:IGMP

每日分享一个有趣的计算机小知识,今日话题:IGMP

IGMP是Internet Group Management Protocol的缩写,互联网组管理协议,它是TCP/IP协议族中负责IP组播成员管理的一个子协议。和ICMP协议一样都是基于IP的网络协议,且都运行在OSI模型的网络层,它有如下3个版本:

IGMPv1

1989年,RFC 1112第一次详细定义了IGMP协议规范,提供了基本的查询和响应机制,主机能够通知路由器加入多播组,但缺乏对主机离开多播组的通知机制。

IGMPv2

1997年,IGMP版本2规范发布RFC 2236,增加了主机离开组的通知机制,减少了不必要的成员报告消息,并改进了路由器的查询机制,使得多播管理更加灵活和高效。

IGMPv3

2002年,IGMP版本3规范发布RFC 3376,支持源特定组播(SSM,Source-Specific Multicast),允许主机指定要接收或屏蔽的源IP,进一步提高了多播通信的灵活性和安全性。

ICMP主要用于局域网(LAN)中,主要功能就是让主机能够向本地路由器报告它们希望接收的多播流,从而实现数据的高效传输,优化带宽使用。

对于多播不理解的,我们可以先来看下常见的网络数据传输方式:

1. 单播 Unicast

一对一传输,一个发送方只能将数据传递给一个指定的接收方。若有多个接收方,发送方需重复发送相同数据,接收方越多,发送端压力越大,适用于个人化、点对点的交互场景,比如浏览网页、微信聊天、下载文件、在线购物下单等。

2. 广播 Broadcast

一对所有传输,发送方只需发送一份数据,数据会自动扩散到当前网段内的所有设备,所有设备强制接收。多用于局域网内的通用通知或查询,比如ARP协议地址解析、路由器DHCP自动分配IP地址等。

3. 组播/多播 Multicast

一对多传输,仅支持特定网络内传输,发送方仅发送1份数据,数据会精准传输给所有"主动加入组播组"的接收方,未加入的设备则收不到。不管有多少个接收方,发送方始终只需发送1份数据,带宽利用率高。适用于多用户获取相同内容的场景,比如IPTV直播、企业视频会议、股市实时行情推送、在线课堂等。

IGMP协议需将报文封装在IP数据包中传输(IP协议版本号为2),主要分为查询报文和报告报文2类:

查询报文 Query

由组播路由器发送,用于询问网段内是否有设备加入特定组播组,如:通用查询General Query(用于询问所有设备加入了哪些组)、特定组查询Group-Specific Query(指定某一组播组,询问还有没有设备在接收当前组的数据流)、特定源特定组查询报文Group-Source-Specific Query(针对某一个组播组+某几个特定源IP,向终端询问是否还需要从这些源接收这个组播组的数据,仅IGMPv3支持)。

报告报文 Report

由终端主机发送,用于上报主机自己的组播成员身份,如:成员报告报文Membership Report(终端主动告知路由器加入或继续订阅某个组播组)、离开组报文Leave Group(仅IGMPv2/3支持,终端主动告知路由器不再需要某组播组的数据)。

在没有IGMP时,要1对多传输只能将多播流量发送到整个网络,浪费带宽资源。而通过IGMP协议,路由器只会向需要接收多播流量的主机转发数据,从而显著提升网络效率,减少不必要的带宽占用。

相关推荐
小码哥_常18 分钟前
Java后端定时任务抉择:@Scheduled、Quartz、XXL - Job终极对决
后端
平生幻22 分钟前
TCP协议与UDP协议的区别
网络协议·tcp/ip·udp
uzong23 分钟前
Skill 被广泛应用,到底什么是 Skill,今天详细介绍一下
人工智能·后端·面试
小码哥_常36 分钟前
Kafka平替!SpringBoot+Redis Stream+消费组打造极致消息队列
后端
IT_陈寒2 小时前
Redis缓存击穿:3个鲜为人知的防御策略,90%开发者都忽略了!
前端·人工智能·后端
虾..3 小时前
UDP协议
网络·网络协议·udp
uzong3 小时前
Harness Engineering 是什么?一场新的 AI 范式已经开始
人工智能·后端·架构
唐叔在学习3 小时前
Python桌面端应用最小化托盘开发实践
后端·python·程序员
yuhaiqiang3 小时前
被 AI 忽悠后,开始怀念搜索引擎了?
前端·后端·面试
二闹4 小时前
Python文件读取三巨头你该选择哪一个?
后端·python