`
codepeak
  • 浏览: 31895 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

广播和多播

阅读更多

一. 广播和多播仅应用于UDP,它们对需要将报文同时传送到多个接收者的应用来说十分重要。TCP是一个面向连接的协议,它意味着分别位于两主机(由两个IP地址确定)内的两个进程(由端口号确定)间存在一条连接。

 

链路层也有一个“广播”,但是不是这里的这个广播。

 

二. 主机对由信道传送过来的帧的处理过滤过程:

首先,网卡查看由信道传送过来的帧,确定是否接收该帧,若接收后就将它传往设备驱动程序。通常网卡仅接收那些目的地址为网卡物理地址或广播地址的帧(注意这里的地址是MAC地址),目前多数网卡也能接收目的地址为多播地址或者子网多播地址的帧。对于以太网,当地址中最高字节的最低位设置为1时,表示该地址是一个多播地址,用十六进制表示为01:00:00:00:00:00(以太网广播地址ff:ff:ff:ff:ff:ff可以看做是以太网多播地址的特例),注意这里的地址都是指链路层的MAC地址。另外,多数接口均被设置为混合模式,这种模式能够接收每个帧的一个复制。(tcpdump使用这种模式)

 

如果一个网卡接收到一个帧,如果帧检验和错误,那么直接丢弃,否则这个帧将传送给设备驱动程序。

 

设备驱动程序将进行另外的帧过滤。首先,帧类型必须指定要使用的协议,其次,进行多播过滤来检测该主机是否属于多播地址说明的多播组

 

设备驱动程序将数据传送给下一层(网络层)。比如,当帧类型指定为IP数据报时,就传往IP层。IP根据IP地址中的源地址和目的地址进行更多的过滤检测。如果正常,就将数据报传送给下一层(如TCP或UDP)

 

每次UDP收到IP传送过来的数据报,就根据端口号,有时还有源端口号进行数据报的过滤。如果当前没有进程使用该目的端口号,就丢弃该数据报并产生一个ICMP不可达报文(TCP类似)。如果UDP数据报存在检验和错,将被丢弃。

 

由上可知,使用广播的问题在于它增加了对广播数据不感兴趣的主机的处理负荷。一个广播要到经过传输层处理(TCP或UDP)后才知到是否是自己需要的。而使用多播可以在设备驱动程序处理时(链路层)就将不感兴趣的帧丢弃掉。

一个主机可以加入多个多播组。网卡将获悉该主机属于哪个多播组,然后仅接收主机所在多播组的那些多播帧。

 

三. 广播

255.255.255.255是受限的广播地址。路由器不转发这样的广播,这种广播只存在于本地网络中。

 

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

 

指向子网的广播地址和指向所有子网的广播地址需要了解子网掩码。

 

广播是一种应该谨慎使用的功能。在许多情况下,IP多播被证明是一种更好的选择。

 

四. 多播

多播提供两类服务:

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

2)客户对服务器的请求。例如无盘工作站需要确定启动引导服务器。目前这项服务通过广播来进行,但是使用多播可以降低不提供这种服务的主机的负载。

 

多播的地址:D类地址

前四位为1110,后面的28位全部用来表示多播组ID,而不再表示其他。它们的范围是244.0.0.0 ~ 239.255.255.255

 

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

通过将其低23bit映射到响应的以太网地址中以便实现多播组地址到以太网地址的转换。由于映射过程中多播组ID的高5位(28-23)被忽略了,所以地址映射不是唯一的,因此需要其他的协议实现额外的数据报过滤。

 

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics