IGMP使用详解

上传人:1395****376 文档编号:49675241 上传时间:2022-01-18 格式:DOC 页数:3 大小:23KB
收藏 版权申诉 举报 下载
IGMP使用详解_第1页
第1页 / 共3页
IGMP使用详解_第2页
第2页 / 共3页
IGMP使用详解_第3页
第3页 / 共3页
资源描述:

《IGMP使用详解》由会员分享,可在线阅读,更多相关《IGMP使用详解(3页珍藏版)》请在装配图网上搜索。

1、精品文档,仅供学习与交流,如有侵权请联系网站删除IGMP一、 Internet 组管理协议IGMP 是Internet 组管理协议(Internet Group Management Protocol)的缩写。IGMP 在TCP/IP 协议中的位置:应用层协议(FTP,HTTP,SMTP)TCP UDP ICMP IGMPIPARP RARPMACPHY在了解 IGMP 协议的之前,我们首先看看以太网对报文的处理方法。我们知道,目前使用的以太网(ethernet)有一个特点,当一个报文在一条线路上传输时,该线路上的所有主机都能够接收到这个报文。只是当报文到达MAC 层时,主机会检测这个报文是不

2、是发送给自己的,如果不是该报文就会被丢弃。常用的抓包软件ethereal, sniffer 都可以捕获当前物理线路上的所有报文,不管该报文的目的地址是不是自己。以太网中有一种特殊的报文广播包其目的mac 地址全为0xff,所有的主机都必须接收。说到 IGMP 不能不提“组播”的概念。假如现在一个主机想将一个数据包发给网络上的若干主机,有什么方法可以做到呢?一个方法是采用广播包发送,这样网络上的所有主机都能够接收到,另一种方式是将数据包复制若干份分别发给目的主机。这两个方法都存在问题:方法一,广播的方法导致网络上所有的主机都能接收到,占用了网络上其他主机的资源。方法二,由于所有目的主机接收的报文

3、都是相同的,采用单播方式显然效率很低。为了解决上面所述的问题,人们提出了“组播”的概念,控制一个报文发送给对该报文感兴趣的主机,IGMP 就是组播管理协议。我们来看一个简单的组播应用场景 PC,如何处理呢?首先STB 要发起一个连接请求,也就是IGMP report 报文,加入到电视直播的组播组中。同样当STB 要断开连接的时候就发送一个IGMP leave 报文。Router 也需要知道当前有哪些STB 加入了组播组,防止有的STB 异常掉线了,却依然占用系统资源。Router 周期性的发送IGMP query 报文查询组播组情况,STB 接到query 报文后发送report消息到rout

4、er。当然还有一种报文就是IGMP data,用来传输组播数据。这基本上就是IGMP协议的基本流程了。二、 组播实现1. IP 组播组与组播MAC二层组播MAC 定义为:01:00:5e:xx:xx:xx,其中xx 由三层的IP 组播组确定。三层地址:组播流使用的IP 是D 类IP 地址(二进制1110 开始),从224.0.0.0239.255.255.255。由于组播MAC 地址是一个虚拟的地址,并不是真实网卡的MAC 地址,那么网卡在发送报文是二层MAC 地址怎么确定呢?答案是采用地址映射的方法将三层IP 地址映射到MAC 地址。映射关系如下。从上面的映射关系可以看出 IP 地址的五个b

5、it 无法映射到MAC 层,因为MAC 层的这五个bit 已经确定。也就是说有32 个IP 组播组会被映射为同一个MAC 地址。(在这里不能不说一个面试常问的问题:一个网卡的 MAC 地址是53:10:10:10:10:10,问这是一个合法的MAC 地址吗?原因?)2. 报文格式:IGMP 报文封装在IP 层上,在IP 层的协议类型码是0x02。IGMPv2 有report, query 和leave 有三种类型的报文,IGMP report:type 为0x16(IGMPv2)或0x12(IGMPv1)IGMP leave:type 为0x17IGMP query:type 为0x11,qu

6、ery 报文有两种情况,一种是针对特定组播组的查询,例如router 要查询属于组播组225.225.100.3 的所有成员,另一种是通用查询,查询所有主机加入组播组的情况,两者的主要区别是在Group Address 上。IGMP data:与通常的报文相同,主要区别是MAC 地址使用的是组播MAC。三、 IGMP 协议的应用问题1. IGMP snooping首先我们来看这样一种情况,交换机的A 端口(port)有一个组播包需要送到主机D。通常交换机会将这个报文flood 到每一个端口,确保报文能够送到主机D。但这样处理存在问题,主机D 挂在port C 上,switch 没有必要将报文发

7、往每一个端口,占用其他端口的网络资源,同时也占用CPU 的资源。Linux 源码中也没有对组播报文进行特殊处理,linux-2.4.33netbridgebr_input.c 行79 br_handle_frame_finish()if (dest0 & 1) br_flood_forward(br, skb, !passedup);/*flood 报文到其他端口*/if (!passedup)br_pass_frame_up(br, skb);/*向local IP stack 发送数据*/goto out;针对上面所说的问题,人们提出了IGMP snooping 技术,该技术的主要思想是侦

8、听每一个端口上的IGMP 报文,通过解析报文获得其组播地址,将组播地址与交换机的端口联系起来。当关系建立后,就可以通过组播组查到目的port,从而不需要flood 报文到每一个端口上。交换机的桥模块维护这样一张表,以组播组为索引,组播组下记录了属于该组播组的所有端口。当一个组播报文从A 口送到交换机时,交换机从报文中获取组播组地址,然后从表中找出该组播组,将报文直接发送到下属的C 端口。而E,F,H 端口不会有数据送到。组播索引表采用这样的管理,桥接收到一个 IGMP report 报文解析report 报文中的组播组,创建组播索引,将report 报文的端口记录下来。当然当组播组已经存在了就

9、不需要重新创建组播索引了,只需要检查端口确认是否要添加端口。当桥收到一个IGMP leave 报文时,根据报文中的组播地址和报文端口从表中找到要离开的端口,删除端口。是不是经过这样处理就没有问题了呢?答案是否定的。假如交换机的 C 端口连接的不是主机而是一个HUB,HUB 下挂了两台主机,并且两台主机都加入了同一个组播组,也就是说C 端口下有两台主机,当其中一台主机发送IGMP leave 后,会导致C 端口被删除,结果另一台主机也无法接收到组播数据了。基于端口的组播报文转发是有问题的,一个解决方法是基于MAC 的组播转发,组播组下面记录的不是port 而是MAC。当组播组有报文时需要处理时,首先查找MAC,然后从桥中根据MAC 找到port,最后将报文转发到该port。其实许多支持 IGMP snooping 的交换机中组播组n 的最大值是确定的,一般是256,我们可以让一台主机加入到256 个组播组中,把所有的组播组资源占尽,后续的其他主机的组播报文将无法得到处理。这也算是一种攻击吧。2. IGMP proxy简单一句话:设备的上行端口担任主机的角色发送report 和leave 报文,下行端口执行路由器的角色发送query 报文。3. IGMP report/leave 报文【精品文档】第 3 页

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!