• 【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. 1.配置一个全球单播地址
    2. ipv6
    3. int g0/0/0
    4. ipv6 enable
    5. ipv6 address 2001::1 64
    6. 2.手动配置一个本地链路地址
    7. ipv6
    8. int g0/0/0
    9. ipv6 enable
    10. ipv6 address fe80::1 link-local
    11. 3.自动产生
    12. ipv6
    13. int g0/0/0
    14. ipv6 enable
    15. 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

  • 相关阅读:
    k8s--基础--28.5--ceph--k8s对接ceph rbd
    spring boot整合redis—邮箱验证码
    掷骰子等于目标和的方法数
    【USRP】NI PCIe-8371
    力扣刷题训练(二)
    从Matlab实例学习粒子群算法
    2022.7.28面试总结
    【附源码】Python计算机毕业设计社区住户信息管理系统
    Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
    [框架设计之道(二)]设备、任务设置及业务流程
  • 原文地址:https://blog.csdn.net/weixin_45988710/article/details/134077384