IGMPv2协议如何实现组成员关系的建立和维护?

IGMPv2协议如何实现组成员关系的建立和维护?,第1张

IGMPv2协议如何实现组成员关系的建立和维护?

基本概念:

组播

组播组使用一个IP组播地址标识。任何用户主机(或其他接收设备),加入一个组播组,就成为了该组成员,可以识别并接收以该IP组播地址为目的地址的IP报文。

组播源

以组播组地址为目的地址,发送IP报文的信源称为组播源。

一个组播源可以同时向多个组播组发送数据。

多个组播源可以同时向一个组播组发送报文。

组播组成员

组播组中的成员是动态的,网络中的用户主机可以在任何时刻加入和离开组播组。组成员可能广泛分布在网络中的任何地方。

组播源通常不会同时是数据的接收者,不属于组播组成员。

说明:

下文以收看某电视频道的节目为例,可以帮助理解IP组播中的概念。

组播组是发送者和接收者之间的一个约定,如同电视频道。

电视台是组播源,它向某频道内发送数据。

电视机是接收者主机,观众打开电视机选择收看某频道的节目,表示主机加入某组播组;然后电视机播放该频道电视节目,表示主机接收到发送给这个组的数据。

观众可以随时控制电视机的开关和频道间的切换,表示主机动态的加入或退出某组播组。

组播分发树

根据组播组成员的分布情况,组播路由协议为多目的端的数据包转发建立树型路由。报文在距离组播源尽可能远的分叉路口才开始复制和分发,最终传送到组播组成员。

组播协议:

组播组成员关系管理

组播组成员关系管理是指在主机与交换机之间建立和维护组成员关系。

IGMP是用于IPv4网络的组播组成员关系管理协议,有以下特点:

包含三个版本,分别是IGMPv1、IGMPv2和IGMPv3。新版本完全兼容旧版本。目前应用最广泛的是IGMPv2。

三个版本都支持ASM模型;IGMPv3可以直接支持SSM模型,而IGMPv1和IGMPv2需要结合SSM-Mapping技术才能支持SSM模型。

MLD是用于IPv6网络的组播组成员关系管理协议,有以下特点:

包含两个版本,分别是MLDv1和MLDv2。

MLDv1的功能与IGMPv2相似。

MLDv2的功能与IGMPv3相似。

两个版本都支持ASM模型;MLDv2可以直接支持SSM模型,而MLDv1需要结合SSM-Mapping技术才能支持SSM模型。

建立并维护组播路由

组播路由也称为组播分发树,指从一个组播源到所有组成员的数据传输路径。组播路由单向、无环且路径最短。通过在交换机之间建立和维护组播路由,网络才能够正确、高效地转发组播数据包。

域内组播路由协议:用来在自治系统AS(Autonomous System)内发现组播源并构建组播分发树,将信息传递到接收者。PIM是典型的域内组播路由协议,有两套独立的模式:

DM(Dense Mode):适用于小规模、接收者分布较为密集的情况,支持ASM模型。

SM(Sparse Mode):适用于大规模、接收者分布较为稀疏的情况,同时支持ASM模型和SSM模型。

域间组播路由协议:用来在AS之间传递组播源信息,从而跨域建立组播路由,实现域间组播资源共享。MSDP是典型的域间组播路由协议,通常与MBGP协同工作。MSDP适用于各域内运行PIM-SM的情况。

对于SSM模型来说,没有域内和域间的划分。由于接收者预先知道组播源的具体位置,因此可以借助PIM-SM的部分功能直接创建组播传输路径。

如果觉得回答能帮助到你,请给个最佳,谢谢!

RTSP实时流传输协议

是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTP传送的是多媒体数据。HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的MMS协议(Microsoft Media Server Protocol)是用来访问并且流式接收Windows Media服务器中.asf文件的一种协议。MMS协议用于访问Windows Media发布点上的单播内容。在线广播电台应用较多。

MMS协议(Microsoft Media Server Protocol)是用来访问并且流式接收Windows Media服务器中.asf文件的一种协议。MMS协议用于访问Windows Media发布点上的单播内容。在线广播电台应用较多。

Internet 组管理协议(IGMP)是因特网协议家族中的一个组播协议,用于 IP 主机向任一个直接相邻的路由器报告他们的组成员情况。IGMP 信息封装在 IP 报文中,其 IP 的协议号为 2。IGMP 具有三种版本,即 IGMP v1、v2 和 v3。它用来在ip主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。igmp不包括组播路由器之间的组成员关系信息的传播与维护,这部分工作由各组播路由协议完成。所有参与组播的主机必须实现igmp。

参与ip组播的主机可以在任意位置、任意时间、成员总数不受限制地加入或退出组播组。组播路由器不需要也不可能保存所有主机的成员关系,它只是通过igmp协议了解每个接口连接的网段上是否存在某个组播组的接收者,即组成员。而主机方只需要保存自己加入了哪些组播组。

igmp在主机与路由器之间是不对称的:主机需要响应组播路由器的igmp查询报文,即以igmp membership report报文响应;路由器周期性发送成员资格查询报文,然后根据收到的响应报文确定某个特定组在自己所在子网上是否有主机加入,并且当收到主机的退出组的报告时,发出特定组的查询报文(igmp版本2),以确定某个特定组是否已无成员存在。

到目前为止,igmp有三个版本:igmp版本1(由rfc1112定义)、igmp版本2(由rfc2236定义)和igmp版本3。目前应用最多的是版本2。

igmp版本2对版本1所做的改进主要有:

(1)共享网段上组播路由器的选举机制

共享网段表示一个网段上有多个组播路由器的情况。在这种情况下,由于此网段上运行igmp的路由器都能从主机那里收到成员资格报告消息,因此,只需要一个路由器发送成员资格查询消息,这就需要一个路由器选举机制来确定一个路由器作为查询器。

在igmp版本1中,查询器的选择由组播路由协议决定;igmp版本2对此做了改进,规定同一网段上有多个组播路由器时,具有最小ip地址的组播路由器被选举出来充当查询器。

(2)igmp版本2增加了离开组机制

在igmp版本1中,主机悄然离开组播组,不会给任何组播路由器发出任何通知。造成组播路由器只能依靠组播组响应超时来确定组播成员的离开。而在版本2中,当一个主机决定离开时,如果它是对最近一条成员资格查询消息作出响应的主机,那么它就会发送一条离开组的消息。

(3)igmp版本2增加了对特定组的查询

在igmp版本1中,组播路由器的一次查询,是针对该网段下的所有组播组。这种查询称为普遍组查询。

在igmp版本2中,在普遍组查询之外增加了特定组的查询,这种查询报文的目的ip地址为该组播组的ip地址,报文中的组地址域部分也为该组播组的ip地址。这样就避免了属于其它组播组成员的主机发送响应报文。

(4)igmp版本2增加了最大响应时间字段

igmp版本2增加最大响应时间字段,以动态地调整主机对组查询报文的响应时间

MMS协议(Microsoft Media Server Protocol)是用来访问并且流式接收Windows Media服务器中.asf文件的一种协议。MMS协议用于访问Windows Media发布点上的单播内容。在线广播电台应用较多

MulticastSocket 发送组播消息,一些手机上可以发送、接收  组播 消息,有些手机不可用

     1>.能正常发送接收的手机,向组播地址发送了组播消息后,同时会向组播地址发送一个  IGMP v2的协议

2>.能发送,接收不到组播消息的手机设备,可以发现设备没有向组播地址发送IGMP协议

3>.而查看手机设备,在   /proc/net/   目录下,有igmp文件的设备会发送IGMP协议,能正常完成组播消息收发,而没有igmp文件的,就是不能完成组播消息收发的。igmp是IPv4下的协议文件,igmp6是IPv6的协议。可以看到所有设备都支持IPv6的igmp

4>.在Android系统下,编译Linux kernel时有一config  CONFIG_IP_MULTICAST ,如果是定制系统在编译系统的时候配置这个选项   CONFIG_IP_MULTICAST=y  ,就能enable组播功能。但是有很多系统厂商在编译的时候都默认把这个config给disable了。

参考:

How can I know if IP Multicast is enabled

Android App用MulticastSocket监听组播,为什么连接到不

Many devices have multicast disabled in the kernel


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12105301.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存