“多播”也能够称为“组播”。在网络技术的应用并非非常多,网上视频会议、网上视频点播特别适合採用多播方式。
IP组播是一种通过使用一个组播地址将数据在同一时间以高效的方式发往处于TCP/IP网络上的多个接收者的协议。“你把数据包从一头放进去,网络就会试图将它们传递到想要得到它们的人那里。”
由于假设採用单播方式,逐个节点传输,有多少个目标节点,就会有多少次传送过程,这样的方式显然效率极低。是不可取的;假设採用不区分目标、所有发送的广播方式。尽管一次能够传送完数据。可是显然达不到区分特定数据接收对象的目的。採用多播方式,既能够实现一次传送所有目标节点的数据,也能够达到仅仅对特定对象传送数据的目的。
IP网络的多播一般通过多播IP地址来实现。
多播IP地址就是D类IP地址。即224.0.0.0至239.255.255.255之间的IP地址。
单播、多播(组播)和广播的区别?
长度为8字节的IGMP报文格式。
IGMP报文的字段格式
IGMP类型为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。检验和的计算和ICMP协议相同。组地址为D类IP地址。在查询报文中组地址设置为0,在报告报文中组地址为要参加的组地址。
IGMP协议
加入一个多播组
多播的基础就是一个进程的概念(操作系统执行的一个程序),该进程在一个主机的给定接口上加入了一个多播组。在一个给定接口上的多播组中的成员是动态的—它随时因进程加入和离开多播组而变化。
这里所指的进程必须以某种方式在给定的接口上加入某个多播组。进程也能离开先前加入的多播组。
IGMP报告和查询
多播路由器使用IGMP报文来记录与该路由器相连网络中组成员的变化情况。使用规则如下:
1) 当第一个进程加入一个组时,主机就发送一个IGMP报告。如果一个主机的多个进程加入同一组,只发送一个IGMP报告。这个报告被发送到进程加入组所在的同一接口上。
2) 进程离开一个组时,主机不发送IGMP报告,即便是组中的最后一个进程离开。主机知道在确定的组中已不再有组成员后,在随后收到的IGMP查询中就不再发送报告报文。
3) 多播路由器定时发送IGMP查询来了解是否还有任何主机包含有属于多播组的进程。多播路由器必须向每个接口发送一个IGMP查询。因为路由器希望主机对它加入的每个多播组均发回一个报告,因此IGMP查询报文中的组地址被设置为0。
4) 主机通过发送IGMP报告来响应一个IGMP查询,对每个至少还包含一个进程的组均要发回IGMP报告。
使用这些查询和报告报文,多播路由器对每个接口保持一个表,表中记录接口上至少还包含一个主机的多播组。当路由器收到要转发的多播数据报时,它只将该数据报转发到(使用相应的多播链路层地址)还拥有属于那个组主机的接口上。
图3显示了两个IGMP报文,一个是主机发送的报告,另一个是路由器发送的查询。该路由器正在要求那个接口上的每个主机说明它加入的每个多播组。
图3:IGMP的报告和查询
所有主机组
目的IP地址224.0.0.1被称为所有主机组地址。它涉及在一个物理网络中的所有具备多播能力的主机和路由器。当接口初始化后,所有具备多播能力接口上的主机均自动加入这个多播组。这个组的成员无需发送IGMP报告。
IGMPv1 | IGMPv2 | IGMPv3 | |
实现机制 | 基于查询与响应 | ||
查询器 | 通过多播路由选择协议选举产生 | 自己有选举机制 | 自己有选举机制 |
组员加入 | 主机主动向要加入的多播组发送加入报告 | ||
组员离开 | 不立即发送离开报文,只是在下次查询时不响应(即不发送响应报告) | 主动发离开报文,查询器收到报文就开始进行特定组查询 | 主动发离开报文,查询器收到报文就开始进行特定组查询 |
指定源、组查询 | 无 | 指定组 | 指定源、组 |
指定源、组加入 | 无 | 无 | 有 |
RFC | RFC 1112 | RFC 2236 | RFC 3376 |
反向路径转发RPF:反向路径转发(RPF)是用在多播路由选择的技术。这种机制用数据报的源地址来避免数据报反复通过一个环路。
RPF :(reverse path forwarding用于多播) 反向路径查找 ,就是为了防止网络中大量的多播包重复转发,
在组播中属于重要的一种技术。
URPF:(unicast reverse path forwarding) 单播反向路径查找,反向路由转发在防止恶意伪造源地址
以及DDoS攻击方面颇有成效,管理员可以加以采用。