组播基本概念、IGMP、IGMP监听学习笔记
2018-01-11 15:21
741 查看
为什么需要组播
简单来说,就是因为在一些诸如视频点播的应用时,单播对主机的压力太大、而广播又对网络链路的压力太大。所以……组播IP地址
224.0.0.0~239.255.255.255 所有组播地址
224.0.0.0~224.0.0.255 有特殊用途的组播地址(不能被路由)
224.0.0.1 同一网段所有主机
224.0.0.2 同一网段所有组播路由器
224.0.1.0~238.255.255.255 公网组播地址
239.0.0.0~239.255.255.255 私网组播
组播IP地址和MAC地址的关系
组播MAC地址的高24bit位是以01-00-5E开头,低23bit为组播IP地址的低23bit。由于IP组播地址的高4bit是1110,标识了组播组,而低28bit中只有23bit被映像到组播MAC地址上,这样IP组播地址中就会有5bit没有使用,从而出现了32个IP组播地址映像到同一MAC地址上的结果。
IGMP简介
网路群组管理协议(Internet Group Management Protocol或简写IGMP)是用于管理网路协议多播组成员的一种通信协议。IP主机和相邻的路由器利用IGMP来创建多播组的组成员。像ICMP用于单播连接一样,IGMP也是IP多播说明的一个完整部分。 IGMP为互联网协议的一种,属于开放系统链接(OSI) 模块的第三层协议,IP主机用它将主机的多点发送成员人数报告给临近的多点发送路由器。IGMP目前有三个版本,目前用的最多的是IGMPv2。IGMPv1主要基于查询和响应机制来完成对组播组成员的管理;IGMPv2增加了查询器选举机制和离开组机制;IGMPv3在兼容和继承IGMPv1和IGMPv2的基础上,进一步增强了主机的控制能力,并增强了查询和报告报文的功能。
IGMPv2报文分类和详解
一、查询报文该报文由组播路由器发出。可细分为通用查询报文和特定组查询报文。组播路由器定时发出通用查询报文(下图的组播路由器每125s发送一次)。通用查询报文的目标IP为224.0.0.1(所有主机),IGMP报头内的组播IP为0.0.0.0。用来查询该网段有哪些组播组的成员。特定组查询报文的目标IP则是要查询的组播组地址。查询报文如下图所示:
二、报告报文
该报文由主机发出。可对组播路由器发出的查询报文进行回应,同时主机在主动加入特定组的时候,也会主动发送该报文报告。报告报文的目标IP和IGMP报头内的组播IP均为主机加入的组播组地址(注意!这里虽说是回应路由器的,但是数据包的目标IP不是路由器)。
三、离开报文(仅限IGMPv2和v3)
该报文由主机发出。当主机离开组播组时发送此报文,向组播路由器报告离开了特定的组播组。离开报文的目标IP为224.0.0.2(所有组播路由器),IGMP报头内的组播IP为特定离开组的IP。交换机处理组播的方式
1、一切没有开启或不支持IGMP监听功能的交换机,组播数据包都以广播的形式在广播域内泛洪。2、开启IGMP监听功能的交换机的每个VLAN会维护一个组播地址表。当收到组播数据包时,如果表中含有该数据包组播IP的条目,则按照表中的组播IP向对应的端口进行转发,否则以广播的形式在广播域内泛洪。
交换机的组播地址表样式
包类型 | 组播IP | 所在端口 |
---|---|---|
IGMP | 224.0.0.251 | 1 |
IGMP | 224.0.0.251 | 2, 3, 4 |
相关文章推荐
- 组播基本概念、IGMP、IGMP监听学习笔记
- 组播基本概念、IGMP、IGMP监听学习笔记(续)
- 图形学学习笔记1——基本概念
- 深入浅出MFC学习笔记:(第一章:win32基本概念,第二章:C++的重要性质)
- [文件系统]文件系统学习笔记(一)---基本概念以及inode
- TCP/IP 详解卷一学习笔记(一):TCP/IP 协议基本概念
- [Linux内存]slub分配器学习笔记(一)--基本概念
- C++基础学习笔记----第七课(面向对象的基本概念)
- 黑马程序员---OC学习笔记之block的基本概念
- Java学习笔记56. 接口的基本概念与使用
- 黑马程序员---OC学习笔记之protocol概念及基本使用
- PyQt学习笔记01-Qt基本概念进阶篇之窗口布局,对话框
- iOS学习笔记10(1)—GCD介绍(一): 基本概念和Dispatch Queue
- Python 学习笔记(2) - 基本概念、运算符与表达式
- IOS学习笔记(八)之UIActivityIndicatorView(活动指示器视图)的基本概念和使用方法
- TensorFlow笔记1:深度学习基本概念
- Emacs学习笔记一:常见问题及基本概念
- CUDA学习笔记——一些基本概念
- 学习python笔记——基本概念
- Kafka学习笔记一:基本概念