广播和多播

三种 I P地址:单播地址、广播地址和多播地址。
广播和多播仅应用于 U D P,它们对需将报文同时传往多个接收者的应用来说十分重要。T C P是一个面向连接的协议,它意味着分别运行于两主机(由 I P地址确定)内的两进程(由端口号确定)间存在一条连接。
每个以太网帧仅发往单个目的主机,目的地址指明单个接收接口,因而称为单播( u n i c a s t )。

有时一个主机要向网上的所有其他主机发送帧,这就是广播。通过 A R P和R A R P可以看到这一过程。
多播(multicast) 处于单播和广播之间:帧仅传送给属于多播组的多个主机。

网卡查看由信道传送过来的帧,确定是否接收该帧,若接收后就将它传往设备驱动程序。通常网卡仅接收那些目的地址为网卡物理地址或广播地址的帧。
多数接口均被设置为混合模式,这种模式能接收每个帧的一个复制。
广播和多播_第1张图片

目前,大多数的网卡经过配置都能接收目的地址为多播地址或某些子网多播地址的帧。对于以太网,当地址中最高字节的最低位设置为 1时表示该地址是一个多播地址,用十六进制可表示为 0 1 : 0 0 : 0 0 : 0 0 : 0 0 : 0 0(以太网广播地址ff : ff : ff : ff : ff : ff可看作是以太网多播地址的特例)。

如果网卡收到一个帧,这个帧将被传送给设备驱动程序(如果帧检验和错,网卡将丢弃该帧)。设备驱动程序将进行另外的帧过滤。首先,帧类型中必须指定要使用的协议( I P、A R P等等)。其次,进行多播过滤来检测该主机是否属于多播地址说明的多播组。

设备驱动程序随后将数据帧传送给下一层,比如,当帧类型指定为 I P数据报时,就传往I P层。 I P根据I P地址中的源地址和目的地址进行更多的过滤检测。如果正常,就将数据报传送给下一层(如T C P或U D P)
每次U D P收到由 I P传送来的数据报,就根据目的端口号,有时还有源端口号进行数据报过滤。如果当前没有进程使用该目的端口号,就丢弃该数据报并产生一个 I C M P不可达报文( T C P根据它的端口号作相似的过滤)。如果U D P数据报存在检验和错,将被丢弃。

2 广播
一共有4种广播

2.1 受限的广播
受限的广播地址是 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5。该地址用于主机配置过程中 I P数据报的目的地址,主机可能还不知道它所在网络的网络掩码,甚至连它的 I P地址也不知道。
路由器都不转发目的地址为受限的广播地址的数据报,这样的数据报仅出现在本地网络中

2.2 指向网络的广播
指向网络的广播地址是主机号为全 1的地址。 A类网络广播地址为 n e t i d . 2 5 5 . 2 5 5 . 2 5 5,其中n e t i d为A类网络的网络号
一个路由器必须转发指向网络的广播,但它也必须有一个不进行转发的选择。
2.3 指向子网的广播
指向子网的广播地址为主机号为全 1且有特定子网号的地址。作为子网直接广播地址的 I P地址需要了解子网的掩码。例如:如果路由器收到发往 1 2 8 . 1 . 2 . 2 5 5的数据报,当 B类网络1 2 8 . 1的子网掩码为 2 5 5 . 2 5 5 . 2 5 5 . 0时,该地址就是指向子网的广播地址;但如果该子网的掩码为2 5 5 . 2 5 5 . 2 5 4 . 0,该地址就不是指向子网的广播地址。
2.4 指向所有子网的广播
指向所有子网的广播也需要了解目的网络的子网掩码,以便与指向网络的广播地址区分开。指向所有子网的广播地址的子网号及主机号为全 1。

4 多播
I P多播提供两类服务:
1) 向多个目的地址传送数据。有许多向多个接收者传送信息的应用:例如交互式会议系统和向多个接收者分发邮件或新闻。如果不采用多播,目前这些应用大多采用 T C P来完成(向每个目的地址传送一个单独的数据复制)。然而,即使使用多播,某些应用可能继续采用T C P来保证它的可靠性。
2) 客户对服务器的请求。例如,无盘工作站需要确定启动引导服务器。目前,这项服务是通过广播来提供的(正如第 1 6章的B O O T P),但是使用多播可降低不提供这项服务主机的负担。
4.1 多播组地址
广播和多播_第2张图片

多播组地址包括为 111 0的最高4 bit和多播组号。它们通常可表示为点分十进制数,范围从2 2 4 . 0 . 0 . 0到2 3 9 . 2 5 5 . 2 5 5 . 2 5 5。

能够接收发往一个特定多播组地址数据的主机集合称为主机组 (host group)。一个主机组可跨越多个网络。主机组中成员可随时加入或离开主机组。主机组中对主机的数量没有限制,同时不属于某一主机组的主机可以向该组发送信息。

2 2 4 . 0 . 0 . 1代表“该子网内的所有系统组”, 2 2 4 . 0 . 0 . 2代表“该子网内的所有路由器组”。多播地址 2 2 4 . 0 . 1 . 1用作网络时间协议 N T P, 2 2 4 . 0 . 0 . 9用作R I P - 2 (见1 0 . 5节), 2 2 4 . 0 . 1 . 2用作S G I公司的d o g f i g h t应用。

4.2 多播组地址到以太网地址的转换
I A N A拥有一个以太网地址块,即高位 24 bit为0 0 : 0 0 : 5 e(十六进制表示),这意味着该地址块所拥有的地址范围从 0 0 : 0 0 : 5 e : 0 0 : 0 0 : 0 0到0 0 : 0 0 : 5 e : ff : ff : ff。 I A N A将其中的一半分配为多播地址为了指明一个多播地址,任何一个以太网地址的首字节必须是 0 1,这意味着与 I P多播相对应的以太网地址范围从 0 1 : 0 0 : 5 e : 0 0 : 0 0 : 0 0到0 1 : 0 0 : 5 e : 7 f : ff : ff。

这里对C S M A / C D或令牌网使用的是I n t e r n e t标准比特顺序,和在内存中出现的比特顺序一样。

这种地址分配将使以太网多播地址中的 2 3 b i t与I P多播组号对应起来,通过将多播组号中的低位2 3 b i t映射到以太网地址中的低位 2 3 b i t实现,这个过程如图 1 2 - 3所示。
由于多播组号中的最高 5 bit在映射过程中被忽略,因此每个以太网多播地址对应的多播组是不唯一的。 3 2 个不同的多播组号被映射为一个以太网地址。例如,多播地址2 2 4 . 1 2 8 . 6 4 . 3 2(十六进制e 0 . 8 0 . 4 0 . 2 0)和2 2 4 . 0 . 6 4 . 3 2(十六进制e 0 . 0 0 . 4 0 . 2 0)都映射为同一以太网地址0 1 : 0 0 : 5 e : 0 0 : 4 0 : 2 0。

既然地址映射是不唯一的,那么设备驱动程序或 I P层(见图1 2 - 1)就必须对数据报进行过滤。因为网卡可能接收到主机不想接收的多播数据帧。另外,如果网卡不提供足够的多播数据帧过滤功能,设备驱动程序就必须接收所有多播数据帧,然后对它们进行过滤。

广播和多播_第3张图片


局域网网卡趋向两种处理类型:一种是网卡根据对多播地址的散列值实行多播过滤,这意味仍会接收到不想接收的多播数据;另一种是网卡只接收一些固定数目的多播地址,这意味着当主机想接收超过网卡预先支持多播地址以外的多播地址时,必须将网卡设置为“多播混杂(multicast promiscuous)”模式。因此,这两种类型的网卡仍需要设备驱动程序检查收到的帧是否真是主机所需要的。
即使网卡实现了完美的多播过滤(基于48 bit的硬件地址),由于从D类I P地址到48 bit的硬件地址的映射不是一对一的,过滤过程仍是必要的。
单个物理网络的多播是简单的。多播进程将目的 I P地址指明为多播地址,设备驱动程序将它转换为相应的以太网地址,然后把数据发送出去。这些接收进程必须通知它们的 I P层,它们想接收的发往给定多播地址的数据报,并且设备驱动程序必须能够接收这些多播帧。这个过程就是“加入一个多播组”(使用“接收进程”复数形式的原因在于对一确定的多播信息,在同一主机或多个主机上存在多个接收者,这也是为什么要首先使用多播的原因)。当一个主机收到多播数据报时,它必须向属于那个多播组的每个进程均传送一个复制。这和单个进程收到单播U D P数据报的U D P不同。使用多播,一个主机上可能存在多个属于同一多播组的进程。
当把多播扩展到单个物理网络以外需要通过路由器转发多播数据时,复杂性就增加了。需要有一个协议让多播路由器了解确定网络中属于确定多播组的任何一个主机。这个协议就是I n t e r n e t组管理协议( I G M P),也是下一章介绍的内容
4.3 FDDI和令牌环网络中的多播
F D D I网络使用相同的 D类I P地址到48 bit FDDI地址的映射过程 [Katz 1990]。令牌环网络通常使用不同的地址映射方法,这是因为大多数令牌控制中的限制。
5 小结
广播是将数据报发送到网络中的所有主机(通常是本地相连的网络),而多播是将数据报发送到网络的一个主机组。这两个概念的基本点在于当收到送往上一个协议栈的数据帧时采用不同类型的过滤。每个协议层均可以因为不同的理由丢弃数据报。

目前有四种类型的广播地址:受限的广播、指向网络的广播、指向子网的广播和指向所有子网的广播。最常用的是指向子网的广播。受限的广播通常只在系统初始启动时才会用到
试图通过路由器进行广播而发生的问题,常常是因为路由器不了解目的网络的子网掩码。结果与多种因素有关:广播地址类型、配置参数等等。
D类I P地址被称为多播组地址。通过将其低位 23 bit映射到相应以太网地址中便可实现多播组地址到以太网地址的转换。由于地址映射是不唯一的,因此需要其他的协议实现额外的数据报过滤



 

 

 

你可能感兴趣的:(TCP/IP,广播和多播)