通过组播,可以实现一个主机同时向组内的多台主机发送数据,节省网络带宽。
组播ip地址范围是224.0.0.0-----239.255.255.255,其中224.0.0.0-----224.0.0.255是有特殊用途的保留地址,239.0.0.0-----239.255.255.255是私网地址,224.0.1.0-----238.255.255.255是用于公网上的组播地址。
 
组播有一系列的协议支持包括:
1、用于主机和路由器之间的IGMP协议。实现主机加入、离开组播组等功能。
2、路由器之间的组播协议有:PIM-SM、PIM-DM。实现嫁接、剪枝等功能。
 
还有一个IGMP Snooping,用在交换机上。开启IGMP Snooping功能的交换机可以对经过它的IMGP报文进行解析,建立组播转发表,这样一来,交换机就可以根据组播转发表转发组播数据。如果没有开启IGMP Snooping功能,交换机只能广播组播数据。IGMP Snooping的实际应用意义是:减少了网络上的主机由于接受到不必要的组播报文而产生的处理负荷。IGMP Snooping并不是一个协议,只能算是一个实现细节,一种应用。
 
IGMP Snooping分两种,一种是passive方式的,另一种是active方式的。
passive方式的只解析组播报文,不对报文进行过滤。
active方式的会过滤掉一些对路由器没有意义的组播报文。比如交换机下面有两个主机都加入了同一个组,这样交换机上面的路由器中就会有一条表项与之对应。如果一个主机想离开这个组,它就会发送离开报文给路由器(经过交换机转发)。但是此时,即使路由器收到了离开报文,它也并不会删除那条表项,因为还有另一个主机在组播组中。active方式的IGMP Snooping使交换机可以过滤掉此类报文。
 
下面说说IGMP的工作原理:
IGMP目前有三个版本,分别是IGMPV1、IGMPV2、IGMPV3,功能逐渐增强
IGMPV1中定义了加入报文、查询报文、响应报文三种报文。
1、当主机加入某组播组时,会向路由器发送加入报文,告诉路由器自己加入了一个组播组,路由器会记录一条组播表项 。
2、查询路由器(IP最小的路由器)会定时从所有端口向外发送查询报文(按VLAN查询,如果该端口加入了多个VLAN,则发送多次查询报文),检查这些端口下是否有主机属于某组播组
3、主机收到查询报文后,如果自己没有加入任何组播组,则不进行响应;如果自己已经加入了某组播组,则会发现响应报文
4、主机离开组播组时,不发送任何报文,悄悄离开;路由器中纪录的该组播的表项会因查询超时而自动老化
5、查询报文的目的地址是224.0.0.1(表示所有路由器和支持IGMP的主机),组地址是0(表示查询所有组播组)
6、响应报文的目的地址是主机所在组的地址,组地址也是主机所在组的地址。如果网络上有多个主机加入了同一个组,那么只有一台主机(随机选取)会发送响应报文。由于响应报文的目的地址是主机所在组的地址,所以响应报文会被发送到主机所在组内的所有主机,其他的主机在收到该报文后,发现已经有人向路由器进行报告了,于是他们就不会再额外发送响应报文了。
 
IGMPV2中多定义了一种离开报文,当主机离开某组播组时,会向路由器发送离开报文。路由器收到离开报文后,会发送查询报文,查询是否还有其它的主机属于该组播组,如果没有就删除组播表项,有则不删除。
需要注意的是,此时路由器发送的查询报文的组地址已经不是0了,而是特定的组地址(发送离开报文的主机所在的组)。因为此时路由器只想知道该特定组内是否有主机存在。这一点也是IGMPV2对IGMPV1的改进,名称叫特定组查询,IGMPV1中没有该功能。
注意:
1、不论是IGMPV1还是IGMPV2,所有的加入报文和离开报文都要被上报到查询路由器
2、非查询路由器收到查询报文后,从所有端口转发该报文
3、非查询路由器收到特定组查询报文后,根据组播表进行转发
4、特定组查询报文的目的地址是要查询的组地址
5、离开报文的目的地址是224.0.0.2(表示所有路由器)
 
IGMP报文格式:
8位报文类型-8最大响应时间-16位校验和-32位组地址
报文类型:
0x11表示查询报文,包括普通查询和特定组查询报文
0x16表示加入报文
0x17表示离开报文
0x12表示IGMPV1查询报文
IGMPV3待续。。。
 

转载于:https://blog.51cto.com/833396/304577

组播、IGMP、IGMP Snooping相关推荐

  1. ip组播,IGMP协议,PIM协议

    IP组播 是一台源ip主机和多台(一组)ip主机之间进行,中间的交换机和路由器根据接收者的需要,有选择地对数据进行复制和转发,主要应用有在线直播,网络电视,远程教育等. 组播方式的优势 无重复流量节省 ...

  2. 计算机网络之网络层:10、IP组播、IGMP协议、组播路由选择协议

    网络层:10.IP组播.IGMP协议.组播路由选择协议 思维导图: TCP/IP协议: IP数据报的三种传输方式: IP组播地址: 硬件组播: 因特网范围内组播: IGMP协议: IGMP协议的俩个工 ...

  3. vxlan、组播、IGMP协议RFC总结(广域网协议作用)

    常用的广域网协议 编辑 常见广域网协议及特点 PPP(Point to Point Protocol).HDLC(High level Data Link Control).frame-relay,X ...

  4. 总结:TCP/IP 详解(卷1: 协议)--第九章 广播和本地组播(IGMP 和 MLD)

    第九章  广播和本地组播(IGMP 和 MLD) 一般来说,广播是指向网络上的所有节点发送流量.在 TCP/IP 的背景下,广播是指向网络或子网中的所有主机发送一个数据分组,通常是本地连接的网络.组播 ...

  5. 2022-11- 10 网工进阶(三十六)IP组播协议--IGMP(v1、v2、v3)、IGMP snooping、IGMP SSM Mapping、IGMP Proxy(代理)

    感知组播组成员 组播通信中,组播网络需要将组播数据发送给特定的组播组成员,因此组播网络需要知道组成员的位置与组成员所加的组播组. 组播网络感知组播组成员的方法有手工静态配置和动态感知. 手工静态配置 ...

  6. 组播基础——IGMP

    组播用途:点到多点,解决多点相同业务请求导致带宽压力 相比单播,用户的增加不会导致信息源负载的加重,不会导致网络资源消耗的显著增加 相比广播,不会造成网络资源的浪费,并能提高信息传输的安全性,且组播可 ...

  7. 4.6 计算机网络之网络层IP组播(IGMP、组播路由选择协议、组播地址)

    文章目录 0.思维导图 1.IP数据报的三种传输方式 2.IP组播地址 3.IGMP协议与组播路由选择协议 (1)网际组管理协议---IGMP (2)IGMP工作的两个阶段 (3)组播路由选择协议 ( ...

  8. IP组播协议——IGMP协议之IGMPv1

    目录 前言 一.协议体系 二.IGMP协议介绍 三.IGMPv1报文格式 四.IGMPv1 IGMPv1组成员加入 IGMPv1响应抑制机制 IGMPv1组成员离开 总结 前言 上一篇文章介绍了IP组 ...

  9. TCP/IP详解卷一之广播和本地组播(IGMP和MLD)

    1 引言 -广播和组播为应用程序提供了两种服务: · 数据分组交付至多个目的地: · 通过客户端请求/发现服务器,如DHCP. -广播比较简单,但开销更高:组播比较复杂,但效率更高. -IPv4支持广 ...

最新文章

  1. Linux驱动修炼之道-SPI驱动框架源码分析(上)
  2. windows下使用Hibernate连接Mycat例子
  3. python故事书_python的故事
  4. P4146 序列终结者 平衡树 + lazy维护
  5. C#命名空间namespace中不能直接包含字段(变量)或方法(函数)之类的成员
  6. php伪协议漏洞_PHP之伪协议深入理解
  7. c语言编程单片机网线,【C语言】直播一下单片机编程
  8. QT6.1.2下载和安装教程
  9. 2022年最新四川建筑八大员(劳务员)模拟题库及答案
  10. 用html+css制作简单好看的登陆注册界面
  11. Qt播放视频0x8007000e报错 DirectShowPlayerService::doPlay: Unresolved error code 0x8007000e
  12. 传智java完整教学视频
  13. django框架——模型层(下)
  14. 基于java火车购票系统
  15. 电信催费打错话费单 男子“拖欠”45036亿元话费
  16. TX2/Linux下can总线的接收与发送详解!(回环测试)
  17. cgb2109-day02
  18. 通过一个Kafka故障解决过程阐述架构师必须具备的架构思维
  19. 《炬丰科技-半导体工艺》 组合式 CMP 和晶片清洗装置方法
  20. rpg游戏发展史计算机网络,PC Gamer盘点史上最经典RPG游戏TOP15

热门文章

  1. easyui源码翻译1.32--panel(面板)
  2. windbg学习----r?
  3. USACO / Sorting a Three-Valued Sequence (简单题,方法正确性待证)
  4. Windows PowerShell 语言快速参考
  5. 顺序存储二叉树之寻找公共祖先节点
  6. fabric-ca 登记身份时报Error: Response from server: Error Code: 20 - Authentication failure
  7. Hyperledger Fabric学习笔记(二)- Fabric 2.2.1环境搭建
  8. vue中选项和url根据彼此的改变实现高亮显示
  9. ServletContext对象、ServletConfig对象
  10. Java二、八、十、十六进制介绍