一、概述

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

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

二、多播地址

我们必须区分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,出错-
int mcast_get_if(int sockfd);
返回:成功非负接口索引,出错-
int mcast_get_loop(int sockfd);
返回:成功当前回馈标志,出错-
int mcast_get_ttl(int sockfd);
返回:成功当前TTL或跳限,出错-

mcast_join函数加入一个多播组

mcast_leave离开一个多播组

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

mcast_set_loop设置回馈选项为1或0

UNP学习 多播的更多相关文章

  1. UNP学习笔记(第十五章 UNIX域协议)

    UNIX域协议是在单个主机上执行客户/服务器通信的一种方法 使用UNIX域套接字有以下3个理由: 1.UNIX域套接字往往比通信两端位于同一个主机的TCP套接字快出一倍 2.UNIX域套接字可用于在同 ...

  2. UNP学习笔记(第十四章 高级I/O函数)

    本章讨论我们笼统地归为“高级I/O”的各个函数和技术 套接字超时 有3种方法在涉及套接字的I/O操作上设置超时 1.调用alarm,它在指定超时时期满时产生SIGALRM信号 2.在select中阻塞 ...

  3. UNP学习笔记(第六章 I/O复用)

    I/O模型 首先我们将查看UNIX下可用的5种I/O模型的基本区别: 1.阻塞式I/O 2.非阻塞式I/O 3.I/O复用(select和poll) 4.信号驱动式I/O(SIGIO) 5.异步I/O ...

  4. UNP学习笔记(第五章 TCP客户/服务程序实例)

    我们将在本章使用前一章中介绍的基本函数编写一个完整的TCP客户/服务器程序实例 这个简单得例子是执行如下步骤的一个回射服务器: TCP回射服务器程序 #include "unp.h" ...

  5. UNP学习 广播

    一.概述 虽然UDP支持各种形式的地址,但TCP只支持单播地址. 上图要点是: IPv4对多播的支持是可选的,而IPv6则时必须的. IPv6没有提供对广播的支持:当使用广播的IPv4应用程序一直到I ...

  6. unp学习笔记——Chapter1

    1.发现网络拓扑的几个重要的命令 (1).netstat -i 提供网络接口的信息.我们还指定-n 标志以输出数值地址,而不是试图把它们反向解析成名字.netstat -r 展示路由表. dzhwen ...

  7. UNP学习总结(二)

    本文是UNP复习系列的第二篇,主要包括了以下几个内容 UNIX系统下5种I/O模型 阻塞.非阻塞,同步.异步 epoll函数用例 一.Unix下的五种可用I/O模型 阻塞式I/O模型 阻塞式I/O是最 ...

  8. UNP学习总结(一)

    本文主要为对UNP第五章部分内容的实验和总结. UNP第五章对一个echo服务器和客户端在各种连接状态下的表现做了详细的分析,包括了: 正常启动和终止: accept返回前连接中止: 服务器进程终止: ...

  9. UNP学习笔记(第三十章 客户/服务器程序设计范式)

    TCP测试用客户程序 #include "unp.h" #define MAXN 16384 /* max # bytes to request from server */ in ...

随机推荐

  1. 浅析弹性公网IP付费模式和短时升配功能介绍

    ​ 弹性公网IP付费模式对比 弹性公网IP(EIP),有两种付费方式.一种是预付费,一种是后付费.对于预付费弹性公网IP而言,最大的优点就是带宽费用便宜,相对于后付费有比较大的优惠. 例如,杭州地域6 ...

  2. HDU 6038 Function —— 2017 Multi-University Training 1

    Function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total ...

  3. 暑期训练 CF套题

    CodeForces 327A 题意:有n个数,都是0或1,然后必须执行一次操作,翻转一个区间,里面的数0变1,1变0,求最多1的数量 思路:最开始我写的最大字段和,后面好像写搓了,然后我又改成暴力, ...

  4. intellijidea查看git窗口

    version control null

  5. 使用juqery-ui完成联想查询功能

    最近公司的项目有个需求,需要使用联想查询功能.就是一个文本输入框,在输入的时候获取值去后端模糊查询然后按照列表显示在下面.效果如下图: 经过搜索找到这个插件,查阅资料可以完成这个功能,即可以实现静态数 ...

  6. 转载:AWR介绍使用

    转载自 http://www.cnblogs.com/lanzi/archive/2011/03/07/1975096.html 自动工作负载库(Automatic Workload Reposito ...

  7. npm run mock | npm run dev只能启动一个

    解决方法: 开两个命令窗口 先运行npm run mock 再运行npm run dev

  8. boostrap中lg,md,sm,xs分别对应的像素宽度

    col-xs-   超小屏幕 手机 (<768px)col-sm-  小屏幕 平板 (≥768px)col-md-  中等屏幕 桌面显示器 (≥992px)col-lg-    大屏幕 大桌面显 ...

  9. Netty 粘包 拆包 | 史上最全解读

    Netty 粘包/半包原理与拆包实战(史上最全) 疯狂创客圈 Java 聊天程序[ 亿级流量]实战系列之13 [博客园 总入口 ] 本文的源码工程:Netty 粘包/半包原理与拆包实战 源码 本实例是 ...

  10. 使用腾讯地图请求来源未被授权, 此次请求来源域名/ip:servicewechat.com

    原文:微信小程序使用腾讯地图请求来源未被授权, 此次请求来源域名:servicewechat.com 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明 ...