【TCP/IP详解】广播和多播
IP地址分类:
- 单播地址
- 广播地址
- 多播地址
单播:发给单个主机;
广播:发给网上的所有主机;
多播:发给多个主机。
广播和多播仅应用于UDP,因为TCP是面向连接的协议。
通常网卡仅接收那些目的地址为网卡物理地址或广播地址的帧,大多数的网卡经过配置都能接收目的地址为多播地址或某些子网多播地址的帧。
广播
广播地址用于目的地址,一下是4种广播地址:
- 255.255.255.255 受限的广播地址。路由器不转发目的地址为该地址的数据报。该地址用于主机配置过程中IP数据报的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的I P地址也不知道。
- netId+主机号全1 指向网络的广播地址。一个路由器必须转发指向网络的广播,但它也必须有一个不进行转发的选择。
- netId+subnetId+主机号全1 指向子网的广播地址。 需要知道子网掩码的地址,才能确定。
- netId+subnetId全1+主机号全1 指向所有子网的广播地址。需要知道子网掩码,当没有划分子网时和指向网络的广播地址等价。
多播
使用广播的问题在于它增加了对广播数据不感兴趣主机的处理负荷。多播的出现减少了对应用不感兴趣主机的处理负荷。使用多播,主机可加入一个或多个多播组。这样,网卡将获悉该主机属于哪个多播组,然后仅接收主机所在多播组的那些多播帧。
多播提供两类服务:
- 向多个目标地址传送数据;
- 客户对服务器的请求, 为了降低不提供服务服务器的负载。
多播组地址包括为1110的最高4bit和多播组号。它们通常可表示为点分十进制数,范围从224.0.0.0到239.255.255.255。能够接收发往一个特定多播组地址数据的主机集合称为主机组(host group)。一个主机组可跨越多个网络。主机组中成员可随时加入或离开主机组。主机组中对主机的数量没有限制,同时不属于某一主机组的主机可以向该组发送信息。
多播永久组:
多播组地址到以太网地址的转换(局域网内)
IANA拥有一个以太网地址块,即高位24 bit为00:00:5e(十六进制表示),这意味着该地址块所拥有的地址范围从00:00:5e:00:00:00到00:00:5e:ff:ff:ff。IANA将其中的一半分配为多播地址。为了指明一个多播地址,任何一个以太网地址的首字节必须是01,这意味着与IP多播相对应的以太网地址范围从01:00:5e:00:00:00到01:00:5e:7f:ff:ff。,通过将多播组号中的低位23bit映射到以太网地址中的低位23bit实现。
既然地址映射是不唯一的,那么设备驱动程序或I P层(见图1 2 – 1)就必须对数据报进行过滤。因为网卡可能接收到主机不想接收的多播数据帧。另外,如果网卡不提供足够的多播数据帧过滤功能,设备驱动程序就必须接收所有多播数据帧,然后对它们进行过滤。
局域网网卡趋向两种处理类型:一种是网卡根据对多播地址的散列值实行多播过滤,这意味仍会接收到不想接收的多播数据;另一种是网卡只接收一些固定数目的多播地址,这意味着当主机想接收超过网卡预先支持多播地址以外的多播地址时,必须将网卡设置为“多播混杂(multicast promiscuous)”模式。
即使网卡实现了完美的多播过滤(基于48 bit的硬件地址),由于从D类IP地址到48 bit的硬件地址的映射不是一对一的,过滤过程仍是必要的。尽管存在地址映射不完美和需要硬件过滤的不足,多播仍然比广播好。当把多播扩展到单个物理网络以外需要通过路由器转发多播数据时,复杂性就增加了。需要有一个协议让多播路由器了解确定网络中属于确定多播组的任何一个主机。这个协议就是Internet组管理协议(IGMP)。FDDI网络使用相同的D类IP地址到48 bit FDDI地址的映射过程。令牌环网络通常使用不同的地址映射方法,这是因为大多数令牌控制中的限制。