每日一个计算机小知识: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 分钟前
Excel导入时产生特殊字符处理
java·后端·java ee
IT_陈寒1 小时前
Redis的DEL命令竟然没删掉数据?我踩的这个坑你得知道
前端·人工智能·后端
用户938515635071 小时前
Docker + Nginx + Node.js:从“我的电脑能跑,你的电脑跑不了”到一键部署
后端·nginx·docker
陆枫Larry1 小时前
两步验证(2FA )到底是什么?
后端
JavaGuide1 小时前
我用 Claude Code/ZCode+GLM-5.3 从零做了一款 Agent 游戏!
前端·后端
程序员清风1 小时前
专业再升级!程序员专属显示器明基RD280UG上手实测!
java·后端·面试
ryan_9962 小时前
MCP Transport 完整指南:stdio 与 Streamable HTTP 到底怎样传消息
网络·网络协议·http
刘立军2 小时前
RESTful 与契约优先:规范接口定义,统一接口设计范式
后端·架构·ai编程
JavaGuide3 小时前
GitHub 4.5 万+ Star!GitNexus 把代码仓库变成了 Claude Code / Codex 能查询的知识图谱
后端·ai编程
子兮曰3 小时前
DeepSeek Harness 架构深潜:一个把 Agent 运行时做成纯插件树的开源 Harness
前端·后端·deepseek