IGMP协议

简介:

IGMP:因特网组管理协议,手机TCP/IP协议族中负责IP组播成员管理的协议,它用来在接受者和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

接受者与路由器需要交换哪些信息呢

1.接受者需要声明自己要接受哪个组的数据

2.路由器需要了解哪些组播组存在接受者

组成员管理-IGMP:因特网组管理协议

IGMP协议运行在主机与组播路由器之间

作用:

主机侧:通过IGMP协议向路由器通告组成员关系

路由器侧:通过IGMP协议维护组成员关系

IGMPv1的工作机制:

wKioL1mdIiSRPaEvAAB5Cc8h9lM515.png

IGMPv1版本支持两种报文:

普遍组查询报文(General Query):路由器会周期性的向224.0.0.1这个地址发送查询报文,默认周期时间为60S

成员关系报告报文(Membership Report):用于主机加入某个组播组

如果所示,普遍组查询和响应过程如下:

①RTA发送普遍组的查询报文

②网段内的所有主机都收到该查询报文,clintA和clintC是属于G1组的,所以他们就启动定时器Timer-G1,clintB属于G2组,所以启动timer-G2。定时器的范围是0-10s,定时器先超时的主机发送该组的成员关系

③本来当RTA发送一个查询报文的时候,同一个网段内的所有主机都需要给RTA发送一个消息确认,这样就造成了网段内的大量流量,所以,当clintC收到clintA发送的成员关系报文之后,则停止定时器,不在发送针对G1的成员关系报文,这样就减少了协议流量,这就是抑制机制

IGMPv1成员加入:

如果有clintD加入这个组,为了快速接受组播数据,clintD会主动发送IGMP成员关系报文,标识希望加入这个组,RTA收到以后,就会向该网段转发数据

组成员的离开:

静默离开:不打任何招呼就走了,非常讨厌啊

组成员离开的话,RTA不会收到组成员关系报文,之后会在130s之后会删除这个组播

查询器选举:

依赖于组播路由协议

选举规则:

优先级以大为优

若相同,IP地址以大为优


IGMPv2:

改进了组成员离开

ClintB向本网段内的所有组播路由器(亩的地址为224.0.0.2)发送针对组G2离开的消息,然后查询器收到了离开的报文,会发送针对这个G2的特定组的查询报文,同时启动组成员关系定时器,每隔1s发送一次,一共发送2次,速度还是很快的,比V1版本强太多了。如果G2组没有成员了,那么路由器就删除了这个组播,如果这个组播还有主机,那么就接着向该网段转发数据

改进了查询器选举

独立的查询器选举机制

所有的IGMPv2版本的路由器在初始状态都认为自己是查询器,然后他们向本网段内的路由器和主机发送普遍组查询报文,然后另一个路由器收到这个查询报文之后,会将报文中的IP地址和自己的IP地址进行比较,哪个IP地址小就成为查询器,也就是winer。

IGMPv3版本:

这个版本很简单啦,简单的来说,就是哪些我想接受,哪些我不想接受,把不想接受的过滤掉,留下我想接受的,简单吧。

各个版本的差异:

wKiom1mdIkDhTEf_AAAwnvP_jwc923.png



本文转自 towardly 51CTO博客,原文链接:http://blog.51cto.com/brighttime/1958640


相关文章
|
网络协议 程序员 测试技术
用了TCP协议,就一定不会丢包吗? 1
用了TCP协议,就一定不会丢包吗?
375 0
用了TCP协议,就一定不会丢包吗? 1
|
Java API
JDK API文档中文版(1.6、1.8、1.9)(附百度网盘下载地址)
JDK API文档中文版(1.6、1.8、1.9)(附百度网盘下载地址)
7324 3
JDK API文档中文版(1.6、1.8、1.9)(附百度网盘下载地址)
|
传感器 Rust 安全
为什么物联网领域使用Rust的项目越来越多?
2021年2月8日,Rust基金会成立,Rust商标及所有权移交给基金会。
为什么物联网领域使用Rust的项目越来越多?
|
存储 芯片 内存技术
计算机组成原理常见面试题目总结,含答案
计算机组成原理常见面试题目总结,含答案
|
API UED 容器
深入探索 Element UI:自定义滚动条与弹出层管理的技巧
在这篇博客中,我们将深入探讨 Element UI 中的自定义滚动条及弹出层管理技巧。文章详细介绍了 el-scrollbar 组件的使用和参数设置,以及 PopupManager 如何有效管理弹出层的 z-index。我们还将探讨如何实现灵活的全屏组件,利用 vue-popper 创建自定义弹出层,最后介绍 ClickOutside 指令的用法。这些高级技巧将帮助你提升 Element UI 应用程序的用户体验与交互灵活性。
1300 1
深入探索 Element UI:自定义滚动条与弹出层管理的技巧
|
机器学习/深度学习 人工智能 Linux
anaconda conda 切换为国内源 、windows 和 Linux配置方法、 添加清华源——【一文读懂】
请问为什么我使用 Conda 搭建一个深度学习环境半个多小时都没成,而你10分钟就随手搭建一个环境; 讲道理,这就像搬砖,搬的久了,还不能允许我一天多拉几车吗
6596 0
anaconda conda 切换为国内源 、windows 和 Linux配置方法、 添加清华源——【一文读懂】
|
存储 JSON 索引
一文让你彻底搞懂 Python 字典是怎么实现的
一文让你彻底搞懂 Python 字典是怎么实现的
430 13
|
网络协议 网络架构
【第三期】计算机网络常识/网络分层模型与数据包封装传输过程
【第三期】计算机网络常识/网络分层模型与数据包封装传输过程
426 0
|
存储 固态存储 芯片
计算机中内存与存储
【7月更文挑战第28天】
2401 1
|
安全 Java API
构建基于Spring Boot的REST API安全机制
构建基于Spring Boot的REST API安全机制