【HCIE】14.IPV6基础

为什么要使用IPV6地址?

IPV4地址不够用(NAT,私网地址,变长子网划分)

IPV4报文是可变长的,所以还要先去查看长度字段才能分出哪些是头部,这样就造成了速度较慢,无法用在现在对网络速度要求非常快的物联网时代

IPV4的校验字段可以不用(以太有校验,TCP也有校验,这样还需要对IPV4的报文进行校验)

IPV4的分片功能(大多数报文不会分片,但是padding字段还是要读取的)

IPV6地址

IPv6地址格式

长度为128比特,共划分8段,每段有16个2进制数。每段由4个十六进制数表示,并用冒号隔开。

IPv6地址包括网络前缀和接口标识两部分。

IPv6地址压缩格式

每一组中的前导0(仅前3个0)都可以省略

地址中包含的连续全为0的组,可以用双冒号“::”来代替

例:

2001:0001:00000000:0000:0010:0000:0001

2001:1:0:0:0:10:0:1

2001:1::10:0:1

IPv6报文格式

头部是固定长度,长度40个字节,一共包含8个字段

version,版本

Traffic Class,类似于QOS

Flow Label,各个厂家可以做独立的开发,并没有普及使用(原版含义:可以直接把五元组算好之后写到这个字段里面,加快了读取速度)

paylaoad length,载荷长度

Next Header,相当于IPV4里面的protocol字段,标识把数据交给哪个上层协议

Hop Limit,IPV4的TTL

IPv4与IPv6格式对比

IPv6扩展报头

ipv6模块把一些不常用的功能没有放到固定的报文头部里面,放到了分片里面(可以根据固定头部里面的Next header字段查看是否有扩展头部或者指向哪个扩展头部)

扩展报头是载荷,而且是可以变长

扩展报头种类

逐条选项报头,主要用于巨型帧的表示。每台设备都要读取这个内容:例如,payload length这个字段是用来表示长度的,如果最大只能写65535,但是这个IPV6后面带了10万多个字节,这样payload length字段就无法表示载荷的长度,那么就可以把payload length字段写0,然后next header字段指向扩展报头,这样就可以利用扩展报头来表示巨型载荷的长度。

目的选项报头,例如A向B发送一个数据帧,中间设备是不可以查看目的选项报头的内容,只有B与A才可以查看目的选项报头。

路由报头,例如接收到IPV6报文,之后要进行查询路由表发现这个数据包要转发给X,但是IPV6报文后面跟着有路由报头(路由报头要求下一跳交给C),那么就要按照路由报头的要求进行转发。SRV6的雏形

分段报头,用于标识是怎么进行分片的,分片ID是怎么标识的,有分片就带这个报头,没有分片就不携带。

认证报头,提供认证等。

封装安全净载报头,类似于认证报头。

IPV6地址类型

组播地址

地址范围FF00:: /8,用来标识一组接口,发往组播地址的数据将被转发给侦听改地址的多个设备

永久分配或众所周知:例如224.0.0.5或者224.0.0.6

预留组播地址

组播地址的MAC地址映射

组播的地址都是映射出来的

3333开头,后面的32位把IPV6的最后32位拿出来构成48位的地址使用

*被请求节点组播地址

FF02::1:FF00:0/104

取代了广播功能,不知道对方IP地址的时候,就封装这个MAC地址为目的地址。

设备拥有一个单播地址的时候(2001::1),接口就会自动加入到一个被请求节点组播组里面(FF02::1:FF[单播地址的后面24位])

如题,配了一个地址会加到几个组里面?

是一台路由器就会加入到FF02::2,支持组播就要加入FF02::1

答:加入了四个组(自己配的地址和链路本地地址都会加入被请求节点组播地址;还有FF02::2,FF02::1)

IPV6在同一个接口下面可以配置多个IP地址

被请求节点组播组前104位是固定的,有可能一个接口下两个地址会在同一个被请求组播组里面。

单播地址

可聚合全球单播地址

定义用于IPV6 internet。他们是全局唯一和全局可路由

类似IPV4公网地址

由前缀,子网ID和接口标识组成

链路本地地址

在一个节点启动IPV6协议栈时,节点的每个接口会自动配置一个链路本地地址。该地址专门用来和相同连路上的其他主机通信。

地址前缀FE80::/10,将接口ID添加在后面作为地址的低64位。

每一个IPV6接口都必须具备一个链路本地地址,这个前缀是不可以被路由的,只能在广播域中使用这个地址。

1.配置一个全球单播地址
ipv6
int g0/0/0
	ipv6 enable
	ipv6 address 2001::1 64

2.手动配置一个本地链路地址
ipv6
int g0/0/0
	ipv6 enable
	ipv6 address fe80::1 link-local

3.自动产生
ipv6
int g0/0/0
ipv6 enable
ipv6 address auto link-local

接口ID有三种产生方式(软件自动,手动指定,EUI-64)

EUI-64

  1. 把网卡的MAC地址提出来
  2. 把MAC地址还原成48位二进制
  3. 把48位二进制分解,前面24位+后面24位,在中间插入FFFE(16个二进制数)
  4. 将MAC地址的第七位取反
  5. 得到一个完整的64位2进制数,再还原成16进制

例:

  1. 00e0-fcf7-7b51
  2. 00e0 fc fffe f7 7b51
  3. 02e0 fc fffe f7 7b51
  4. 02e0:fcff:fef7:7b51

唯一本地地址

避免产生像IPV4的死亡地址泄露到公网而造成的问题,RFC4193定义了唯一本地地址

IPV4兼容地址

IPV4与IPV6之间进行互访使用的

任播地址

一种解决方案,就是全球单播地址,在最近的地方会走不同的服务器

ICMP V6

ICMPv6是IPV6的基础协议之一,用于向源节点传递报文转发的信息或者错误。协议类型号为58。

邻居发现(过去的ARP)、无状态地址配置(自动产生地址)、重复地址检测(免费ARP)、PMTU发现

邻居发现协议 NDP

NS是组播,NA是单播

地址解析,类似于ARP的功能

邻居请求

相当于过去的ARP,现在发的是ICMP里面的子集NDP里面的一个报文NS

邻居通告

过去单播要回ARP,现在回的消息不叫ARP叫NA

R位:是不是一个路由器发出来的

S位:是不是有人向我发了一个NS回了一个NA

O位:相当于刷新MAC

  1. 刚配上IPV6地址会向外发送两个ICMP V6消息,相当于免费ARP探测

  2. ping ipv6 2001::2


    会产生MAC地址表
  3. 后面的ping现在就可以通了,现在没有arp表,只有dis ipv6 neighbors

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ICT大龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值