IPv6地址、单播、多播/组播介绍

1. IPv6地址介绍

这里主要介绍IPv6地址,什么是IP地址就不介绍了。

IPv6地址主要是为了解决IPv4地址枯竭的问题。

1.1 IPv6地址的格式

IPv6地址有128位,通常使用16进制表示,一个16进制数可以表示4位二进制,因此128位可以使用32个16进制数表示,而把4个16进制数又分成一组,因此128位可以表示成8组。

如下图所示,一个X表示一组(4个)16进制字符串,也就是一组包含了16个二进制。一共有8组。

图片来源:《IPv6 Fundamentals A Straightforward》

1.2 IPv6地址简写方式

一个完整的IPv6地址有32个十六进制字符串表示,太长了,可以简写,简写规则有两种:

  1. 省略每一组开头的0
  2. 省略连续的若干个0,使用两个冒号::表示省略的0。

1.2.1 省略开头的0

使用第一种简写规则,省略开头的0,如下图所示:

1.2.2 使用双冒号代替连续的0

如果使用第二种规则,省略连续的0,使用两个冒号表示::,如下图:

1.2.3 两种方式结合

如果把两种规则结合起来,也是最常见的写法,如下图:

1.2.4 简写时注意事项

  1. 双冒号::只能在IPv6地址中出现一次
    比如地址:ffff:0000:0000:ffff:0000:0000:0000:0001,就不能写成:ffff::ffff::0001,因为这样写根本不知道原来的地址是什么样的。
  2. 使用双冒号::代替连续0最多的
    比如地址:ffff:0000:0000:ffff:0000:0000:0000:0001,后面有连续的三组都是0,因此应该使用双冒号::代替这里,因此标准简写应该是ffff:0000:0000:ffff::00001
  3. 连续的0出现位置一样多,双冒号代替先出现的(最左边的)。
    比如地址:ffff:0000:0000:ffff:ffff:0000:0000:ffff,第一二组是连续的0,第六七组也是连续的0,标准写法应该是只能使用双冒号::代替先出现的,也就是第一二组,标准写法为:ffff::ffff:ffff:0000:0000:ffff

1.3 IPv6地址分类

IPv6地址分类基本可以如下图所示:

IPv6地址可以分为三种类型:单播地址、多播地址、任播地址。

2. 单播地址unicast

如上图,单播地址可以分为6种:

  1. Global Unicast
  2. Link-Local Unicast
  3. Loopback
  4. Unspecified
  5. Unique Local
  6. Embedded IPv4

2.1 Global Unicast Address

全局单播地址Global Unicast Address前缀是2000::/3/3表示子网掩码,表示前面3位是固定的,跟IPv4掩码一样的。

全局单播地址全局唯一,不会重复,全局单播地址Global Unicast Address就像我们IPv4的公网IP地址

2.2 Link-Local Unicast

Link-Local Unicast 前缀是fe80::/10,用于一个局域网内,不同的局域网的Link-Local地址可以重复。

类似IPv4的私网IP,比如IPv4的192.168.0.1

2.3 Loopback

回环地址Loopback前缀是::1/128,使用回环地址的数据包不会经过网卡,回环地址用于本地测试。

跟IPv4的回环地址127.0.0.1是一样的。

2.4 Unspecified

unspecified未指定的,这个地址固定就是全0,表示没有IPv6地址。

2.5 Unique Local

看名字,有个单词local,这个地址也是用于局域网,但是不同局域网的Unique Local Address不会重复。

那么不同的局域网如何保证产生的地址不重复呢?这涉及到一个算法,这里就不介绍了,这个地址的生成就类似UUID的生成。

2.6 Embeded IPv4

这个地址就是把IPv4地址包含在IPv6地址中,把IPv6地址的高80位全部设置为0, 然后中间16位设置为1, 低32位设置为IPv4地址。如下图:

3. 多播地址multicast

还是这个图,怕看到这里忘了,再放一次:

多播地址有很多种,重要的有三种:

  1. Well-Known
  2. Transient
  3. Solicited-Node

3.1 多播地址格式介绍

如下图:

每个字段的意思图上都有解释,主要说说Scope字段,这个字段表示了多播的范围,按照字面意思可能不好理解,如下图:

3.1 Well-Known

Well-Known 多播地址前缀是ff00::/12,也就是最常见的多播地址。

注意:

​ IPv6没有广播地址,Well-Known多播地址包含了广播地址,比如上图中第一条地址,多播给多有设备,就是广播。

3.2 Transient

这个,,先不讲了

3.3 Solicited-Node

这个,,有点没看懂,简单说说。。。

Solicited-Node多播地址前缀是ff02:0:0:0:0:1:ff00::/104

书上说Solicited-Node多播地址用于主要用于NDP(Neighbor Discovery Protocol)协议,NDP协议的功能有两个:

  1. Address resolution
  2. Duplicate Address Detection (DAD)

NDP协议的Address resolution功能就类似IPv4的ARP协议,名字都一样,就是根据IP地址请求MAC地址。

DAD功能是用来检测局域网中的所有设备的单播地址都是不同的。

3.3.1 单播地址到Solicited-Node多播地址的映射

Solicited-Node多播地址前104位是固定的,还剩下的24位则是来自单播地址,这剩下24位和单播地址是相同的。

如下图,把单播地址的低24位拷贝过来,作为Solicited-Node多播地址的低24位。

如上图,这个单播地址可以是全局单播地址,也可以是Link-Local单播地址。

3.3.2 Solicited-Node多播地址到MAC地址的映射

这个映射提现了多播地址比广播地址好的地方。。。。

Solicited-Node多播地址要映射到MAC地址上,就是Mac地址的高12位不变,低32位改为Solicited-Node多播地址的低32位。如图所示:

我之前以为MAC地址是固定不变了,原来可以改变。

这里我有个疑惑,每个设备有个公网地址Global Unicast Address,也有一个私网地址Link-Local Unicast Address,那这样不是会产生两个Mac地址吗????

这样映射有什么好处?

​ 多播地址只能用于目的地址,因此这样的数据包发出去后,目标设备接收时,只看Mac地址就可以知道,是不是发给自己的,就不用拆包查看IP地址了。

4. IPv6地址查看

查看了自己电脑的IP,如下图:

可以确定的是有一个回环地址:::1/128,还有个Link-Local地址:fe80::b105:a91f:85a5:e1ef/64

参考资料

《IPv6 Fundamentals A Straightforward》

IPv6地址、单播、多播/组播介绍相关推荐

  1. 判断mac地址单播还是组播(shell脚本)

    MAC地址是以太网二层使用的一个48bit(6字节十六进制数)的地址,用来标识设备位置.MAC地址分成两部分,前24位是组织唯一标识符(OUI, Organizationally unique ide ...

  2. HCIA-RS自用笔记(9)数据转发过程、单播/多播/组播

    数据转发过程(7/13,29min) 网关(Gateway) 不同网络的主机需要通讯,首先要把数据转发给网关,网关代表一条缺省路由 查看Windows主机路由表: C:\Users\Admin> ...

  3. ipv6下单播。组播 泛播

    ipv6地址可以分成三类:单播地址.组播地址和任播地址. 单播地址又可以分为 单播本地链路地址(前缀为ff80::/10). 单播本地站点地址(前缀为FEC0::/10). 单播未指定地址(::/12 ...

  4. MAC地址 单播,组播,广播

    今天调试了一个程序,我把板子的MAC地址随便设置为MCU的全球唯一码了,怎么也调试不通,最后更换了MAC地址之后莫名其妙通了:  弄好之后,"百思不得其解", 应网上浏览了一下MA ...

  5. Java实现单播,组播,广播

    单播.组播.广播介绍:https://blog.csdn.net/ahou2468/article/details/86526509 目录 1.单播.组播.广播关键类说明 2.单播和广播的具体实现 2 ...

  6. 单播、广播、多播(组播)的概念和区别

    单播.广播.多播(组播)的概念和区别 简单理解如下: 1.一台机器和一台机器通信这是单播. 2.一台机器发出的数据包能被多台机器收到这就叫组播. 一个机器发送,多台机器接收,但是又不同于广播, 发送端 ...

  7. CCIE-IPV6单播和组播地址

    2021.10.16 每天的开心都来源于更优秀的自己和你 地址表示方法&地址分类 URL中与端口号的区分 因为在URL中地址后面可能需要跟上端口号,而端口号也是通过隔符来与地址进行区别,因此 ...

  8. Python 创建随机mac地址(单播、组播)

    创建随机mac地址 import random def randomMAC(): mac = [ random.randint(0x00, 0x7f), random.randint(0x00, 0x ...

  9. android multicast(组播)发送端和接收端源代码,android multicast 多播(组播)问题

    有谁遇到过同样问题的可以探讨下,或者已经解决问题的,能够指导下我 获取组播锁 private  InetAddress   group; WifiManager  wm=(WifiManager)ge ...

  10. 【计算机网络】网络层 : IP 组播 ( IP 数据报传输方式 | 组播 IP 地址 | 组播 MAC 地址 | IGMP 协议 | 组播路由选择协议 )

    文章目录 一.IP 数据报传输方式 二.组播 IP 地址 三.组播 MAC 地址 四.IGMP 协议 五.组播路由选择协议 一.IP 数据报传输方式 IP 数据报传输方式 : ① 单播 : 发送数据到 ...

最新文章

  1. buildroot 简要记录
  2. Vim的NERDTree快捷键
  3. Python-OpenCV 笔记9 -- 模板匹配
  4. ROS坐标系统,常见的坐标系和其含义
  5. __str__是什么函数_PHP str_shuffle()函数与示例
  6. break语句python_Python break 语句
  7. 雷军和董明珠“十亿赌局”胜负已定:小米格力营收差距依然很大
  8. 1.jenkins持续集成-jenkins安装
  9. 二维数组 : 旋转矩阵
  10. Java 匿名内部类、Java 中 == 与 equals 的区别
  11. 网页中的位图与矢量图使用
  12. 那些年啊,那些事——一个程序员的奋斗史 ——16
  13. 世界豪车 TOP 10
  14. Kaminari分页
  15. 产品经理的私房菜 - 腾讯产品模型 - 执行力篇
  16. 红米k30至尊纪念版和华为mate30pro哪个值得买
  17. Flutter 实现剑气加载
  18. 实现登录注册页面详细(Servlet+jsp+java)
  19. java 初始化块_详解Java中的实例初始化块(IIB)
  20. xargs的详细解释,记得收藏,相信我你会需要的

热门文章

  1. C语言equivalent用法,C语言相当于'setw'函数
  2. 用3Ds Max做三维场景建模
  3. vue怎么改logo_vue项目添加网页logo
  4. 单片机中断程序,如何被中断?
  5. 高级会计职称计算机考什么,会计高级职称考哪些科目
  6. 微信的那个老外产品经理,又写了一篇《中国移动应用设计趋势》
  7. 从零开始写一个武侠冒险游戏-1-状态原型
  8. 计算机基本办公软件应用技能有哪些,办公人员应掌握哪些办公软件技能
  9. MATLAB图例设置为透明
  10. axio get传参。