天天看点

TCP/IP详解卷1:第十二章 广播和组播

引言

IP地址分为三类:单播、广播和组播。其中,广播和组播只适用于UDP(因为TCP是端对端的连接,无法实现一对多)。

单播,一对一,目的地址是单个主机;

广播,一对全部,目的地址是局域网中的全部主机;

多播,一对部分,目的地址是局域网中的部分主机;广播也是多播的一种特殊形式,即目的地址为全部主机。

TCP/IP详解卷1:第十二章 广播和组播

如果网卡收到一个帧,如果帧检验和错,网卡将丢弃该帧;如果无错误,这个帧将被传送给设备驱动程序。

设备驱动程序收到数据帧后,将进行另外的帧过滤。首先,帧类型中必须指定要使用的协议( 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数据报存在检验和错,将被丢弃。

注意:从上图可以看出,无论在哪一层,均存在丢弃数据包的可能。

使用广播的问题在于它增加了对广播数据不感兴趣主机的处理负荷。拿一个使用 U D P广播应用作为例子。如果网内有 5 0个主机,但仅有 2 0个参与该应用,每次这 2 0个主机中的一个发送 U D P广播数据时,其余 3 0个主机不得不处理这些广播数据报。一直到 U D P层,收到的U D P广播数据报才会被丢弃。这 3 0个主机丢弃 U D P广播数据报是因为这些主机没有使用这个目的端口。

多播的出现减少了对应用不感兴趣主机的处理负荷。使用多播,主机可加入一个或多个多播组。这样,网卡将获悉该主机属于哪个多播组,然后仅接收主机所在多播组的那些多播帧。

广播

TCP/IP详解卷1:第十二章 广播和组播

后面的4种均为广播地址,下面分别介绍。

受限的广播

受限的广播通常只在系统初始启动时才会用到。受限的广播地址是 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5。该地址用于主机配置过程中 I P数据报的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的I P地址也不知道。

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

指向网络的广播

指向网络的广播地址是主机号为全 1的地址。 A类网络广播地址为 n e t i d . 2 5 5 . 2 5 5 . 2 5 5(如10.255.255.255),其中n e t i d为A类网络的网络号。

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

指向子网的广播

指向子网的广播地址为主机号为全 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,该地址就不是指向子网的广播地址(其实就不是广播地址),这是因为,当子网掩码为255.255.254.0时,这时B类地址的子网占7位,那么主机位也就是占到了9位,这时的子网的广播地址应该是:128.1.3.255,只有最后的9位(主机位)全为1的时候,才是广播地址。

指向所有子网的广播

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

例如,如果目的子网掩码为2 5 5 . 2 5 5 . 2 5 5 . 0,那么I P地址1 2 8 . 1 .2 5 5 . 2 5 5是一个指向所有子网的广播地址。

如果网络没有划分子网,这就是一个指向网络的广播。这是因为,如果没有划分子网,那么主机位占16位,网络位占16位,这时的子网掩码为255.255.0.0,此时地址128.1.255.255即是网络号128.1的广播地址,因为主机地址为全1。

多播

I P多播提供两类服务:

1) 向多个目的地址传送数据(主要功能)。

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

多播组地址

TCP/IP详解卷1:第十二章 广播和组播

不像A\B\C类地址,分别表示网络号和主机号,D类地址分配的 28 bit均用作多播组号而不再表示其他。

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

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

多播地址(IP层到MAC层的转换)

IP层多播地址范围从2 2 4 . 0 . 0. 0到2 3 9 . 2 5 5 . 2 5 5 . 2 5 5。

为了指明一个多播地址,任何一个以太网地址的首字节必须是 0 1,这意味着与 I P多播相对应的以太网地址范围从 0 1 : 0 0 : 5 e : 0 0 : 0 0 : 0 0到0 1 : 0 0 : 5 e : 7f : ff : ff,即以太网地址中最高位的01是人为指定的,用于标识该地址是多播地址。

广播组播在IP层和链路路层的目的地址表示

IP层和链路层都存在广播和多播,其地址是对应的,但不完全相同。

广播

IP层:网络号(含子网号) + 全1主机号

链路层:MAC地址全1,即ff ff ff ff ff ff

组播

IP层:224.0.0.0到239.255.255.255

MAC层:0 1 : 0 0 : 5 e : 00 : 0 0 : 0 0到0 1 : 0 0 : 5 e : 7 f : ff : ff

继续阅读