19章 组播
1、组播地址
D类地址(224.0.0.0到239.255.255.255)为多播地址。其中224.0.0.0到224.0.0.255之间的地址称为链路局部地址,用于低级拓扑发现和维护协议,以这些地址为目的地址的数据包不能被多播路由器转发。多播IP地址到MAC地址的转换不是一一对应的,多个多播IP地址可能对应同一个MAC地址。
多播地址分为如下几类:
范围 | TTL | 地址范围 | |
节点局部 | 0 | 数据包禁止从接口输出 | |
链路局部 | 1 | 224.0.0.0到224.0.0.255 | 数据包不能被路由器转发 |
网点局部 | <32 | 239.255.0.0到239.255.255.255 | 由网点的多播路由器管理员决定 |
组织局部 | 239.192.0.0到239.192.255.255 | 由组织的多播路由器管理员决定 | |
全球 | <255 | 224.0.1.0到238.255.255.255 |
2、非完备过滤和完备过滤
非完备过滤:数据链路层,接口可以接受很多目的MAC不是本机MAC的数据包,因为本机可能加入很多多播组,由于多播IP地址与多播MAC地址对应关系是一对多,则可能接受不属于自己的包。过滤不够严密。
完备过滤:IP层,数据包被接受上来了,然后IP层将分组的目的IP和自己组播IP进行比较,由于是基于32位D类地址完成的。不会错误接受数据,所以称为完备过滤。
3、广域网上的多播
广域网上的多播需要多播路由器的支持,路由器之间通过多播路由协议相互进行通信。而多播路由器和主机之间通过IGMP之间交互。
MBone就是广域网上的多播主干网。
4、多播套接口选项
选项名 | 数据类型 | 说明 |
IP_ADD_MEMBERSHIP | Struct ip_merg | 加入一个多播组 |
IP_DROP_MEMBERSHIP | Struct ip_merg | 离开一个多播组 |
IP_MULTICAST_IF | Struct in_addr | 指定外出多播数据包的外出接口 |
IP_MULTICAST_TTL | u_char | 指定外出多播数据包的TTL |
IP_MULTICAST_LOOP | U_char | 使能或禁止外出多播数据包的回馈 |
前两个用于接收,后三个用于发送。
参考:
(1)MBONE的理解
(2)IP组播好书籍