运维开发网

TCP/IP学习之“广播和多播”

运维开发网 https://www.qedev.com 2020-10-08 10:19 出处:51CTO 作者:冰润冷曦
广播和多播仅应用于UDP,它们对需将报文同时传往多个接收者的应用来说十分重要。广播1)受限的广播受限的广播地址是255.255.255.255。该地址用于主机配置过程中IP数据报的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也不知道。在任何情况下,路由器都不转发目的地址为受限的广播地址的数据报,这样的数据报仅出现在本地网络中。 2)指向网络的广播指向网络的广播地址是主机

广播和多播仅应用于UDP,它们对需将报文同时传往多个接收者的应用来说十分重要。


广播

1) 受限的广播

受限的广播地址是255.255.255.255。该地址用于主机配置过程中IP数据报的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也不知道。

在任何情况下,路由器都不转发目的地址为受限的广播地址的数据报,这样的数据报仅出现在本地网络中。

2) 指向网络的广播

指向网络的广播地址是主机号为全1的地址。A类网络广播地址为netid.255.255.255,其中netid为A类网络的网络号。

一个路由器必须转发指向网络的广播,但它也必须有一个不进行转发的选择。

3) 指向子网的广播

指向子网的广播地址为主机号为全1且有特定子网号的地址。作为子网直接广播地址的IP地址需要了解子网的掩码。

4) 指向所有子网的广播

指向所有子网的广播也需要了解目的网络的子网掩码,以便与指向网络的广播地址区分开。指向所有子网的广播地址的子网号及主机号为全1。


多播

IP多播提供两类服务:

1) 向多个目的地址传送数据。

2) 客户对服务器的请求。

多播组(D类)IP地址的格式

TCP/IP学习之“广播和多播”

多播组地址包括为1110的最高4 bit和多播组号。它们通常可表示为点分十进制数,范围从224.0.0.0到239.255.255.255。

常用多播组地址:

  • 224.0.0.1代表“该子网内的所有系统组”
  • 224.0.0.2代表“该子网内的所有路由器组”
  • 224.0.1.1用作网络时间协议NTP
  • 224.0.0.9用作RIP-2
  • 224.0.1.2用作SGI公司的dogfight应用

多播地址到以太网地址的转换

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。

D类IP地址到以太网多播地址的映射

TCP/IP学习之“广播和多播”

这种地址分配将使以太网多播地址中的23 bit与IP多播组号对应起来,通过将多播组号中的低位23 bit映射到以太网地址中的低位23 bit实现,由于多播组号中的最高5 bit在映射过程中被忽略,因此每个以太网多播地址对应的多播组是不唯一的。

局域网网卡趋向两种处理类型:一种是网卡根据对多播地址的散列值实行多播过滤,这意味仍会接收到不想接收的多播数据;另一种是网卡只接收一些固定数目的多播地址,这意味着当主机想接收超过网卡预先支持多播地址以外的多播地址时,必须将网卡设置为“多播混杂(multicast promiscuous)”模式。

单个物理网络的多播是简单的。多播进程将目的IP地址指明为多播地址,设备驱动程序将它转换为相应的以太网地址,然后把数据发送出去。这些接收进程必须通知它们的IP层,它们想接收的发往给定多播地址的数据报,并且设备驱动程序必须能够接收这些多播帧。这个过程就是“加入一个多播组”(使用“接收进程”复数形式的原因在于对一确定的多播信息,在同一主机或多个主机上存在多个接收者,这也是为什么要首先使用多播的原因)。当一个主机收到多播数据报时,它必须向属于那个多播组的每个进程均传送一个复制。这和单个进程收到单播UDP数据报的UDP不同。使用多播,一个主机上可能存在多个属于同一多播组的进程。

当把多播扩展到单个物理网络以外需要通过路由器转发多播数据时,复杂性就增加了。需要使用IGMP协议让多播路由器了解确定网络中属于确定多播组的任何一个主机。


0

精彩评论

暂无评论...
验证码 换一张
取 消