第九章 广播和本地组播(IGMP和MLD)

  • 引言
    • IPv4可以使用单播(unicast),任播(anycast),组播(multicast),广播(broadcast)
    • IPv6可以使用单播(unicast),任播(anycast),组播(multicast),不支持广播地址使用
      • 广播和组播为应用程序提供了两种服务:
        • 数据分组交付至多个目的地
          • 有许多应用程序将信息交付至多个收件方,没有广播或组播,这些类型的服务往往倾向于使用现在的TCp
        • 通过客户端请求/发现服务器
          • 使用广播或组播,应用程序可以向一个服务器发送一个请求,而不用知道任何特定服务器的IP地址,当本地网络环境的信息了解得很少时,这种功能在配置过程中非常有用
    • 虽然广播和组播都可以提供这些重要的功能,但是对于广播来说,组播一般情况下是更可取的,因为组播只设计那些支持或使用特定服务或协议的系统,而广播不是.因此一个广播请求会影响在广播范围内所有可以到达的主机,而组播只影响那些可能对该请求有兴趣的主机.
    • 一般来说只有使用UDP 传输协议的用户应用程序利用广播和组播,此时应用程序发送单个报文到多个收件方才是有意义的.
    • TCp是一个面向连接的协议,这意味着一个连接必须由两台主机与各自主机上一个进程来进行维护.TCP可以使用单播和任播地址,但是不能使用广播和组播地址.
  • 广播
    • 广播是指将报文发送到网络中的所有可能的接收者.例如ARP就是利用广播来实现
  • 使用广播地址
    • 子网广播地址由子网掩码首先取反,然后与IPv4地址进行或运算构建而成,例如
      • 地址 1000 0000 0010 0000 0000 0001 0000 1110 128.32.1.14
      • 掩码取反 0000 0000 0000 0000 0000 0000 1111 1111 0.0.0.255
      • 结果(子网广播地址) 1000 0000 0010 0000 0000 0001 1111 1111 128.32.1.255
    • 255.255.555.255被保留为本地网络广播,它根本不会被路由器转发.
  • 组播
    • 为了减少开销,可以只向对它感兴趣的接收方发送流量,这被称为组播.
    • 组播由足记和路由器来保持,以说明那些接收方对那些流量有兴趣.
    • 在组播TCP/IP模型中,接收方通过指明组播状态来维持,这意味着它必须定期更新或超时删除
  • 将IP组播地址转换为802MAC/以太网地址
    • 因为以太网帧的发送需要一个IP地址和MAC地址,IP地址为组播地址,而MAC则是有特定规则来转换出来
    • IPv4组播MAC地址计算

第九章 广播和本地组播(IGMP和MLD)

    • 所有IP组播地址都被包含在从224.0.0.0到239.255.255.255之间的空间中也就是D类空间,所有的高序位共享一个共同的4序列1110.有28位可以来编码整个空间,即有268435456个组播IP4地址,所有的组播地址都被银蛇到8388608的空间内,所以映射是非唯一的.多个IPv4组ID被映射到相同的MAC层组地址.
    • IPv6组播MAC地址计算

第九章 广播和本地组播(IGMP和MLD)

    • 如图,因为只使用了112个组播地址中的32位,所以2的80次方个组映射到相同的MAC层地址
  • 接收组播数据报
    • 组播的接收基本是在主机给定的接口上的进程加入或离开一个或多个组播的概念,
  • 主机地址过滤
    • 当一个帧可能被接收时,会交给每个主机的网络接口卡(NIC,网卡)上进行验证,它会检查正的正确性,并且决定是否接受该帧(通过校验CRC),并且交付给设备驱动程序和网络协议栈
    • 通常情况下,NIC值接受目的地址是接口的硬件地址或广播地址的那些帧,然而,当涉及组播帧时,情况就更复杂了
    • NIC往往有两类
      • 执行基于组播硬件地址的散列值的过滤,主机软件可以表达对该硬件地址的兴趣,这意味着由于散列冲突,一些不需要的帧总是可以通过
      • 侦听组播地址的一张有限表,如果主机需要接受超过表中能够容纳的更多的组播地址帧,NIC将进入一种组播混杂模式,在这种情况下,所有的组播流量将会交给主机软件.
    • 因此,两种类型接口需要设备驱动程序或高层软件执行检察,以确定接收到的真是否真的需要,虽然过滤还是必须的,尽管存在不完美的地址映射和硬件过滤,组播任然比广播高效
  • 互联网组管理协议和组播侦听发现协议
    • IPv4使用IGMP.IPv6使用MLD,用来让路由器了解附近主机感兴趣的组播,可以将过滤工作交给路由器来执行,直接将数据分发网络内对组播感兴趣的主机
    • 组播路由器定期向每个连接的子网发送IGMP(MLD)请求,以确定那些组和源对连接的主机来说是感兴趣的,主机使用报告相应,说明那些组和源是感兴趣的,如果成员资格编发了,主机也可以发送主动提供报告
    • IGMP(MLD)结构如下

第九章 广播和本地组播(IGMP和MLD)

  • 组成员的IGMP和MLD处理("组成员部分")

第九章 广播和本地组播(IGMP和MLD)

    • 组成员通过该结构的报告向一个或多个连接到统一子网的组播路由器发送报告,可以改变在组播路由器内自己对什么样的组播感兴趣的关键词

第九章 广播和本地组播(IGMP和MLD)

    • (相对于主机)组记录包括了一个组播地址和一个可选的源列表,组记录可以有效的将数据进行确认或者过滤掉.
  • 组播路由器的IGMp和MLD处理("组播路由器部分")
    • 在IGMP和MLD中,组播路由器的工作是为每个组播组,接口和源列表确定是否至少有一个组成员目前在接受相应的流量,这是通过发送查询,以及基于成员发送的报告,简历描述成员存在性的状态来完成的.
    • 此状态是软状态,这意味着,如果没有被刷新,在经过一个确定的事件后,它会被清除

第九章 广播和本地组播(IGMP和MLD)

  • IGMP和MLD健壮性
    • 通过多个组播路由器在统一链路上运行,可以处理组播路由器潜在的失效故障.
    • 在这样的配置中,具有最小的IP地址的路由器被选为"查询器",查询器负责发送一般和特定查询来确定该子网中主机的当前状态,其他路由器监控协议报文,因为它们也是组成员或组播混杂侦听器,并且加入当前查询器失效了,不同的路由器能够作为查询器介入
  • IGMP和MLD相关的攻击
    • 由于IGMP和MLD是信令协议,可以控制控制组播流量的流动,使用这些协议的攻击主要是Dos攻击或资源使用攻击.
    • 一个简单的Dos攻击可以通过发送IGMP或MLD来订阅大量的高带宽的组播组来发送器,这样会引起带宽好景,导致拒绝服务.
    • 一些攻击已经通过利用实现错误来试试,分片的IGMP分组已经被用来在特定的操作系统中诱导崩溃