IGMP协议及抓包分析
IGMP使用详解
IGMP一、Internet 组管理协议IGMP 是Internet 组管理协议(Internet Group Management Protocol)的缩写。
IGMP 在TCP/IP 协议中的位置:应用层协议(FTP,HTTP,SMTP)TCP UDP ICMP IGMPIPARP RARPMACPHY在了解 IGMP 协议的之前,我们首先看看以太网对报文的处理方法。
我们知道,目前使用的以太网(ethernet)有一个特点,当一个报文在一条线路上传输时,该线路上的所有主机都能够接收到这个报文。
只是当报文到达MAC 层时,主机会检测这个报文是不是发送给自己的,如果不是该报文就会被丢弃。
常用的抓包软件ethereal, sniffer 都可以捕获当前物理线路上的所有报文,不管该报文的目的地址是不是自己。
以太网中有一种特殊的报文广播包其目的mac 地址全为0xff,所有的主机都必须接收。
说到 IGMP 不能不提“组播”的概念。
假如现在一个主机想将一个数据包发给网络上的若干主机,有什么方法可以做到呢一个方法是采用广播包发送,这样网络上的所有主机都能够接收到,另一种方式是将数据包复制若干份分别发给目的主机。
这两个方法都存在问题:方法一,广播的方法导致网络上所有的主机都能接收到,占用了网络上其他主机的资源。
方法二,由于所有目的主机接收的报文都是相同的,采用单播方式显然效率很低。
为了解决上面所述的问题,人们提出了“组播”的概念,控制一个报文发送给对该报文感兴趣的主机,IGMP 就是组播管理协议。
我们来看一个简单的组播应用场景PC,如何处理呢首先STB 要发起一个连接请求,也就是IGMP report 报文,加入到电视直播的组播组中。
同样当STB 要断开连接的时候就发送一个IGMP leave 报文。
Router 也需要知道当前有哪些STB 加入了组播组,防止有的STB 异常掉线了,却依然占用系统资源。
Router 周期性的发送IGMP query 报文查询组播组情况,STB 接到query 报文后发送report 消息到router。
IGMP协议详解与测试方法
拟 制 人时 间IGMP 协议详解与测试方法1 基本信息1.1 摘要本文主要介绍IGMP协议与我司终端产品IGMP的测试方法。
1.2关键字IGMP,SNOOPING1.3 缩略语IGMP Internet Group Management Protocol Internet 组管理协议SMB SmartBits 思博伦通信网络分析仪CPE Customer Premise Equipment 用户侧设备2 协议解释2.1 IGMP 作用¾ 实现一对多数据流业务,有很多种实现方式,如广播,但是浪费带宽,会造成广播风暴:¾ 如果用IGMP 的话,根据成员的需要去接受数据流业务:组播成员2组播成员12.2 IGMP协议¾IGMP协议用于IPv4系统向任何邻居组播路由器报告其组播成员资格。
IP组播路由器自己本身也可以是一到多个组播组的成员。
这时,组播路由器要实现协议的组播路由器部分和组成员部分。
¾报文格式IGMP V1 报文格式Ver Type Reserved ChecksumGroup AddressIGMP V2 报文格式Type Max Resp Time ChecksumGroup AddressMembership Query: 成员关系查询(0x11)V1 Membership Report: 版本 1 成员关系报告(0x12)V2 Membership Report: 版本 2 成员关系报告(0x16)Leave Group: 离开组报告(0x17)¾IGMP组播地址组播IP地址用于标识一个IP组播组。
IANA把D类地址空间分配给IP组播,其范围是从224.0.0.0到239.255.255.255。
如下图所示(二进制表示),IP组播地址前四位均为1110。
八位组(1)八位组(2)八位组(3)八位组(4)1110XXXX XXXXXXXX XXXXXXXX XXXXXXXX组播地址的分类:保留——224.0.0.0 - 224.0.0.255用户组播地址——224.0.1.0 - 238.255.255.255本地管理组——239.0.0.0 - 239.255.255.255 (用于私人组播领域,类似私有IP地址)¾IGMP组播地址2层的MAC地址是如何与3层的IP地址进行映射的呢?通过将MAC地址的前25位强行规定位01.00.5e,而后23位对应IP地址的后23位,而组播IP地址的前4位均相同如:IP地址: 1110yyyy.yxxxxxxx.xxxxxxx.xxxxxxxxMAC地址: 00000001.00000000.01011110.0xxxxxxx.xxxxxxx.xxxxxxxx2.3 IGMP版本¾IGMP的不同版本Version 1:在[RFC-1112]中声明,是第一个广泛使用的IGMP版本。
IGMP协议分析组播协议的工作机制
IGMP协议分析组播协议的工作机制IGMP(Internet Group Management Protocol,互联网组管理协议)是一种网络协议,用于多播的组播管理。
组播是一种网络传输方式,可以在单一数据流上同时发送给多个目标设备。
IGMP协议允许主机加入或离开一个多播组,以及路由器为特定多播组提供流量转发。
IGMP协议的工作机制基于主机和路由器之间的交互。
主机通过发送特定的IGMP报文向路由器注册加入或离开一个多播组的意图。
路由器则负责根据这些报文来进行相应的组播流量管理与转发。
在IGMP协议中,主机和路由器的交互可以分为两个角色:主机可以是一个多播组的成员,路由器则充当组播流量的转发和管理者。
主机角色中的IGMP报文主要分为三种类型:成员关系查询报文(Membership Query)、成员关系报告报文(Membership Report)和成员离开报文(Leave Group)。
成员关系查询报文用于路由器定期发送以查询网络中的主机是否还是某个多播组的成员。
成员关系报告报文则是主机向路由器发送的,用于通知路由器它们的成员关系。
成员离开报文则是主机主动发送给路由器,用于通知路由器其离开了某个多播组。
路由器角色中的IGMP报文主要有两种类型:成员关系查询报文(Membership Query)和成员关系报告报文(Membership Report)。
成员关系查询报文用于路由器周期性地向多播组的成员发送,以获取其成员关系,并维护组播组的活跃状态。
成员关系报告报文则是路由器在接收到主机发来的成员关系报告后,向其他路由器发送的,以便提供多播组的流量转发和管理。
IGMP协议的工作流程如下:1. 主机在加入一个多播组时,会向网络中的路由器发送成员关系报告报文,以通知路由器其加入了该组。
2. 路由器在收到成员关系报告报文后,会更新其组播组成员数据库,记录下该主机加入了该组。
3. 路由器会定时发送成员关系查询报文,以获取组播组的成员列表,并维护组播组的活跃状态。
IGMP协议及抓包分析
IGMPIGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。
它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
到目前为止,IGMP 有三个版本:1、IGMPv1(由RFC 1112 定义)2、IGMPv2(由RFC 2236 定义)3、IGMPv3(由RFC 3376定义)一、IGMPv11.1报文格式1、版本:版本字段包含IGMP版本标识,因此设置为1。
2、类型:成员关系查询(0x11)成员关系报告(0x12)3、校验和4、组地址:当一个成员关系报告正被发送时,组地址字段包含组播地址。
当用于成员关系查询时,本字段为0,并被主机忽略。
1.2组成员加入过程当一个主机希望接收一个组播组的数据,则发送成员加入报告给组播组。
IGMPv1 join包如下:1.3查询与响应过程路由器RTA(IGMP查询器)周期性地(默认60秒)向子网内所有主机(224.0.0.1代表子网内所有主机)发送成员关系查询信息。
所有主机收到IGMPv1成员关系查询信息,一主机首先向组播组发送IGMPv1成员关系报告。
组的其他成员监听到报告后抑制自己的成员关系报告发送。
1.4 抑制机制当主机收到IGMP成员关系查询时,对它已经加入的每个组播组启动一个倒计数报告计时器。
各个报告计时器初始值为从0到最大响应之间一个随机数,默认值是10秒。
计时器到时的主机则主动发送成员关系报告,目的地为该主机所属的组地址。
其它主机收到该成员关系报告,则抑制成员关系报告的发送,并删除计时器。
1.5 组成员离开过程主机“默不作声”地离开组(不发送报告了)。
路由器发送成员关系查询信息。
路由器没有收到该组的IGMP报告,则再发送成员关系信息(3次查询周期过后)。
组播组超时,剪枝。
二、IGMPv22.1报文格式1、类型成员关系查询(0x11)常规查询:用于确定哪些组播组是有活跃的,即该组是否还有成员在使用,常规查询地址由全零表示;特定组查询:用于查询某具体组播组是否还有组成员。
详解IGMP(Internet组管理协议)报文及协议
1引言本文将介绍用于支持主机和路由器进行多播的Internet组管理协议(IGMP)。
它让一个物理网络上的所有系统知道主机当前所在的多播组。
多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。
IGMP在RFC 1112中定义[Deering 1989].正如ICMP一样,IGMP 也被当作IP 层的一部分。
IGMP报文通过IP数据报进行传输。
不像我们已经见到的其他协议,IGMP有固定的报文长度,没有可选数据。
图13-1显示了IGMP报文如何封装在IP数据报中。
IGMP(Internet组管理协议)报文及协议(图一)IGMP报文通过IP首部中协议字段值为2来指明。
2 IGMP报文图1 3 - 2显示了长度为8字节的IGMP报文格式。
IGMP(Internet组管理协议)报文及协议(图二)这是版本为1的IGMP.IGMP类型为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。
检验和的计算和ICMP协议相同。
组地址为D类IP地址。
在查询报文中组地址设置为0,在报告报文中组地址为要参加的组地址。
在下一节中,当介绍IGMP如何操作时,我们将会更详细地了解它们。
3 IGMP 协议3.1 加入一个多播组多播的基础就是一个进程的概念(使用的术语进程是指操作系统执行的一个程序),该进程在一个主机的给定接口上加入了一个多播组。
在一个给定接口上的多播组中的成员是动态的—它随时因进程加入和离开多播组而变化。
这里所指的进程必须以某种方式在给定的接口上加入某个多播组。
进程也能离开先前加入的多播组。
这些是一个支持多播主机中任何API所必需的部分。
使用限定词“接口”是因为多播组中的成员是与接口相关联的。
一个进程可以在多个接口上加入同一多播组。
Stanford大学伯克利版Unix中的IP 多播详细说明了有关socket API的变化,这些变化在Solaris 2.x和ip(7)的文档中也提供了。
这里暗示一个主机通过组地址和接口来识别一个多播组。
IGMP及抓包分析
IGMPIGMP 就是Internet Group Management Protocol(互联网组管理协议)的简称。
它就是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机与与其直接相邻的组播路由器之间建立、维护组播组成员关系。
到目前为止,IGMP 有三个版本:1、IGMPv1(由RFC 1112 定义)2、IGMPv2(由RFC 2236 定义)3、IGMPv3(由RFC 3376定义)一、IGMPv11、1报文格式1、版本:版本字段包含IGMP版本标识,因此设置为1。
2、类型:成员关系查询(0x11)成员关系报告(0x12)3、校验与4、组地址:当一个成员关系报告正被发送时,组地址字段包含组播地址。
当用于成员关系查询时,本字段为0,并被主机忽略。
1、2组成员加入过程当一个主机希望接收一个组播组的数据,则发送成员加入报告给组播组。
IGMPv1 join包如下:1、3查询与响应过程路由器RTA(IGMP查询器)周期性地(默认60秒)向子网内所有主机(224、0、0、1代表子网内所有主机)发送成员关系查询信息。
所有主机收到IGMPv1成员关系查询信息,一主机首先向组播组发送IGMPv1成员关系报告。
组的其她成员监听到报告后抑制自己的成员关系报告发送。
1、4 抑制机制当主机收到IGMP成员关系查询时,对它已经加入的每个组播组启动一个倒计数报告计时器。
各个报告计时器初始值为从0到最大响应之间一个随机数,默认值就是10秒。
计时器到时的主机则主动发送成员关系报告,目的地为该主机所属的组地址。
其它主机收到该成员关系报告,则抑制成员关系报告的发送,并删除计时器。
1、5 组成员离开过程主机“默不作声”地离开组(不发送报告了)。
路由器发送成员关系查询信息。
路由器没有收到该组的IGMP报告,则再发送成员关系信息(3次查询周期过后)。
组播组超时,剪枝。
二、IGMPv22、1报文格式1、类型成员关系查询(0x11)常规查询:用于确定哪些组播组就是有活跃的,即该组就是否还有成员在使用,常规查询地址由全零表示;特定组查询:用于查询某具体组播组就是否还有组成员。
实验五 利用WIRESHARK分析IGMP协议
协议分析实验报告年级:姓名:学号:实验日期: 2013-04-10实验名称:利用wireshark分析IGMP协议一、实验目的分析IGMP协议二、实验环境与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE等软件。
三、协议简介Internet组管理协议(IGMP)是因特网协议家族中的一个组播协议,用于IP主机向任一个直接相邻的路由器报告他们的组成员情况。
IGMP信息封装在IP报文中,其IP的协议号为2。
它用来在ip主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
igmp不包括组播路由器之间的组成员关系信息的传播与维护,这部分工作由各组播路由协议完成。
所有参与组播的主机必须实现igmp。
报告报文字段说明:Type(8bit)0x22成员关系报告Reserved(8bit)和Reserved(16bit):都是表示保留字段,不过在IGMP中为了使它们都保持对应的长度,所以才有了长度上的区别,它在发送的时候是以0填充,在接收的时候是不作任何处理的。
校验和校验和是对整个IGMP消息以16位为一段进行取反求和。
为了计算校验和,校验和字段首先必须被置0。
当收到一个数据,在处理之前,必须先对校验和进行验证。
Number_of_Group_Records(M):该字段表示该报告报文中包含有几个组记录GroupRecord[i](i从1到M):一个主机可能需要点播多个组播地址的组播业务,每个记录包含了对应于其中一个组播地址的源地址列表等信息,它受到Number_of_Group_Records的大小的影响。
每一个组记录字段是一整块数据,其含有的信息是关于发送者在报告发送接口上的某一个多播组的成员关系。
每一个GroupReocrd的内部格式如下:字段说明:AuxDataLen:辅助数据长度含有在组记录中的辅助数据的实际长度,其单位是32bit字。
它有可能是0,这就表示辅助数据不存在。
IGMP协议
IGMP协议IGMP(Internet Group Management Protocol)是一种用于在IP多播网络中管理组成员身份的通信协议。
它允许主机向路由器发送多播组成员资格查询,以及向路由器发送多播组成员资格报告。
IGMP协议的主要作用是在主机和路由器之间提供多播组成员资格的查询和报告机制,以便路由器可以知道哪些主机属于哪些多播组,从而可以正确地转发多播数据包。
IGMP协议的工作原理如下,当一个主机希望加入一个多播组时,它会向相应的路由器发送一个IGMP成员报告。
路由器收到成员报告后,会将这个成员加入到相应的多播组中,并开始向该组发送多播数据包。
如果一个主机不再希望接收某个多播组的数据包,它会向路由器发送一个IGMP成员离开报告,路由器收到报告后会将该成员从多播组中移除,并停止向该成员发送多播数据包。
IGMP协议的版本有IGMPv1、IGMPv2和IGMPv3。
IGMPv1是最早的版本,它只支持成员报告和成员离开报告,不支持组成员查询。
IGMPv2在IGMPv1的基础上增加了组成员查询功能,以提高多播组成员管理的效率。
而IGMPv3在IGMPv2的基础上增加了对多播源的支持,使得主机可以选择特定的多播源进行数据接收。
在实际应用中,IGMP协议通常与PIM(Protocol Independent Multicast)协议一起使用,PIM协议用于在多播网络中进行路由选择和数据包转发,而IGMP协议用于管理主机的多播组成员身份。
两者结合起来,可以实现高效的多播数据传输。
总的来说,IGMP协议是在IP多播网络中起到关键作用的协议之一,它通过提供成员查询和报告机制,实现了对多播组成员的管理,保证了多播数据包能够正确地传输到各个成员。
IGMP协议的不断完善和更新,为多播网络的发展提供了重要的支持,使得多播技术在视频会议、流媒体等应用中得到了广泛的应用和推广。
IGMP报文格式及协议分析
1、多播:用于向多个目的地址传送数据。
多播地址:地址由固定的4位1110 + 28位多播组ID构成,范围从224.0.0.0到239.255.255.255。
2、主机组:能够接收发往一个特定多播组地址数据的主机集合。
一些多播组地址被IANA 确定为知名地址,他们也被当作永久主机组。
例如:224.0.0.1代表“该子网内的所有系统组”,224.0.0.2代表“该子网内的所有路由器组”。
多播地址224.0.1.1用作网络时间协议NTP。
3、多播组地址到以太网地址的转换IANA(互联网数字分配机构)拥有一个以太网地址块,即高位24bit为00:00:5e,这意味着该地址块所拥有的地址范围从00:00:5e:00:00:00到00:00:5e:ff:ff:ff。
IANA将其中的一半分配为多播地址。
为了指明一个多播地址,任何一个以太网地址的首字节必须是01,这意味着与IP多播相对应的以太网地址范围从01:00:5e:00:00:00到01:00:5e:7f:ff:ff。
将多播地址的低23位映射到以太网地址的低23位,高25位为固定的24位的01:00:5e 加1位0。
这样就从多播组ip地址得到了对应的多播组mac地址。
由于多播组地址的高5位(即1110的后5位)在映射过程中被忽略,因此每个以太网多播地址对应的多播组不是唯一的,由于地址映射不是唯一的,所有需要设备驱动程序或IP 层对数据报进行过滤。
4、IGMP:internet组管理协议用于让一个物理网络上的所有系统知道主机当前所在的多播组。
多播路由器使用IGMP 报文来记录与该路由器相连网络中组成员的变化情况,首先,主机发送加入组播组报文到组播组,为了可靠,可以采取定时发送的方式向组播组发送加入报告报文。
同时组播组也会定发送查询报文,收到查询报文后回复报告报文。
如果主机已经离开了组播组则在收到查询报文后不发送报告报文。
IGMP被当做IP层的一部分,IGMP报文通过IP数据报进行传输。
IGMP协议解析组播管理的关键协议原理与应用
IGMP协议解析组播管理的关键协议原理与应用组播(Multicast)是一种在网络中一对多进行数据传输的方式,它允许发送方将数据包发送给一组主机,而不是传统的一对一方式。
为了实现组播管理,网络协议中采用了一种被称为IGMP协议(Internet Group Management Protocol,互联网组管理协议)的协议。
一、协议原理IGMP协议用于主机和组播路由器之间的通信,通过该协议,主机可以加入到一个组播组,接收组播数据。
IGMP协议具体实现了以下几个重要原理:1. 组播组管理组播组是由一组主机共同组成的逻辑组,组播组成员可以通过IGMP协议加入或者离开组播组。
当主机需要接收某个组播组的数据时,它会向所连接的组播路由器发送IGMP报文,加入到该组播组中。
而当不再需要接收该组播组的数据时,主机会发送IGMP离开报文,通知组播路由器将其从组播组中移除。
2. 组播路由器查询为了了解主机的组播组成员情况,组播路由器会定期发送IGMP查询报文,询问所连接的主机是否还属于某个组播组。
主机在收到查询报文后,如果确实是该组播组的成员,则会发送IGMP成员报文回应,以告知组播路由器自己仍然是组播组的一员。
3. 组播数据转发当组播源发送数据时,它会向所在网络中的组播地址发送数据包。
组播路由器根据主机的组播组成员信息,将数据包仅转发给那些需要接收该组播组数据的主机。
这样,组播源只需发送一份数据包,就能够实现数据的一对多传输。
二、协议应用IGMP协议在各种网络环境中都有广泛的应用。
以下是几个主要领域中的应用示例:1. 视频流传输在IP视频会议、实时直播等场景中,使用组播技术可以实现高效的视频流传输。
IGMP协议的加入和离开机制保证了只有需要接收视频流的主机才会接收到数据,减轻了网络负载。
2. 软件升级和配置分发在大规模网络中,当需要对多个主机进行软件升级或者配置分发时,可以使用组播技术进行分发。
IGMP协议的组播数据转发机制可以确保数据只传输到需要接收的主机,提高了分发效率和节省了带宽资源。
详解IGMP(Internet组管理协议)报文及协议
1引言本文将介绍用于支持主机和路由器进行多播的I ntern et组管理协议(IGMP)。
它让一个物理网络上的所有系统知道主机当前所在的多播组。
多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。
IGMP在R FC 1112中定义[Deerin g 1989].正如ICMP一样,IGMP 也被当作IP层的一部分。
IGMP报文通过IP数据报进行传输。
不像我们已经见到的其他协议,IGMP有固定的报文长度,没有可选数据。
图13-1显示了IG MP报文如何封装在I P数据报中。
IGMP(Intern et组管理协议)报文及协议(图一)IGMP报文通过IP首部中协议字段值为2来指明。
2 IGMP报文图1 3 - 2显示了长度为8字节的IGMP报文格式。
IGMP(Intern et组管理协议)报文及协议(图二)这是版本为1的IGMP.IGMP类型为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。
检验和的计算和ICMP协议相同。
组地址为D类IP地址。
在查询报文中组地址设置为0,在报告报文中组地址为要参加的组地址。
在下一节中,当介绍IGM P如何操作时,我们将会更详细地了解它们。
3 IGMP 协议3.1 加入一个多播组多播的基础就是一个进程的概念(使用的术语进程是指操作系统执行的一个程序),该进程在一个主机的给定接口上加入了一个多播组。
在一个给定接口上的多播组中的成员是动态的—它随时因进程加入和离开多播组而变化。
这里所指的进程必须以某种方式在给定的接口上加入某个多播组。
进程也能离开先前加入的多播组。
这些是一个支持多播主机中任何AP I所必需的部分。
使用限定词“接口”是因为多播组中的成员是与接口相关联的。
详解IGMP(Internet组管理协议)报文及协议
详解IGMP(Internet组管理协议)报文及协议本文将介绍用于支持主机和路由器进行多播的Internet组管理协议(IGMP)。
它让一个物理网络上的所有系统知道主机当前所在的多播组。
多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。
IGMP在RFC 1112中定义[Deering 1989].也被当作IP 层的一部分。
IGMP报文通过IP数据报进行传输。
正如ICMP一样, IGMP 也被当作不像我们已经见到的其他协议, IGMP有固定的报文长度,没有可选数据。
图13-1显示了IGMP报文如何封装在IP数据报中。
IGMP(Internet组管理协议)报文及协议(图一)IGMP报文通过IP首部中协议字段值为2来指明。
2 IGMP报文显示了长度为8字节的IGMP报文格式。
图1 3 - 2IGMP(Internet组管理协议)报文及协议(图二)这是版本为1的IGMP.IGMP类型为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。
检验和的计算和ICMP协议相同。
组地址为D类IP地址。
在查询报文中组地址设置为0,在报告报文中组地址为要参加的组地址。
在下一节中,当介绍IGMP如何操作时,我们将会更详细地了解它们。
协议3 IGMP3.1 加入一个多播组多播的基础就是一个进程的概念(使用的术语进程是指操作系统执行的一个程序),该进程在一个主机的给定接口上加入了一个多播组。
在一个给定接口上的多播组中的成员是动态的—它随时因进程加入和离开多播组而变化。
这里所指的进程必须以某种方式在给定的接口上加入某个多播组。
进程也能离开先前加入的多播组。
这些是一个支持多播主机中任何API所必需的部分。
使用限定词“接口”是因为多播组中的成员是与接口相关联的。
一个进程可以在多个接口上加入同一多播组。
Stanford大学伯克利版Unix中的IP 多播详细说明了有关socket API的变化,这些变化在Solaris 2.x和ip(7)的文档中也提供了。
linux igmp 分析
在具体实现功能时,又分为 IGMP SNOOPING 与 IGMP PROXY 两种。 对于 IGMP SNOOPING 这是在二层实现组播数据限制的一个功能。对于一个路由器或 者 2 层 switch,当 lan 层的一个端口发送一个 IGMP report 报文加入一个组播组后,如果没 有开启 IGMP SNOOPING,则数据会 flood 到所有 lan 側端口,这样会增加网络负载。如果 开启了 IGMP SNOOPING,路由器或者 2 层 switch 就会分析 IGMP 报文,为端口和 IGMP 组播组地址建立映射关系,这样下行的组播流数据就只会转发到加入组播组的端口,而不会
flood 到所有桥端口。
对于 IGMP PROXY,主要是拦截 lan 側 pc 发送的 igmp 报文,其在 wan 側作为 客户端相应上行路由的查询操作,而在 lan 側则作为服务端定期发送查询报文。
当 lan 側加入的组播组在 IGMP PROXY 设备上没有相应的组播路由时,才会 给上层发送组播加入报文,当 lan 側加入的组播组在 IGMP PROXY 设备上已经存 在时,则无需再将加入报文转发出去。这样不仅能够达到有效抑制二层组播泛滥 的问题,且能更有效的获取和控制用户信息,降低网络负载。
对于通用成员关系查询,需要将 Multicast ip address 设置为 0;对于特定组成员关系查询, 需要将 Multicast ip address 值设置为要查询的组播组地址。
IGMP协议
1.IGMP协议的定义和作用IGMP(Internet Group Management Protocol)是一种用于管理组播(Multicast)组的协议。
它在组播网络中起到了重要的作用,允许主机和路由器协调地工作,以便实现有效的组播数据传输。
1.1IGMP协议的背景组播是一种网络通信方式,它允许将数据从一个发送者传输到多个接收者,而不是点对点的单播方式。
组播在诸如视频流、音频广播、实时数据传输等场景中具有广泛的应用。
1.2IGMP协议的作用IGMP协议的主要作用是使网络中的主机能够加入和离开特定的组播组,以便接收或停止接收该组播组的数据。
它提供了一种机制,使得主机可以向所连接的路由器表明它对特定组播组的兴趣,从而使路由器能够有效地转发组播数据。
1.3IGMP协议的工作原理IGMP协议通过主机发送IGMP报文来进行通信。
主机可以向所连接的路由器发送IGMP 报文,以表明它希望加入特定的组播组或离开该组播组。
路由器根据接收到的IGMP报文来维护组播组成员的列表,并相应地转发组播数据。
1.4IGMP协议的版本IGMP协议有不同的版本,包括IGMPv1、IGMPv2和IGMPv3。
每个版本都有不同的功能和改进,以适应不同的组播需求和网络环境。
1.5IGMP协议的应用场景IGMP协议广泛应用于各种组播网络环境,包括视频流传输、音频广播、多人游戏等。
它能够提供高效的组播数据传输,减少网络流量和资源消耗。
1.6IGMP协议的安全性和常见问题IGMP协议在安全性方面存在一些挑战,如组播数据的安全性和合法性验证。
此外,常见问题包括组播数据的丢失、延迟和冲突等,需要采取相应的解决方法来优化组播网络的性能。
以上是对IGMP协议的定义、作用和相关内容的概述,它是实现组播通信的重要协议之一,对于构建高效的组播网络具有重要意义。
2.IGMP协议的基本原理和工作流程IGMP(Internet Group Management Protocol)是一种用于管理组播(Multicast)组的协议。
IGMP协议
IGMP协议
IGMP协议,全称是Internet组管理协议,是一种在IP
多播环境下使用的协议。
它在网络中的路由器和主机之间起到重要的作用,允许主机加入和离开多播组。
过去,当多播流需要被发送到一个组中的多个主机时,每个数据包都需要单独的被复制并发送到每个主机。
这种方式无疑会造成严重的网络拥堵和稳定性问题。
而IGMP协议可以允许主机仅接收他们需要
的数据包,以达到减少网络流量和提高性能的目的。
IGMP协议的工作原理是:当一个主机加入一个多播组时,它会发送一个IGMP报文通知路由器。
路由器通过响应的多播
地址,学习到哪些主机加入了相应的地址,并记录这些信息。
当路由器收到一个多播数据包,它会检查它的记录,然后仅复制数据包并发送给已经加入了多播组的主机。
IGMP协议有三种版本:IGMP版本1(IGMPv1)、IGMP版
本2(IGMPv2)和IGMP版本3(IGMPv3)。
前两个版本比较旧,而IGMPv3是最新的版本。
在IGMPv1中,主机只能加入或者离开一个多播组,而IGMPv2则允许主机查询那些多播组是活动的。
IGMPv3进一步增强了多播管理功能,添加了更好的安全
性和灵活性,并增加了一些新的查询类型。
总之,IGMP协议是实现多播数据传输时不可或缺的一种
协议。
它通过减少网络流量、降低网络拥塞和增加网络性能等多种方式来提高网络的效率和稳定性。
IGMP协议详解与测试方法
IGMP协议详解与测试方法IGMP(Internet Group Management Protocol,Internet组管理协议)是一种用于IP网络的组播协议。
它允许主机加入到特定的组播组,并通过查询和报告机制通知路由器有关组播组成员的信息。
本文将详细介绍IGMP协议的工作原理,并提供一种测试IGMP功能的方法。
IGMP的工作原理如下:1. 主机加入组播组:主机通过发送IGMP报文加入到组播组。
IGMP 消息有三种类型:查询(Query)、报告(Report)和离开(Leave)。
查询消息由路由器发出,用于了解网络中的组播组成员。
报告消息由主机发出,用于加入到组播组或报告存在。
离开消息由主机发出,用于离开组播组。
2.路由器维护组播组成员表:路由器通过接收IGMP消息维护一个组播组成员表。
当收到报告消息时,路由器将主机添加到对应的组播组成员表中。
当收到离开消息时,路由器将主机从对应的组播组成员表中删除。
3.路由器转发组播流量:当路由器接收到组播数据包时,它会查找组播组成员表,确定需要转发数据包的接口。
然后,路由器根据IP协议的特性将数据包转发到指定接口。
IGMP的测试方法如下:1.确保网络拓扑正确:首先,需要构建一个符合组播网络拓扑的实验环境。
包括至少一个路由器和多个主机,确保它们的IP地址和子网掩码设置正确,并且路由器启用了IGMP功能。
2.观察组播组成员表:使用网络管理工具或命令行工具,查看路由器的组播组成员表。
确认路由器能够正确维护主机的加入和离开。
3. 加入组播组和报告存在:在其中一个主机上执行加入组播组操作,并发送报告消息。
可以使用命令行工具如"igmp join <组播组IP>"执行加入操作,并使用网络抓包工具观察IGMP报文。
4. 离开组播组和报告离开:在加入组播组的主机上执行离开组播组操作,并发送离开消息。
可以使用命令行工具如"igmp leave <组播组IP>"执行离开操作,并使用网络抓包工具观察IGMP报文。
路由协议分析实验七 IGMP协议分析
实验七、IGMP协议分析一、实验目的(1)掌握主机加入多播组和退出多播组的工作方式。
(2)理解路由器如何判断网络中的多播用户是否存在。
(3)掌握IGMPv1和IGMPv2的区别。
二、实验拓扑图7-1 IGMP协议分析实验拓扑三、实验步骤1、搭建实验拓扑,给路由器R1和R2以及PC3配置IP地址,IP地址第二字节修改为自己学号后3位。
2、在R1、R2和PC3上的f0/0接口配置IGMP版本为v1,参考命令如下:R1(config)#int f0/0R1(config-if)#ip igmp version 1R2和PC3参考R1配置2、在PC3的接口f0/0上启动抓包,在R1和R2上启动多播路由协议,参考命令如下:R1(config)#ip multicast-routingR1(config)#interface f0/0R1(config-if)#ip pim dense-modeR2参考R1的配置命令配置问题1:在R1上查看谁是DR?参考命令:R1#show ip igmp interface f0/0问题2:查看抓取到的数据包,是哪个路由器在发查询包?3、将PC3加入多播组224.1.1.1,将第二字节修改为自己学号后3位,参考命令如下:PC3(config)#int f0/0PC3(config-if)#ip igmp join-group 224.1.1.1问题3:查看抓取到的数据包,路由器发送查询的时间间隔是多少?问题4:在R1中查看多播组,一共有几个多播组,分别是什么?根据抓取到的查询包和report包填写表8-1表8-1问题5:将PC3离开多播组224.1.1.1,在R1上查看经过多长时间可以知道PC3离组?在此期间一共发送了多少个查询报文?参考命令:PC3(config-if)#no ip igmp join-group 224.1.1.1问题6:说明IGMPv1的离组方式4、修改R1、R2和PC3的IGMP版本为IGMPv2,参考命令:R1(config)#int f0/0R1(config-if)#ip igmp version 2问题7:修改后抓包查看是哪个路由器在发组播查询包?和刚才的IGMPv1有森美不同?5、将PC3加入多播组224.1.2.1,将第2字节修改为自己学号后3位,参考命令:PC3(config)#int f0/0PC3(config-if)#ip igmp join-group 224.1.2.1根据抓取的查询和相应数据包填写表8-26、将PC3从多播组224.1.2.1中移除,参考命令:PC3(config)#int f0/0PC3(config-if)#no ip igmp join-group 224.1.2.1查看抓取的数据包中IGMP离组报文以及离组报文后的两个IGMP报文,填写表8-3。
IGMP协议
竭诚为您提供优质文档/双击可除IGMP协议篇一:internet组管理协议(igmp)《网络协议》实验报告实验名称:internet组管理协议(igmp)组别机器号:第六组主机e班级:网络13-3班学号:1320xx0306姓名:黄腾飞指导教师:陈虹成绩:12345篇二:igmp组播协议1.igmp(V3)internetgroupmanagementprotocolipd类地址:224.0.0.0~239.255.255.255(前4个比特为1110)igmp用于主机和路由器之间的通信(它也定义了路由器和主机的行为),从而进行组播组的管理,它使得一台主机可以接收:1)发往某个组播组的数据包2)从某些主机发往某个组播组的数据包3)不是从某些主机发出的,发往某个组播组的数据包igmp协议:1)组播路由器保存所有临近网络中有成员存在的组播组列表。
(不是所有成员的列表)2)igmp只有两类消息,查询(路由器查询是否有主机处于组播组)和报告(主机报告自己加入,处于,或离开组播组)。
(igmp-V2中还有一个离开组消息)3)查询消息由路由器发往主机,分为一般查询(generalquery):目的地址为224.0.0.1,数据包中组地址为0,源数量为0指定组查询(group-specificquery):目的地址为指定的组播地址,数据包中组地址为指定的组播地址,源数量为0指定组和源查询(group-and-source-specificquery):目的地址为指定的组播地址,数据包中组地址为指定的组播地址,源数量不为04)一般查询的周期:igmp-V1:正常一分钟不超过一次(路由器启动时周期短)igmp-V2/3:缺省125秒(路由器启动时为1/4查询周期),一般查询消息中的最大的响应时间默认值为100(10秒),启动查询消息数量为健壮变量(RobustnessVariable)查询消息5)不同igmp版本的报告消息类型不一样:V1:0x12;V2:0x16;V3:0x226)igmp-V3报告的记录类型mode_is_include(包含某些源)mode_is_exclude(排除某些源)change_to_include_mode(改变为包含某些源)change_to_exclude_mode(改变为排除某些源)allow_new_souRce(增加某些源为允许接收)block_old_souRce(阻止某些源的接收)7)报告消息的目的地址:igmp-V3:224.0.0.22(igmpv3路由器在这个地址上侦听) igmp-V1/2:消息中的组播地址成员关系报告消息groupRecord结构组播地址分配:224.0.0.0被保证不分配给任何组(包括网关)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IGMPIGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。
它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
到目前为止,IGMP 有三个版本:1、IGMPv1(由RFC 1112 定义)2、IGMPv2(由RFC 2236 定义)3、IGMPv3(由RFC 3376定义)一、IGMPv11.1报文格式1、版本:版本字段包含IGMP版本标识,因此设置为1。
2、类型:成员关系查询(0x11)成员关系报告(0x12)3、校验和4、组地址:当一个成员关系报告正被发送时,组地址字段包含组播地址。
当用于成员关系查询时,本字段为0,并被主机忽略。
1.2组成员加入过程当一个主机希望接收一个组播组的数据,则发送成员加入报告给组播组。
IGMPv1 join包如下:1.3查询与响应过程路由器RTA(IGMP查询器)周期性地(默认60秒)向子网内所有主机(224.0.0.1代表子网内所有主机)发送成员关系查询信息。
所有主机收到IGMPv1成员关系查询信息,一主机首先向组播组发送IGMPv1成员关系报告。
组的其他成员监听到报告后抑制自己的成员关系报告发送。
1.4 抑制机制当主机收到IGMP成员关系查询时,对它已经加入的每个组播组启动一个倒计数报告计时器。
各个报告计时器初始值为从0到最大响应之间一个随机数,默认值是10秒。
计时器到时的主机则主动发送成员关系报告,目的地为该主机所属的组地址。
其它主机收到该成员关系报告,则抑制成员关系报告的发送,并删除计时器。
1.5 组成员离开过程主机“默不作声”地离开组(不发送报告了)。
路由器发送成员关系查询信息。
路由器没有收到该组的IGMP报告,则再发送成员关系信息(3次查询周期过后)。
组播组超时,剪枝。
二、IGMPv22.1报文格式1、类型成员关系查询(0x11)常规查询:用于确定哪些组播组是有活跃的,即该组是否还有成员在使用,常规查询地址由全零表示;特定组查询:用于查询某具体组播组是否还有组成员。
版本2成员关系报告(0x16)版本1成员关系报告(0x12)离开组消息(0x17)2、最大响应时间以0.1秒为单位,默认值是100,即10秒。
3、校验和4、组地址在成员查询消息中,发送一个普遍查询报文时组地址域应设为0,当发送一个对特定组的查询报文时,则应设置组的地址。
在成员报告或离开组的消息中,组的地址域保留了要报告或要离开的地址。
2.2 组成员加入过程当一个主机加入了一个组播组,则应该立即发送一个或多个版本2的成员关系报告给组播组。
IGMPv2的join包如下:2.3 查询与响应过程与IGMPv1相同,都存在抑制机制。
增加了最大响应时间来指定延时值来规定所有主机的查询响应延时的上限,此外最大响应时间在IGMP查询器上配置,只应用在成员关系查询信息。
2.4 查询器选择过程路由器启动,主动发出到所有组播系统组(224.0.0.1)的IGMPv2常规查询信息。
收到常规查询信息的路由器,会把此信息的源IP地址和接收口的IP地址作比较,拥有最低IP地址的路由器被选举为IGMP查询路由器。
非查询路由器启动一个查询计时器,周期检查IGMP查询路由器的状态。
2.5 组成员离开过程主机向224.0.0.2发送离开组消息(报文中含有要离开的组地址224.1.1.1)。
路由器向这个组(224.1.1.1)发送特定组查询。
1秒钟内没有收到该组的报告,发送第二个特定组查询。
二个查询信息后未收到主机响应,组224.1.1.1超时,离开组。
IGMPv2的Leave如下:三、IGMPv3在IGMPv1/v2的基础上,IGMPV3提供了额外的源过滤多播功能。
在IGMPv1/v2中,主机只根据组地址来决定加入某个组并从任何一个源接收发给该组地址的组播流。
而使用IGMPv3的主机通告该主机所希望加入的多播组,同时还通告该主机所希望接收的多播源的地址。
主机可以通过一个包括列表或一个排除列表来指明希望从哪些源能接收多播流。
同时IGMPv3带来的另外一个好处是节省带宽,避免不需要的、非法的组播数据流占用网络带宽,这尤其在多个多播源共用一个多播地址的网络环境中表现明显。
IGMPv3的过程同v2类似。
IGMPv3能够向下兼容IGMPv1和IGMP v2。
IGMPv3查询和报告报文增强了功能:(1) 携带源地址的查询报文IGMPv3 不仅支持IGMPv1 的普遍组查询和IGMPv2 的特定组查询,而且还增加了对特定源组查询的支持:普遍组查询报文中,既不携带组地址,也不携带源地址;特定组查询报文中,携带组地址,但不携带源地址;特定源组查询报文中,既携带组地址,还携带一个或多个源地址。
(2) 包含多组记录的报告报文IGMPv3 报告报文的目的地址为224.0.0.22,可以携带一个或多个组记录。
在每个组记录中,包含有组播组地址和组播源地址列表。
组记录可以分为多种类型,如下:IS_IN:表示组播组与组播源列表之间的过滤模式为INCLUDE,即只接收从指定组播源列表发往该组播组的组播数据。
IS_EX:表示组播组与组播源列表之间的过滤模式为EXCLUDE,即只接收从指定组播源列表之外的组播源发往该组播组的组播数据。
TO_IN:表示组播组与组播源列表之间的过滤模式由EXCLUDE 转变为INCLUDE。
TO_EX:表示组播组与组播源列表之间的过滤模式由INCLUDE 转变为EXCLUDE。
ALLOW:表示在现有状态的基础上,还希望从某些组播源接收组播数据。
如果当前的对应关系为INCLUDE,则向现有组播源列表中添加这些组播源;如果当前的对应关系为EXCLUDE,则从现有组播源列表中删除这些组播源。
BLOCK:表示在现有状态的基础上,不再希望从某些组播源接收组播数据。
如果当前的对应关系为INCLUDE,则从现有组播源列表中删除这些组播源;如果当前的对应关系为EXCLUDE,则向现有组播源列表中添加这些组播源。
IGMPv3的join包如下:IGMPv3的leave包如下:IGMPv3的query包如下:IGMP三个版本的比较:四、组播IP地址:∙组播地址范围224.0.0.0-239.255.255.255∙保留组播地址224.0.0.0-224.0.0.255224.0.1.0-224.0.1.255∙本地管理组地址239.0.0.0-239.255.255.255∙用户组播地址224.0.2.0-238.255.255.255∙组播MAC地址:以太网:01-00-5e-xx-xx-xx∙常用的保留组播地址永久组地址含义224.0.0.1 所有系统,包括主机与路由器224.0.0.2 所有组播路由器224.0.0.3 未分配224.0.0.4 DVMRP(Distance Vector Multicast Routing Protocol ,距离矢量组播路由协议)路由器224.0.0.5 OSPF(Open Shortest Path First ,开放最短路径优先)路由器224.0.0.6 OSPF 指定路由器/备用指定路由器224.0.0.7 ST(Shared Tree ,共享树)路由器224.0.0.8 ST 主机224.0.0.9 RIP-2(Routing Information Protocol version 2 ,路由信息协议版本2)路由器224.0.0.11 移动代理224.0.0.12 DHCP(Dynamic Host Configuration Protocol ,动态主机配置协议)服务器/中继代理224.0.0.13 所有PIM(Protocol Independent Multicast ,协议无关组播)路由器224.0.0.14 RSVP(Resource Reservation Protocol ,资源预留协议)封装224.0.0.15 所有CBT(Core-Based Tree ,有核树)路由器224.0.0.16 指定SBM(Subnetwork Bandwidth Management ,子网带宽管理)224.0.0.17 所有SBM224.0.0.18 VRRP(Virtual Router Redundancy Protocol ,虚拟路由器冗余协议)五、IGMP SNOOPINGIGMP Snooping运行在链路层,是运行在二层以太网交换机上的组播约束机制,用于管理和控制组播数据转发。
当二层以太网交换机收到主机和路由器之间传递的IGMP报文时,IGMP Snooping分析IGMP报文所带的信息。
当监听到主机发出的IGMP主机报告报文时,交换机就将该主机加入到相应的组播MAC地址表中。
当监听到主机发出的IGMP离开报文时,交换机就将删除与该主机对应的组播MAC地址表中。
通过不断地监听IGMP报文,交换机就可以在二层建立和维护组播MAC地址表,交换机就可以根据组播MAC地址表转发从路由器下发的组播报文。
没有运行IGMP Snooping 时,组播报文将在二层广播。