UNIX网络编程-多播

作者: YBHello | 来源:发表于2017-07-29 17:51 被阅读10次

    要求:

    1. 多播地址
    2. 局域网、广域网的多播
    3. 源特定多播
    4. 多播套接字选项(核心)
    5. 封装范例

    内容:

    1.多播地址

    多播地址-MAC地址映射.JPG

    IPv4多播地址范围:224.0.0.0-239.255.255.255;IPv6多播地址是以 FF: 开始的地址。
    IPv4/IPv6地址到MAC地址的映射如上图。
    多播是一个IP协议上的特性,为了支持多播,需要做一些额外的工作来维护该特性。所以,部分多播地址被用做来维护该特性,如:224.0.0.1 标识所有支持多播功能的主机组;224.0.0.2标识所有路由组(更详细内容可参考RFC文档)。

    2.局域网、广域网的多播

    局域网-广域网的多播.JPG

    局域网的多播,根据IP地址转换的MAC地址(如:01:00:5e:00:01:01)即可被加入多播组的主机识别并接受。
    广域网经过了路由,不能单独通过MAC地址来转发。主机H3加入了组播,则路由器R2将被通知到。此时,R2将发送IGMP报文来通知R1:本路由器R2有一个人加入了组织,后续有活动,需要告知我R2,然后再转给H3。

    3.源特定多播

    在同一网络里,可能出现使用同一个多播组,却发送不同报文。为了更好的标识处理该种场景,考虑将发送多播的主机地址和多播地址一起标识一个多播。这就是源特定多播(SSM)。

    4.多播套接字选项

    A. 发送

    • IF ---- 指定发送组播的接口,默认由内核选择
    • TTL ---- 发送的组播报文TTL,默认 1
    • LOOP ---- 是否回送自己一份发送的报文,默认回送

    前缀:IP_MULTICAST_ / IPV6_MULTICAST_

    B. 接受

    • 动作:
      1. ADD/DROP ---- 加入、离开一个组播
      2. BLOCK/UNBLOCK ---- (不)阻塞特定地址发送的组播
      3. ADD/DROP_SRC ---- 加入、离开一个源特定组播
    • 结构体分类:
      1. 多播地址
      2. 接受多播的地址/接口
      3. 发送多播的地址/接口
    • 结构体名称:
      1. 仅组播
        ip_mreq
        ipv6_mreq
        group_req
      2. 源地址相关的组播
        ip_mreq_source
        group_source_req

    5. 封装范例

    1. mcast_join
    2. mcast_leave
    3. mcast_block
    4. mcast_unblock
    5. mcast_join_source_group
    6. mcast_leave_source_group

    相关文章

      网友评论

        本文标题:UNIX网络编程-多播

        本文链接:https://www.haomeiwen.com/subject/iokclxtx.html