三类IP地址:单播地址、广播地址和多播地址。本文总结一下广播和多播,广播和多播仅应用于UDP。
单播、多播和广播
单播:通常每个以太网帧发往单个目的主机,任何两个主机的通信不会干扰其他主机;
多播:帧传送给属于多播组的多个主机;
广播:一个主机向网上所有的主机发送帧。
广播
四种广播地址。受限的广播:255.255.255.255,改地址用于主机配置过程IP数据报的目的地址,此时主机不知道它所在的网络掩码。任何情况下路由器都不转发目的地址为受限广播地址数据报。
指向网络的广播:netid.255.255.255;
指向子网的广播:跟子网掩码;
指向所有子网的广播地址:跟指向子网的广播地址不一样。
多播
使用广播的问题在于在增加了对广播数据不感兴趣主机的处理负荷。拿一个UDP广播为例,网内有50个主机,可能只有20个主机参与,如果是广播的话,其余30台主机就必须不得不处理这些广播信息。
主机对信道传过来的帧过滤过程:(1)网卡查看信道传过来的帧,确定是否接受该帧,若接受传给驱动程序,通常网卡只接受那些目的地址为网卡物理地址或广播地址的帧。 大多数网卡通过配置可接受多播帧。(2)设备驱动程序进行另外的帧过滤,检查帧类型中指定的协议类型(IP,ARP,RARP);(3)多播过滤,检测主 机是否属于多播地址中说明的多播组;(4)网络层对IP地址的源地址和目的地址过滤;(3)传输层对端口号进行过滤,即没有相应的进程使用使用该端口丢弃 该帧,并产生一个ICMP不可达报文。
D类地址中如下格式为多播地址:
能够接收发往一个特定多播组地址数据的主机集合称为主机组。一个主机组(host group)一个主机组可跨越多个网络。主机的成员可随时加入或离开主机组。主机组对主机的数量没有限制,同时不属于该主机组的成员也可以先该主机组发送 信息。一些多播地址被IANA确定为知名地址,它们被称为永久主机组。224.0.0.1代表“该子网内的所有系统组”。
多播地址向以太网地址的转换:
单个物理网络的多播是简单的。多播进程将目的 IP地址指明为多播地址,设备驱动程序将它转换为相应的以太网地址,然后把数据发送出去。这些接收进程必须通知它们的 IP层,它们想接收的发往给定多播地址的数据报,并且设备驱动程序必须能够接收这些多播帧。这个过程就是“加入一个多播组”(使用“接收进程”复数形式的 原因在于对一确定的多播信息,在同一主机或多个主机上存在多个接收者,这也是为什么要首先使用多播的原因)。当一个主机收到多播数据报时,它必须向属于那个多播组的每个进程均传送一个复制。这和单个进程收到单播UDP数据报的UDP不同。使用多播,一个主机上可能存在多个属于同一多播组的进程。
IGMP
Internet组管理协议( IGMP)。它让一个物理网络上的所有系统知道主机当前所在的多播组。IGMP封装在IP数据报中发送。
多播路由器使用IGMP报文来记录与该路由器相连网络中组成员的变化情况。使用规则如下:
(1)当第一个进程加入一个组时,主机就发送一个 IGMP报告。如果一个主机的多个进程加入同一组,只发送一个IGMP报告。这个报告被发送到进程加入组所在的同一接口上。
(2) 进程离开一个组时,主机不发送 IGMP报告,即便是组中的最后一个进程离开。主机知道在确定的组中已不再有组成员后,在随后收到的 IGMP查询中就不再发送报告报文。
(3)多播路由器定时发送 IGMP查询来了解是否还有任何主机包含有属于多播组的进程。多播路由器必须向每个接口发送一个 IGMP查询。因为路由器希望主机对它加入的每个多播组均发回一个报告,因此IGMP查询报文中的组地址被设置为0。
(4)主机通过发送 IGMP报告来响应一个 IGMP查询,对每个至少还包含一个进程的组均要发回IGMP报告。
多播路由器只关心组里面是否还有主机,而不关心组里有多少主机。