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

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组。

image-20210417154840638

图片来源:《IPv6 Fundamentals A Straightforward》

1.2 IPv6地址简写方式

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

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

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

image-20210417155501703

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

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

image-20210417155636668

1.2.3 两种方式结合

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

image-20210417155832702

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地址分类基本可以如下图所示:

image-20210417161712823

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地址。如下图:

image-20210417163307557

3. 多播地址multicast

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

image-20210417163442624

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

  1. Well-Known
  2. Transient
  3. Solicited-Node
3.1 多播地址格式介绍

如下图:

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

3.1 Well-Known

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

image-20210417164903410

注意:

​ 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位。

image-20210417171127850

image-20210417171217041

如上图,这个单播地址可以是全局单播地址,也可以是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,如下图:

image-20210417172219006

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

参考资料

《IPv6 Fundamentals A Straightforward》

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值