zoukankan      html  css  js  c++  java
  • UNP学习 多播

    一、概述

    单播地址标识单个接口,广播地址标识子网上的所有接口,多播地址标识一组接口。

    单播和广播是编址方案的两个极端,多播的目的就在于提供一种折衷的方案。

    二、多播地址

    我们必须区分IPv4多播地址和IPv6多播地址。

    IPv4

    D类地址是多播地址,从244.0.0.0到239.255.255.255是多播地址。D类地址的低28位构成了多播组ID,而整个32位地址则称为组地址。

    下面是几个特殊的IPv4多播地址:

    • 224.0.0.1是一个所有主机组,子网上所有具有多播能力的主机必须在所有具有多播能力的接口上加入该组。
    • 224.0.0.2是一个所有路由器组,所有多播路由器必须在所有具有多播能力的接口加入该组
    • 介于224.0.0.0到224.0.0.255间的地址称为链路局部地址。用于保留低级拓扑发现和维护协议。

    IPv6多播地址

    IPv6多播地址的高序字节值为ff,组地址的低序32位拷贝到以太网地址的低序32位。以太网的高序2字节值为33:33.

    以太网地址第一字节的低序2位表明该地址是一个本地管理组地址。本地管理意味着不能保证地址的唯一性,可能有除IPv6外的其他协议族共享同一网络并使用同样的以太网地址高序2字节值。

    4位多播标志用于区分众所周知多播组和临时多播组。该字段的高3为保留。IPv6多播地址还包含一个4位的范围字段。

    IPv6多播地址:

    • ff02::1是一个所有节点组。子网上的具有多播能力的所有主机必须在具有多播能力的所有接口上加入该组。
    • ff02::2是一个所有路由器组。所有子网上的多播路由器必须在具有多播能力的所有接口上加入该组。

    多播地址的范围:

    1:节点局部即局部于节点

    2:链路局部即局部于链路

    3:网点局部即局部于网点

    8:组织局部即局部于组织

    14:全球(global)

    三、局域网上多播和广播的比较

    四、广域网上的多播

    五、多播套接口选项

    多播的API支持仅需要5个新的套接口选项

    struct ip_mreq {
        struct in_addr imr_multiaddr;
        struct in_addr imr_interface;
    };
    
    struct ipv6_mreq {
        struct in6_addr ipv6mr_multiaddr;
        unsigned int ipv6mr_interface;
    };

    六、mcast_join和相关函数

    #include "unp.h"
    int mcast_join(int sockfd, const struct sockaddr * sa, socklen_t salen,
        const char *ifname, u_int ifindex);
    int mcast_leave(int sockfd, const struct sockaddr *sa, socklen-t salen);
    int mcast_set_if(int sockfd, const char *ifname, u_int ifindex);
    int mcast_set_loop(int sockfd, int flag);
    int mcast_set_ttl(int sockfd, int ttl);
    返回:成功0,出错-1
    int mcast_get_if(int sockfd);
    返回:成功非负接口索引,出错-1
    int mcast_get_loop(int sockfd);
    返回:成功当前回馈标志,出错-1
    int mcast_get_ttl(int sockfd);
    返回:成功当前TTL或跳限,出错-1

    mcast_join函数加入一个多播组

    mcast_leave离开一个多播组

    mcast_set_if给外出多播数据报设置缺省的接口索引

    mcast_set_loop设置回馈选项为1或0

    无欲速,无见小利。欲速,则不达;见小利,则大事不成。
  • 相关阅读:
    siamese跟踪论文思考
    卷积与相关
    pytorch保存模型等相关参数,利用torch.save(),以及读取保存之后的文件
    发表在 Science 上的一种新聚类算法
    word2vec 中的数学原理详解
    一种并行随机梯度下降法
    一种利用 Cumulative Penalty 训练 L1 正则 Log-linear 模型的随机梯度下降法
    最大熵学习笔记(六)优缺点分析
    最大熵学习笔记(四)模型求解
    最大熵学习笔记(三)最大熵模型
  • 原文地址:https://www.cnblogs.com/ch122633/p/8617503.html
Copyright © 2011-2022 走看看