多播(组播)原理分析

 为什么要使用多播:
        网 卡从网络上接收到目标物理地址对应的所有bit位都为1的数据报时,会收到这条消息并将其上传给驱动程序,网卡的这种工作模式称为广播模式,网卡的缺省工作模式包含直接模式和广播模式。利用这一特性,UDP(用户数据报协议)还提供了向多个目标地址发送广播数据包的能力。广播数据即数据从一个工作站上发出, 只要将数据包的目标物理地址对应的所有bit位都设为1,局域网内的所有工作站网卡都会收到这条消息并将其上传给驱动程序。这一特征适用于无连接协议,因为局域网(LAN)上的所有机器都可获得并处理广播消息。使用广播消息的不利之处是每台机器都必须对该消息进行处理。比如,一用户在LAN上广播一条消息,每台机器上的网卡都会收到这条消息,并把它上传到网络堆栈(驱动程序完成),然后,堆栈将这条消息的目标端口号与该主机上运行的所有的网络应用程序中所指定的端口号依次比较,看它们是否相等,从而决定哪个网络应用程序应该接收这条消息。通常,这个局域网上的多数机器对该消息都不感兴趣,草草地一弃了之。但是,各台机器在驱动程序中都仍需花时间来处理这个数据包,看是否有应用程序对它感兴趣。结果,高广播通信流使LAN上的机器陷入困境,因为每个工作站都要检查这个数据包。
有一些特殊的物理地址,他们不能作为任何网卡的实际物理地址使用,但网卡能够设定为不过滤从网络上接收到的一个以这些物理地址中的一个和若干个作为目的物理地址的帧。这些物理地址称为多播传送地址网卡的这种工作模式称为多播传送模式
多播”亦称“多点传送”(multicast),也就是一台主机发出的包可以同时被其他多个有资格的主机接收,这台主机和那些有资格的主机就形成了一个组,他们在组内的通信是广播式的多播的工作原理是将一个网络上的某些主机的网卡设置成多播传送工作模式,指定其不过滤以某一个多播传送地址作为目的物理地址的数据帧,这样,这些主机的驱动程序中就可以同时接收以该多播传送地址作为目的物理地址的数据帧,而其他主机的驱动程序却接收不到,这些主机在逻辑上便形成了一个“多播”组。采用这种技术,相对广播而言,可有效减轻网络上“多播”组之外的其他主机的负担,因为发送给“多播”组的数据不会被传送到它们的驱动程序中去处理,避免资源的无谓浪费。最开始的时候,设计这一技术的目的是弥补“广播”(Broadcasting)通信的不足。

多播有两种实现方式:
1.设置网卡为混杂模式,然后通过驱动对收到的所有数据包进行过滤,留下指定的多播地址的数据包。
  这种方式效率比较低,适合不支持多播模式的网卡。
2.设置网卡为多播模式,网卡本身有多播过滤器,网卡自己能够判断进入的数据包是否属于多播数据。
  由于多播过滤是由硬件完成的,所以效率比较高。

 

网卡只接收目的地址为网卡自身物理地址多播地址(广播是多播的一种)的帧。对于以太网,多播的地址的最高字节的最低位为1(01:00:00:00:00:00)
对于IP多播,IP多播地址会转换成以太网多播地址,一个以太网多播地址可以对应多个IP多播地址

因此,设备驱动程序或IP层必须对数据报进行过滤,因为网卡可能收到主机不想接收的多播数据帧。当网卡不提供足够多播数据帧过滤功能时,就必须把网卡设置成“混杂模式”,由驱动检查收到的数据帧是否为主机需要的。
也就是说多播的两种实现模式,都需要由驱动程序参与过滤,只不过如果先由网卡过滤,可以减轻驱动程序的工作量。

 

 多播地址(multicast address)是一组主机的标示符,它已经加入到一个多播组中。在以太网中,多播地址是一个48位的标示符,命名了一组应该在这个网络中应用接收到一个分组的站点。在IPv4中,它历史上被叫做D类地址,一种类型的IP地址,它的范围从224.0.0.0239.255.255.255。D类地址用于组播。

 

 

    Broadcast Address(广播地址)是专门用于同时向网络中所有工作站进行发送的一个地址。在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址广播的分组传送给host ID段所涉及的所有计算机。例如,对于10.1.1.0 (255.255.255.0 )网段,其广播地址为10.1.1.255 (255 即为2 进制的11111111 ),当发出一个目的地址为10.1.1.255 的分组(封包)时,它将被分发给该网段上的所有计算机。

 

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IPv6组播是在IPv6网络中一种多点通信方式,它能够将一条数据包同时发送给多个主机。IPv6组播的通信原理如下: 1. IPv6组播地址 在IPv6中,组播地址是以“FF00::/8”开头的地址。其中,“FF”是固定的,它表示这是一个组播地址,“00”是保留位,用于以后的扩展,后面的位则是组播地址的标识符,可以用于区分不同的组播组。 2. 组播路由 IPv6组播需要使用组播路由来实现多点通信。组播路由是一种特殊的路由,它可以将数据包从源主机转发给多个目的主机。组播路由的工作原理是将数据包复制多份,然后分别发送到所有需要接收该数据包的主机上。 3. 组播成员 组播成员是指加入了组播组的主机。当一个主机需要接收某个组播组的数据包时,它需要向网络中的组播路由发送一个加入组播组的请求。组播路由收到请求后,就将该成员加入组播组,并将后续的组播数据包转发给该成员。 4. 组播数据组播数据包是指发送组播地址的数据包。当一个主机发送一个组播数据包时,它将该数据发送到目标组播地址。组播路由将该数据包复制多份,并分别发送到所有需要接收该数据包的主机上。 综上所述,IPv6组播的通信原理是通过使用组播地址、组播路由和组播成员来实现多点通信。组播路由将组播数据包复制多份,并分别发送到所有需要接收该数据包的主机上,从而实现了多点通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值