IPv6理论基础

IPV6 地址介绍

地址标识方法

格式 : XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX,128bit,8个16位,16进制
X表示十六进制的一个字符,可以是0 - 9,A -F

字母大小写不敏感,最终设备上显示均为大写

一个地址由8个字段构成,每个字段使用4个十六进制字符,每个字段中间通过“:”符号进行分隔

每个字段中前导为“0”是允许的

地址缩写方法

如果一个段全部为”0”,可以缩写为一个“0”,例如“:0000:”可以缩写为“:0:“

一个段中,分隔符右边连续的”0”可以省略,例如“:09C0:”可以缩写为“:9CO:”

如果有多个连续字段均为”0”可以缩为“::“例如:“:0000:0000:0000:”可以缩写 为“::”",但是这种缩写方法在一个地址中只能出现一次

URL中与端口号的区分

因为在URL中地址后面可能需要跟上端口号,而端口号也是通过隔符来与地址进行区别,因此在URL中使用IPv6地址时,需按照如下方式:http://[2001:DF0:1003::F]:8080/index.html

地址掩码

IPv6将一个地址分为前缀与接口标识两部分
前缀:相当于IPv4地址中的网络ID
接口标识:相当于IPv4地址中的主机ID

注意:在IPV6中不存在一个地址分类的划分,但是掩码依然存在,用来划分不同网段。掩码最常见的就两种形式:/64和/128,对于前缀64位来说已经非常够用了

掩码仍然是用连续的“1”来掩盖网络ID,但是表示方法全部使用CIDR表示法
例如:
2031:0:130F::9C0:876A:130B/64
2001:1:1::1/128

IPV6地址分类

Unicast Address(单播地址)

Aggregate Global Unicast Address

image.png

Aggregate Global Unicast Address(全局可聚合地址),相当于在IPv4中的公网可路由地址

由IANA分配,可以在公网路由的地址

地址规划: 2000::/3即最高三位是“001”,这段地址就是全球路由地址,用于全球的一个正常上网之中

地址范围 : 2000:0000:0000:0000:0000:0000:000:0000到 3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF

其中 2001::/16 被定义为 Internet Address,属于是在整个互联网上的公网IP地址

其中 2002::/16 被定义为 6to4 Tunnel Address,专门是用于IPV6穿越IPV4的,这个不是一定的

Link Local Address

image.png

Link Local Address(本地链路地址),接口启用IPv6后一定会自动生成的地址。用作本段链路上的唯一定位符,不可路由

在路由协议交互路由过程中,该地址将作为Next Hop Address,也就是当下一跳来用

地址规划: FE80::/10,即最高10位为“1111 1110 10”,最后64bits作为接口标识,因此该地址掩码被固定为/64,不可修改

该地址可以作为路由协议的更新源,因此给将来的重编址提供了更好的条件

该地址默认自动使用EUI-64自动产生接口标识,也可以手工修改

该地址可以使用ICMP做ping的测试,但是要手工填写出接口,出接口必须写全称不能简写。必须要写出接口是因为link local 地址是不会出现在路由表中的

本地链路地址可以作为设备接口的第二地址,如果全局地址没有了并不会影响路由协议的建立,因为link local也是可以作为路由协议的跟新源的

EUI-64 构建方法

EUI-64(Easy User Interface)
当我们在设备上的接口下开启IPV6功能时,他就会自动生成一个IPV6的链路地址,具体如何生成我们开始分析

  1. 提取该接口的MAC地址,如果该接口没有MAC地址则借用本地ID号最小的以太口的MAC地址,例如: 00E0.4C00.321A

  2. 将MAC地址中的“.”符换成“:”,并在MAC地址24bits后插入16bits固 定字符“FF:FE”,得到 00E0:4CFF:FE00:321A

  3. 从最高位往后数第七位取反,即原来是”0”就改为”1”,原来是”1”就改为”0”得到 024C:FF:FE00:321A 的接口标识符

  4. 取反的原因在于,MAC地址中对应bit为0表示全球唯一,为1表示本地唯一,但是在EUI-64中,该表示方法正好相反

  5. 加上前缀“FE80::”即FE80:: 024C:FF:FEO0:321A便自动形成该接口的Link Local Address

  6. 可以通过接口命令“ipv6 address FE80::xxxx link-local”进行手工指定(通常不建议这么做)。修改时注意前缀必须是FE80::/10,接口标识符任意

  7. MAC 地址前 24bits 为 OUI (Organizationally Unique Identifier 组织唯一标识符)后 24bits 称之为 NIC (Network Interface Controller,网络接口控制标识)
    MAC地址总共48位,前24位是厂商的(相当于网络位一样),后24位是可以进行更换的

Site Local Address

Site Local Address(本地站点地址),主要是用于做私网地址的,相当于在IPv4中RFC1918定义的私网地址,意味在公网不可路由。其实内网地址不管用啥地址都一样,反正最后都会被NAT转换出去

地址规划 : FEC0::/10 最高 10 位为“1111 1110 11”

地址规划中规定可以有N bits作为子网划分,由用户自定义

虽然IPv6地址空间足够大,甚至可以给每个用户一个全局可路由地址,但是考虑到某些网络的私密性,所以仍然定义了该地址段给用户自己使用,在公网不可路由

目前Site Local Address已经被收回,也就是不再提供使用了,取代的FC00::/7(Unique Local Address)

Unspecified Address

Unspecified Address(未指定地址)的地址规划:0:0:0:0:0:0:0:0,主要是用于某些没用可用地址的场景,例如初始的DHCP请求等

Loopback Address

Loopback Address(本地换回地址),类似于IPv4中本地主机的127.0.0.1用于标识自己

地址规划:0:0:0:0:0:0:0:1,可缩写为::1

::/8的地址其实都被预留出来做为环回地址

Multicast Address(组播地址)

在IPv6中组播完全取代了广播,并且没有了ARP,取而代之的是NDP协议

image.png

地址规划:FF00::/8 最高8位为“1111 1111”

Flag:
0标识这是一个永久组播地址(公网组播地址)
1表示这是一个临时组播地址(私网组播地址,相当于IPv4 239.0.0.0-239.255.255.255)

Scope:
1 表示 Interface Local
2 表示 Link Local(相当于IPv4 224.0.0.0-224.0.0.255)
3 表示 Subnet Local
4 表示 Admin Local
5 表示 Site Local(私网组播地址)
8 表示某组织或机构所用地址
E 表示公网可用组播地址

常见的公网组播地址

IPv6 Multicast AddressDescription
FF02::1All Nodes(相当于224.0.0.1)
FF02::2All Routers(相当于224.0.0.2)
FF02::5All OSPFv3 Routers(相当于224.0.0.5)
FF02::6All OSPFv3 DR Routers(相当于224.0.0.6)
FF02::9All RIP ng Routers(相当于224.0.0.9)
FF02::10All EIGRP Routers (相当于224.0.0.10)
FF02::16All PIM Routers(相当于224.0.0.13)

FF02::1:FFXX:XXXX,Solicited Node 被请求节点组播地址。XX:XXXX等于对应接口的IPv6单播地址的后24bits
假设该设备的f1/0的link local地址为FE80::C800:23FF:FF08:1C。当我们接口f1/0配置好IPV6地址为2001::2/64,进行查看端口show ipv6 int f1/0 就可以看到端口加入到的IPV6组播地址有下面这些:
FF02::1
FF02::1:FF00:2,这是遗传自己的global地址的后24位
FF02::1:FF08:1C,这是遗传自己的link local地址的后24位
此时当有数据要去往2001::2/64的地址时,数据会直接发送到与之对应的组播地址FF02::1:FF00:2,也只有这个地址才会去接收这个请求信息。

使用NDP协议之后再发送MAC地址查询只会发送到特定的组查询。只有对方配置了对应的IP地址才可以去监听这个组播地址

有一个IPv6单播地址就会有一个对应的被请求节点地址 0

被请求节点组播地址被NDP(Neighbor Discovery Protocol)。作为地址解析和 DAD (Duplicate Address Detection)冲突地址检测,检测地址是否冲突

Anycast Address(任播地址)

Anyast地址与单播地址从地址格式上无法进行区分

当一个单播地址分配给多于一个接口时,该单播地址则转化为Anycast地址

Anycast强调的是一组接口

Anycast地址只能用于数据包的目的地址

配置方法 : ipv6 address [address]/[mask] anycast

Anycast地址的常见作用:
分布式的DNS
多服务器的负载分摊
DDoS分散攻击压力

NDP 协议

NDP 协议介绍

NDP(neighbor discovery protocol)邻居发现协议,NDP是采用组播方式来寻找对端的MAC地址。发送数据无论如何都需要进行数据封装,也就必须知道对方的MAC地址

完成三层IPv6地址与二层MAC地址的映射关系( 替代IPv4 ARP)

完成 DAD (Duplicate Address Detect)地址冲突检测

IPv6 address Auto-Configuration,IPv6地址是可以实现自动配置的,通过对方的地址来自动配置自己的地址确保再同一个网段,跟DHCP没有关系

ICMPv6 Redirect这个叫做重定向功能

发现临近的,帮助转发分组的路由器

跟踪邻居可达性,侦听邻居链路层地址

NDP 五种Message类型

Neighbor Solicitation&Neighbor Advertisement

Neighbor Solicitation(ICMPv6 Type 135)简称NS,主要是查询信息。Neighbor Advertisement(ICMPv6 Type 136)简称NA,主要是通告信息

当设备一开启,第一步它就会发给自己已经配置上的IPv6地址对应的目的组播地址,目的是为了做地址冲突检测DAD,设备会去询问这个组播地址对应的MAC地址是多少,如果有设备回这个消息说明网络中有跟它冲突的IPv6地址。这个第一步发送的也就是NS查询消息
第二步,如果没有人给这个设备回消息,它就会对其他设备发送NA通告信息,其作用是让其他设备知道这个地址没人用就我自己用了

NS/NA Message用于完成三层与二层地址的映射关系,并且被用作DAD,类似于在IPv4当中的ARP协议

针对需要访问的设备节点,本地会产生一个NS消息,源IPv6地址为本地出接地址,目的地址为计算出来的针对目的地址的被请求节点的组播地址,解析地址为需要访问的地址,用于获取对应三层地址的二层地址信息:
如果数据访问使用C路由发包,源地址则为出接口的配置IPv6地址
如果数据访问使用非C路由,源地址则为出接口的Link Local地址

映射表老化时间(Age)默认为14400秒,可以通过全局命令ipv6 ndp cache expire [time]修改(表项中时间显示以分钟为单位)

针对NS消息,收到的目的设备将通过NA消息进行响应,响应中主要包含本地接口的二层地址信息,从而使得请求方可以将目的地的三层地址与二层地址形成映射关系放入缓存

当设备接口启用IPv6功能后,会立刻向当前子网产生NS消息,源地址为未指定地址(:😃,目的地址为本接口地址产生的被请求节点组播地址,解析的目标IPv6地址为本接口地址,如果除了本地以外还有其它设备对该消息进行了响应,则表示可能出现了地址冲突

映射表可以通过show ipv6 neighbor查看,可以通过clear ipv6 neighbor清除

映射表还可以手工建立ipv6 neighbor {ipv6 address} {interface} {mac}

查看IPv6的NDP邻居

show ipv6 neighbor

当我们进行查看时可能一个邻居也看不到,这个时候我们ping一下对方的IPv6地址,然后再看就会看到了。之前看到没有邻居是因为NA/NS的目的就只是做DAD地址冲突检测,没有去解析的作用。对方虽然接收到了这个信息,但是并不会记录到自己的NDP邻居表里面,

当我们去给对方发送数据的时候,此时会再发一个NS给对方,这个时候的目的组播地址发生了变化,这个组播地址目的地地址对应的组播地址。所以会重新发送一个组播的NDP的NS查询

对方收到后会发给我们一个NA的回应消息,这个回应的信息就是要去往我这个地址的接口对应的MAC地址

Router Solicitation&Router Advertisement

Router Solicitation(ICMPv6 Type 133)简称RS,也是查询消息。Router Advertisement(ICMPv6 Type 134)简称RA,也是应答消息,但是做的事情不一样

RS/RA最主要的就是去服务IPv6地址自动配置。开启IPv6地址的自动配置功能命令

en
conf ter
int f1/0
ipv6 enable
ipv6 address autoconfig
end

一旦我们开启接口IPv6地址的自动配置功能,设备就从这个接口对外发送RS查询消息,并且先收到谁的RA就用谁的

假设对端的IPv6地址为2001::1/64,此时它会保证IPv6地址的前64位是一样也就是网络为一样,后64位直接去复制link local地址的后64位

Rs Message只能通过Auto Configuration产生,目的在于获取IPv6地址的前缀。RS Message以本地接口 Link Local地址为源,保留组播地址FF02::2为目的地址,将该消息发送给本子网内所有路由器

RA Message在路由器启用IPv6 unicast-routing以后周期性产生(这个命令就和IPv4中的ip routing一样),并且在收到RA以后也会进行回应并且只能在MA网络上产生,可以通过接口命令:Ipv6 nd ra suppress (或ipv6 nd suppress-ra 根据IOS不同,命令格式会有区别)来抑制

RA Message以本地的Link Local地址为源,保留组播地址FFO2::1为目的,保证本子网内所有设备均可收到.消息中包含了本地的二层地址信息.还包括了本地接口的IPv6地址前缀

收到该消息的设备会自动将源地址与对应的二层地址形成映射关系存放进缓存,成为自己的IPv6 Neighbor。其次,会将该前缀作为自己的接口 IPv6地址前缀,再利用EUI-64产生自己接口的接口 D,从而完成地址自动配置该配置方法称为无状态地址自动配置

若接口上存在多个IPv6地址,则所有地址前缀都会包含在同一个RA内。也就是对方连接我接口的地址有两个地址的话,我自己本地也会自动获取到两个地址

如果前缀掩码不是64,则对端无法自动产生IPv6地址也就是说autoconfig功能必须位64位的,但是可以在路由表产生一条NDp路由。如果我们关闭IPv6路由功能 no ipv6 unicast-routing 就会发现配置了autoconfig功能的设备会产生一跳ND的默认路由下一跳为对方的link local地址(关闭了IPv6的路由功能它会以为你是一台主机也就是网络末端,末端产生数据永远都要去下一跳)

EUI-64产生的接口ID本质上是复制的Link Local地址的后64bits,如果 Link Local地址被修改,则自动产生的接口ID同样会被修改

手工通过EUI-64产生接口 ID同上要求,掩码必须为64bits,并且接口ID本质是Link Local地址的后64bits

通过Auto Configuration产生地址的设备,如果没有开启ipv6 unicast-routing。则将收到的RA消息的源地址作为本地网关,并自动产生一条ND路由 ::/0 指向RA的源地址。如果开启了ipv6 unicast-routing,则自动产生一条ND路由 ::/0 指向RA的源地址,但是无网关存在
如果同一子网收到了多个RA消息,那么第一个收到的RA消息的源地址会作为本地的网关或者路由下一跳
可以通过接口命令: ipv6 nd router-preference [high I medium I low]来设置路由器作为网关的优先级别,默认为medium

ICMPv6 Redirect Message

ICMPv6 Redirect Message(ICMPv6 Type 137)该消息用于通知主机节点发送数据包使用替代路径,只能由路由器产生。该消息会将远端主机产生的实际数据封装以后返回给主机并通知替代路径的下一 跳节点地址。主机在收到该消息后,重新查询接口邻居表,重新发送该数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/421121.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习threejs,创建立方体,并执行旋转动画

文章目录 一、前言二、代码示例三、总结 一、前言 本文基于threejs&#xff0c;实现立方体的创建&#xff0c;并加入立方体旋转动画 二、代码示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>l…

【动态规划】【完全背包】力扣322. 零钱兑换

给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种硬币的数量是无限的。 示…

【ACM出版,录用检索快】2024年第四届工商管理与数据科学国际学术会议 (BADS 2024,10月25-27)

2024年第四届工商管理与数据科学国际学术会议(BADS 2024)将于2024年10月25-27日在中国重庆召开&#xff0c;大会由喀什大学支持。 在当今全球化与数字化迅速发展的时代&#xff0c;工商管理与数据科学作为推动经济增长和技术进步的重要力量&#xff0c;正以前所未有的速度交叉融…

使用肘部法则确定K-Means中的k值

一 肘部法则 在K-means算法中&#xff0c;对于确定K&#xff08;簇的数目&#xff09;&#xff0c;我们经常使用肘部法则。 肘部法则是一种用于确定在k均值聚类算法中使用的质心数&#xff08;k&#xff09;的技术。 在这种方法中&#xff0c;为了确定k值&#xff0c;我们连续…

二十三种模式之原型模式(类比制作陶器更好理解一些)

1. 设计模式的分类 创建型模式(五种)&#xff1a;工厂方法模式、单例模式、抽象工厂模式、原型模式、建造者模式。 结构型模式(七种)&#xff1a;适配器模式、代理模式、装饰器模式、桥接模式、外观模式、享元模式、组合模式。 行为型模式(十一种)&#xff1a;状态模式、模板方…

刚开始学精益六西格玛管理方法?这份指南建议收藏

精益六西格玛管理方法&#xff0c;作为两大管理哲学的完美结合&#xff0c;正逐渐成为众多企业转型升级的利器。对于刚开始接触这一领域的你来说&#xff0c;掌握精益六西格玛管理的精髓并有效应用于实践中&#xff0c;无疑是一项既具挑战性又极具价值的任务。本文&#xff0c;…

应用连接错误,初始化mysql数据库恢复---惜分飞

有人在部署一个新网站的时候,写错了配置信息,直接导致原有数据库被清掉,并创建了新库和写入了数据(其实本质就是drop table恢复) 登录操作系统查看,发现数据库文件在根分区,创建了新库,写入了数据之外,还有几个G的binlog.全部恢复不太可能,最后客户决定需要恢复的2个核心表数…

.NET 一款在线解密Web.config的脚本

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

官网下载easyx压缩包,如何在devc++配置easyx

视频教程 官网下载easyx压缩包&#xff0c;如何在devc配置easyx EasyX Graphics Library for C 安装指南 1. 访问官网 官网 2. 下载 EasyX 在官网上找到下载区域&#xff0c;点击下载按钮以获取 EasyX 安装包。 3. 访问更多下载选项 点击页面上的“more”链接&#xff0…

Django日志

【图书介绍】《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) Django 5框…

uniapp 微信小程序自定义tabbar层级低于canvas解决方案

示例代码&#xff1a; <template><cover-view class"tab"><cover-view class"navView" tap"switc(/pages/index/index)"><cover-image :src"tabname index?/static/tabbar/overide-sel.png:/static/tabbar/overide…

Vscode python无法转到函数定义

今天上午换了电脑&#xff0c;使用Vscode发现找不到对应的函数定义了。 使用了网上的全部教程。一点用没有。重启电脑&#xff0c;重启Vscode也没有作用。最后通过重装vscode&#xff0c;解决问题。&#xff08;也不知道Vscode什么毛病&#xff09; 重点语句&#xff1a; 去官网…

大语言模型(LLM)与多模态大模型(MLLM)结合行人重识别(Reid)领域最新文献方法调研

Data Augmentation for Text-based Person Retrieval Using Large Language Models 这篇论文主要研究文本基础的人员检索&#xff08;Text-based Person Retrieval, TPR&#xff09;任务中的数据扩充问题&#xff0c;并提出了一种基于大语言模型&#xff08;Large Language Mo…

framebuffer帧缓存

1. framebuffer Framebuffer&#xff08;帧缓冲区&#xff09;是用于存储图像数据的一块内存区域。我们可以将我们想要显示的图像数据写到framebuffer中&#xff0c;驱动程序每隔一段时间会自动的去读取Framebuffer中的图像数据&#xff0c;并根据读取到的图像数据在屏幕上显示…

最全整理:R/Rstudio/R包的更新

R 是开源的数据分析和统计计算语言&#xff0c;功能强大且应用广泛&#xff0c;R 的版本更新频率较高。最近处理数据时突然有一个 R 包无法安装&#xff0c;细探究发现这个 R 包需要新版本 R 的才可以安装。本文主要分享&#xff1a;更新 R、更新 Rstudio 和一键升级 R 包。 更…

web项目如何部署到服务器上呢?——麻烦的方法

只需关注web项目如何部署到服务器上&#xff0c;因为服务器运行时就可以访问web项目了。 一、麻烦的方法 1、首先启动服务器 &#xff08;1&#xff09;找到bin文件夹 &#xff08;2&#xff09;双击运行startup.bat文件 &#xff08;3&#xff09;运行之后的界面如下&#…

上海亚商投顾:沪指探底回升 华为产业链午后爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日探底回升&#xff0c;深成指、创业板指盘中跌逾1%&#xff0c;午后集体拉升翻红。华为产业链午后走强…

Mysql系列-索引简介

索引是排好序的数据结构 1 索引数据结构 hash索引、二叉树、平衡二叉树、B-Tree、BTree 数据结构在线示例&#xff1a;点击跳转 2 索引类型 2.1 聚簇索引 又叫“聚集索引” &#xff0c;索引和数据存储在一起 2.2 非聚簇索引 又叫“非聚集索引” &#xff0c;索引和数据分开…

Linux系统玩ppsspp

安装ppsspp 在ppsspp的官网&#xff0c;有提供Linux版本的下载链接&#xff0c;仔细一看是flathub的链接&#xff0c;也就是说ppsspp官方推荐采用flatpak安装。 确实有一些发行版提供了自己的ppsspp包&#xff0c;比如说openSUSE和Fedora&#xff0c;不过我自己试用以后发现系…

我的创作纪念日——第0x100天

官方提示今天是开始创作的第256天&#xff0c;最初没反应过来第256天算是个什么纪念日&#xff0c;好像并没什么特殊的啊。仔细一想&#xff0c;难道是第0x100天的意思吗&#xff1f;哈哈&#xff0c;专属于程序猿的浪漫。 既然这样&#xff0c;还是写一篇文章&#xff0c;交个…