😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍 🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰发布时间⏰:
本文未经允许,不得转发!!!
目录
- 🎄一、多播概述
- 🎄二、多播地址
- ✨2.1、IPv4 多播地址
- ✨2.2、IPv6 多播地址
- ✨2.3、多播地址映射为MAC地址
- 🎄三、多播的过程
- 🎄四、UDP实现多播的例子
- 🎄五
- 🎄六、
🎄一、多播概述
在网络编程中,有三种常见的通信方式:单播、广播、多播(组播),这三种方式对比如下表:
类型 | IPv4 | IPv6 | TCP | UDP | 所标识接口数 | 递送到的接口数 |
---|---|---|---|---|---|---|
单播 | 支持 | 支持 | 支持 | 支持 | 一个 | 一个 |
广播 | 支持 | 支持 | 全体 | 全体 | ||
多播 | 可选 | 支持 | 支持 | 一组 | 整个组 |
多播的概念
IP 多播(也称多址广播
或组播
)技术,是允许一台主机
向多台主机
发送消息的一种通信方式。单播只向单个IP接口发送数据,广播是向子网内所有IP接口发送数据,多播则介于两者之间,向一组IP接口发送数据。
多播支持IPv4,也支持IPv6。在IPv6中没有广播,认为广播只是特殊(把整个子网视为多播组)的多播。
多播支持UDP,不支持TCP。
多播既可用于局域网,也可用于广域网,而广播一般在局域网使用。
多播的优点
比起广播,多播数据报只会发送到加入多播组的主机,不会像广播那样发给所有主机。
🎄二、多播地址
多播地址用来标识多播组,IPv4使用D类地址的某一个来表示一个多播组地址,IPv6多播地址的高序字节值为ff
。
✨2.1、IPv4 多播地址
IPv4的D类地址(从224.0.0.0到239.255.255.255)是IPv4多播地址,见下图:
D类地址的低序28位构成多播组ID(group ID),整个32位地址则称为组地址(group address)。
IPv4的多播地址可分为三类:
- 链路局部多播地址:
224.0.0.0
到224.0.0.255
,这是为路由协议和其它用途保留的地址,路由器并不转发属于此范围的IP包; - 预留多播地址:
224.0.1.0
到238.255.255.255
,可用于全球范围(如Internet)或网络协议。 - 管理权限多播地址:
239.0.0.0
到239.255.255.255
,可供组织内部使用,类似于私有 IP 地址,不能用于 Internet,可限制多播范围。
下面是若干个IPv4特殊多播地址,这些地址是由IANA确定的,作为永久主机组:
224.0.0.1 所有组播主机
224.0.0.2 所有组播路由器
224.0.0.4 DRMRP 路由器
224.0.0.5 所有 OSPF 的路由器
224.0.0.6 OSPF 指派路由器
224.0.0.9 RPIv2 路由器
224.0.0.10 EIGRP 路由器
224.0.0.13 PIM 路由器
224.0.0.22 IGMPv3
224.0.0.25 RGMP
224.0.1.1 NTP 网络时间协议
✨2.2、IPv6 多播地址
IPv6多播地址的结构如下图,分成4个部分:
- 高位8比特:全部为1,这是固定的,表示这是一个多播地址;
- 标志4比特:分以下几种取值
0000
:众所周知的多播组;
0001
:临时的多播组;
0010
:表示多播地址是基于某个单播前缀赋予的;
0011
:表示基于单播的多播地址总是临时的。 - 范围4比特:可能有以下取值
0:保留。
1:接口本地范围(Interface-Local scope )。
2:链路本地范围(Link-Local scope )。
3:基于单播前缀的地址(Unicast-Prefix-based address )。
4:管理本地范围(Admin-Local scope )。
5:站点本地范围(Site-Local scope)。
6:未分配。
7:汇聚点标记(Rendezvous Point flag )。
8:组织本地范围(Organization-Local scope )。
9-D:未分配。
E:全局范围(Global scope。
F:保留。 - 组ID112比特:低序32位复制到以太网地址的低序32位
下面是若干特殊的IPv6多播地址。
ff01::1
和ff02::1
是所有节点(all-nodes)组。子网上所有具有多播能力的节点(主机、路由器和打印机等)必须在所有具有多播能力的接口上加入该组,类似于IPv4的224.0.0.1
多播地址。但多播是IPv6的一个组成部分,这与IPv4是不同的。
尽管对应的IPv4组称为所有主机组,而IPv6组称为所有节点组,它们的含义是一致的。IPv6重新命名意在更为清晰地指出本组包括了子网上的主机、路由器、打印机,以及任何IP设备。ff01::2
、ff02::2
和ff05::2
是所有路由器(all-routers)组。子网上所有多播路由器必须在所有具有多播能力的接口上加入该组,类似于IPv4的224.0.0.2
多播地址。
✨2.3、多播地址映射为MAC地址
🎄三、多播的过程
🎄四、UDP实现多播的例子
🎄五
🎄六、
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁