目录
前置学习内容
IPv6解决的一些IPv4的缺陷
无限的地址
层次化的地址结构
即插即用
简化报文头部
IPv4和IPv6报头比较
端到端的网络罗完整性
安全性增强
挣钱QoS特性
IPv6地址介绍
格式
首选格式
压缩格式
内嵌IPv4地址格式的IPv6地址格式
IPv6的网络前缀和接口标识
接口标识生成方法
手工配置
EUI-64自动生成
例子
系统设置随机IP
IPv6地址分类
任播地址
单播地址
GUA——全球单播地址
ULA——唯一本地地址
LLA——本地链路地址
作用
组播地址
被请求节点组播
特殊地址
ICMPV6
PMTUD
编辑
解决问题
接口正式发送IPv6报文前,将经历的过程
地址配置
GUA地址的获取方法
手工配置
无状态自动配置(SLAAC --- NDP协议)
路由器请求报文(RS)
路由器通告报文(RA)
有状态自动配置
DAD(冲突检测)和地址解析
邻居请求报文(NS)
邻居通告报文(NA)
请求报文ARP和NDP比较区别
应答报文
IPv6配置
静态配置
IPv4到IPv6的一个过度技术
GRE隧道来实现IPV6网络的互通
IPv6网络不多情况
IPv6网络过多情况
当IPV6网络过多时,GRE面临的问题
6TO4隧道技术
例子
配置
双栈
前置学习内容
HCIA学习--TCP协议的一些简介,UDP协议、IP协议报头详解及TCP三次握手、四次挥手_两台主机中通信进程的端口号不能相同_板栗妖怪的博客-CSDN博客
IPv6和IPv4的工作过程其实差不多,只是IPv4的一个升级版本,就是为了解决IPv4地址不够的问题。
IPv6解决的一些IPv4的缺陷
无限的地址
ipv6由128位二进制构成,地址非常多
层次化的地址结构
IPv6在分配时更加合理,更便于进行汇总等操作
为了更好的汇总转发,IPv4在我国分配的就不是很好,然后汇总时不好汇总,转发效率高,这样网络就没有那么好。所以说我国现在很提倡IPv6。
即插即用
IPv4在进行地址分配时还需要一个DHCP服务器,但是IPv6只需要一个网关且网关存在IPv6地址就可以分配地址了,这个·IPv6这个不需要DHCP服务器就可以分配地址的技术叫做,SLAAC(无状态地址自动配置技术),这个技术相较于DHCP服务更加方便快捷
简化报文头部
简化报文头部不是报头长度小了,指的是里面的参数内容小了
IPv4和IPv6报头比较
(下图中左边是拓展头部,右边是IPv4和IPv6的报头比较)
首先来对比一下IPv4的ToS字段这个在IPv6中的字段是Traffic Class作用就是服务类型可以去将报文根据不同的服务类型分出不同的数据流,用来做策略
IPv6的Payload Length 字段是数据长度没有头部长度,那为啥IPv6没有首部长度(因为IPv6把选项字段删除了,这意味着IPv6头部长度不可变了,所以不需要头部长度了),这个改变是非常重要的一个改变,大大提升了转发速度,将IPv6头部长度改成定长查询时只查询这个长度的就可以,不像IPv4一样还得区分报头长度大大减少了查询时间。
IPv6的Next Header字段这个是在IPv4的Protocol字段,用于标识上层协议
IPv6的Hop Limit字段就是IPv4的TTL字段
IPv6的字段Flow Label这个字段就是用来标记不同流量,这个字段可以和Traffic Class字段一起使用,这样区分流量的字段就长了,这样流量可以区分的更仔细一些,IPv6在策略的控制上比IPv4上更强,但是该参数暂时保留并没有投入使用。
IPv6的校验和去掉了,这个去掉的原因是,在报头封装到三层以前其他的协议也会校验,若在三层报头再添加一个校验和这个校验的次数太多来了,所以可以有这个校验和但是没有必要。
IPv6中没有IPv4中第二行分片的字段,也没有可选字段,这样IPv6的设计是有问题的,去掉的那些字段可能会导致IPv6的功能有些不完整,上面说的去掉的字段只再IPv6的基本字段中删除,IPv6还设置了一些拓展头部,若是有需要就在基本报头后面添加相应的拓展头部,然后这个拓展头部是用Next Header来标识,在IPv4中是不管你需不需要这个字段他都会添加到报头中
端到端的网络罗完整性
你如果想要通过一台电脑去攻击互联网中另外一台电脑,它出去的时候需要经过地址转换最后是公网地址出去,然后如果被攻击的电脑想要找到攻击的这台电脑,就需要通过公网的IP去找到私网的IP,若边界路由器没有记录私网出去的行为,没有监管机制,这样就无法追踪(但是现在一般都有实名认证,一般都会找到),然后IPv6由于地址数量很多可以做到每台设备都有对应的IP地址,所以可以实现端到端的网络完整性。
安全性增强
IPv6为TCP/IP协议栈设计了一套安全保障传输体系(IPSEC:因特网协议安全协议),IPv4也可以使用(IPv4开始没有这个IPSEC是为了IPv6设计的)
挣钱QoS特性
头部新增了一个流标签字段Flow Label,更方便做QoS,但是该字段目前保留
IPv6地址介绍
(注:在IPV6中,接口支持多宿主,即一个接口可以配置多个不同网段的IPV6地址(就类似一个人有多个手机号,别人给那个手机号打电话都可以找到那个人),在IPv4中一些厂商的设备也是可以在一个接口配置多个IP地址,在华为设备上是不允许一个接口上配置同一个网段的多个IPv6地址)
注:上面这个特性与任播有关
格式
128位二进制
冒分十六进制(用冒号每四位分为一组)
首选格式
2001:0123:0000:4560:0000:0000:0000:001A(首选格式,不区分大小写)
压缩格式
由于首选格式还是有点长继续来简化一下
规则
每一段前导0可以省略,如果这一-段全是0, 则至少保留一个0,拖尾的0不能省略
来以上面的例子实现一下
首先前导0可以省略
那就成了2001:123:0000:4560:0000:0000:0000:1A
然后全零保留1个零
2001:123:0:4560:0:0:0:1A
规则
一个或多个连续的段位全0是可以用“::”标识,但是一个IPv6地址中只能出现一处“::”以
以上面化简过的来举个例子
2001:123:0:4560::1A
(经过规则简写过后的IP地址被称位压缩地址)
内嵌IPv4地址格式的IPv6地址格式
前96位地址是IPv6地址,后32位是IPv4地址
例子
::192.168.1.1
IPv6的网络前缀和接口标识
IPV6中也存在网络位和主机位。只不过,在IPV6中将网络位称为网络前缀,将主机位称为接口标识。
在IPV6地址中, 也需要用子网掩码来标识网络前缀的长度,但是,只有简写格式
例子
2001::1 /64
接口标识生成方法
手工配置
自己手工填写一个不会冲突的地址即可
EUI-64自动生成
首先IPv6地址默认64位,接口标识就剩64位
然后要利用MAC地址来标识IP地址,但是MAC只有48位2进制不足64位二进制,这是就要在48位的MAC地址中间(24位的位置),增加FFFE,添加16位,形成一个64位的二进制,在这个64位的二进制中,找到第7位取反。
例子
首先网络前缀2001::,MAC地址是00e0:fcFF:FEf6:1fc0
然后要借助MAC地址来搞首先在MAC地址中间添加FFFE,添加后中间变红的就是新添加的 00e0:fcFF:FEFF:FEf6:1fc0
然后在这个64位二进制中找到第7位取反,下面就是部分展开的二进制,找到第7位取反
0000 0000 e0:fcFF:FEFF:FEf6:1fc0
0000 0010 e0:fcFF:FEFF:FEf6:1fc0
最后的IPv6地址就是2001::02e0:fcFF:FEFF:FEf6:1fc0
系统设置随机IP
不同的系统中不同方式设置IP
IPv6地址分类
IPV6地址主要分为了三类:单播地址,组播地址,任播地址
任播地址
标识的是一组网络接口,发送一个目标IPV6地址为任播地址的数据包,其效果是发送到该组所有成员接口中距离本地最近的一 个接口。
单播地址
GUA——全球单播地址
单播地址相当于IPV4中的公网IP地址,可以在全球范围内使用的单播地址。
目前使用的GUA地址范围为:
2000:: /3 ---这个地址段分配GUA地址
下面是展开后的范围(这个范围就已经比IPv4大了)
2000:0000:0000:0000:0000:0000:0000:0000--- 3FFF:FFFF:FFF:FFFF:FFFF:FFFF:FFFF:FFFF
目前商用的IPV6地址段: 2001:: /16
2002:: /16 ----用于6to4隧道技术
ULA——唯一本地地址
相当于IPV4中的私网地址,但是,因为IPV6中不用NAT技术,所以,这一部分私网地址只是用于私网内实验使用,不允许出现在IPV6公网路由中。
范围
FC00::/7
目前仅使用了FD00::/8
FC00::/8目前保留,后面拓展使用
LLA——本地链路地址
IPv4中也存在本地链路地址——169.254.0.0/16
在IPV6中,因为接口是支持多宿主的,所以,每一个接口,只要激活了IPV6,就会给自己配-一个LLA地址。
这个地址和IPv4一样也有固定格式FE80::/10,但是本地链路地址有个规定从第10位开始到64位固定是0,所以可以看作FE80::/64
接口标识将按照EUI-64的方法自动生成
作用
IPv6地址在同一接口可能配置了好多地址,所以动态路由协议,选择下一跳IP是,出于稳定性考虑,会优先选择LLA地址作为下一跳地址
组播地址
其目的是为了标识某个组播组,发送一个 目标IP地址为组播地址的数据包,则该报文将被发送至整个组播组中的所有成员。
IPV4中的本地链路组播:
RIPV2---224.0.0.9
OSPF---224.0.0.5,224.0.0.6
224.0.0.1---针对的是所有节点,配置了IP的节点
224.0.0.2---针对所有路由器
IPv6组播地址与IPv4的组播地址对应关系
224.0.0.1 --- FF02::1
224.0.0.2 --- FF02::2
224.0.0.9 --- FF02::9
224.0.0.5 --- FF02::5
224.0.0.6 --- FF02::6
组播地址会有一个对应的IPv6组播MAC地址,这个地址前16位是固定的(33:33)然后的剩下的32位就是对应的IPv6组播地址的后32位
224.0.0.1 --- FF02::1---33:33:00:00:00:01
224.0.0.2 --- FF02::2---33:33:00:00:00:02
224.0.0.9 --- FF02::9---33:33:00:00:00:09
224.0.0.5 --- FF02::5---33:33:00:00:00:05
224.0.0.6 --- FF02::6---33:33:00:00:00:06
被请求节点组播
当一个节点,貝备单播地址之后,将自动生成一个被请求节点组播地址。生成后,被请求节点就会加入到对应组播组中。实际工程中很难将不同的两个IP分到同一个对应组播组中(IPv6很长,然后后实际工程中一般是网络前缀用到120位然后只剩8位,这种情况想IPv6的后24位地址相同是很难的)
FF02::1:FF(前104位固定)
后24位为单播地址的后24位
例子
单播地址:2001:1
被请求 节点组播地址:FF02::1:FF00:1
特殊地址
1、::,128位全0地址,等同于IPv4中的0.0.0.0(可以代表没有地址,也可以代表所有地址写缺省的时候)
2、::1,前127位全0,相当于IPv4中的环回地址127.0.0.1
ICMPV6
互联网控制报文协议,这个协议在IPv6中很重要
IPv6没有ARP协议,取而代之的是NDP协议(邻居发现协议),NDP协议集成在ICMPV6协议中,相当于ICMV6协议的一个子协议,上面说那个即插即用是有一个SLAAC,这个基于NDP这个协议来实现,ICMPV6协议还具有path-MTU发现机制(PMTUD),因为ICMPV6集成很多功能,所以,不同功能的数据报会通过ICMPV6数据报中的type字段进行区分。
PMTUD
这个东西可以用来解决IPv4中遗留的一个问题,下面来搭建一个场景来描述这个问题
首先现在有一个信息想要经过R1然后去往4.0网段然后R1和R2之商议的MTU值是1500(一段链路中的两个接口MTU值相同数据才可以转发)然后R2和R3之间不同R3和R4之间又是另外一个,这样就会在去往下一个链路的时候会分片,这个样就会浪费了很多资源,降低了效率,这个问题在IPv4中一直没有解决,然后IPv6中出现了PMTUD这个问题的得到了解决
解决问题
当IPv6得路由条目搭建好了,就以上面得图为例子,就假设是4.0网段然后写入了路由表中,路由表中生成了一条到达4.0网段得信息,生成这个信息后,R1会自动发送一个检测包,这个检测包是ICMPV6的一个功能,然后这个包检测到来了R1于R2相连的接口的MTU是1500,然后到了R2,这个数据包发现R2与R3的相连的接口MTU是1400,这个时候R2并不会帮你转发这个数据包,反而R2会回一个ICMPV6的数据包给R1这个数据包里就回携带一个MTU值是1400,这个意思就是告诉R1你要想过去就把MTU值改成1400否则我要分片,然后R1再发探测包,然后遇到R3,然后R3回ICMPV6数据包,再改发送MTU值,直至最终到达4.0网段
总结:就是通过ICMPV6这个数据包的一些功能找到去往某一网段的一个最小MTU值
接口正式发送IPv6报文前,将经历的过程
地址配置
GUA地址的获取方法
手工配置
无状态自动配置(SLAAC --- NDP协议)
无状态自动配置---无需DHCP服务器,只要有网关,便可以让接入IPV6网络中的设备获得IPV6地
址,即插即用,无状态意思就是网关啥都不管,只下发一个网段,不管你配了一个啥地址,配了IP的主机到底在不在线,网关全不管。这个SLAAC需要利用ICMPV6中的两种报文
路由器请求报文(RS)
主机主动发送RS请求
路由器通告报文(RA)
网关回复RA报文,报文中包含网关的网络前缀,后面的接口标识需要设备自动生成。type类型135
还存在另一种形式,网关设备会周期性的主动发送RA报文,携带自己的网络前缀。(华为设备默认关闭自动发送功能。)
因为无状态地址配置无法下发DNS等其他参数信息,所以,一般多应用于物联网等终端较多,且不需要除地址外其他参数的场景。(比如说那些只能家具之类的东西)
有状态自动配置
就是用DHCP服务区进行自动配置
DAD(冲突检测)和地址解析
DAD和地址解析就是IPV4中ARP协议完成的任务,在IPV6中都由NDP协议来完成。
在NDP完成地址解析时需要使用两种报文
邻居请求报文(NS)
相当于ARP请求报文, type = 135
邻居通告报文(NA)
相当于ARP应答报文, type =136
请求报文ARP和NDP比较区别
在ARP中--- SIP:自己IP DIP: 请求的IP
在NDP中--- SIP:自己的IP DIP: 请求IP所对应的被请求节点组播地址。
在ARP中--- SM:自己MAC DM:全F
在NDP中--- SM:自己MAC DM: 被请求组播地址对应的组播MAC地址
总结:对于NDP来说,由于IPv6中组播组的地址很难在一个组播组中,这个样子就和单播有点像了
应答报文
在ARP和NDP均使用单播回复
IPv6配置
以下图作为例子来进行配置
R1和R2之间配置12::/64网段 R2和R3之间配置23::/64网段
R1上环回1::1 /64 R2上环回2::2/64 R3上环回3::3/64
静态配置
和IPv4相差不大,同理也可以汇总
[r1]ipv6 --- 让这台设备可以转发IPV6报文[r1-GigabitEthernet0/0/0]ipv6 enable --- 让接口允许配置IPV6地址[r1-GigabitEthernet0/0/0]ipv6 address 12::1 64 ---- 配置IPV6地址[r1]ipv6 route-static 2:: 64 12::2 ---- 静态路由[r1]ping ipv6 3::3[r1]ipv6 route-static :: 0 12::2 --- 缺省路由
RIPNG配置
1,启动进程[r1]ripng 1[r1-ripng-1]2,宣告[r1-GigabitEthernet0/0/0]ripng 1 enable
1,启动进程[r1]ospfv3 1[r1-ospfv3-1]router-id 1.1.1.1 这里rid用啥都可以只要可以区分开来就行2,宣告[r1-GigabitEthernet0/0/0]ospfv3 1 area 0 将接口宣告到不同的区域中
这个和IPv4相差不大[r1]bgp 1[r1-bgp]router-id 1.1.1.1[r1-bgp]peer 2::2 as 1[r1-bgp]peer 2::2 connect-interface l0 红色的这部分只是在BGPv4中建立了还需要再MP-BGP中建立,就是下面的操作,然后剩下的和BGP里面配置的和邻居相关的都在 [r1-bgp-af-ipv6] 这个里面配置[r1-bgp]ipv6-family[r1-bgp-af-ipv6]peer 2::2 enable[r1-bgp-af-ipv6]network 1:: 64[r1-bgp-af-ipv6]
IPv4到IPv6的一个过度技术
现如今整个大的网络还是IPv4网络,要想全面换成IPv6的网络还需要一些时间,然后现在已经有一些零星的IPv6网络,这些IPv6网络之间的通讯,就可以直接搞一个GRE隧道
GRE隧道来实现IPV6网络的互通
IPv6网络不多情况
IPv6网络过多情况
当IPV6网络过多时,GRE面临的问题
6TO4隧道技术
例子
12.0.0.1先转换位2进制00001100 00000000 00000000 00000001 ---在转化位16进制0C00:0001然后加上前缀2002:0C00:1:: /48 ---- 这一段的IPV6地址就是IPV4兼容地址, 这一段IPv6地址都可配置使用
配置
[r1-Tunnel0/0/1]ipv6 address 2002:0c00:1:1::1 64[r1-Tunnel0/0/1]tunnel-protocol ipv6-ipv4 6to4[r1-Tunnel0/0/1]source 12.0.0.1
双栈
就是将服务器或者设备多配置一个IPv6的地址,然后运营商提供两种链路选择,一个走IPv6的线路,一个走IPv4的线路,然后我们呢会逐渐倾向于从IPv6访问,然后IPv4会逐渐关闭,就是逐渐的蚕食。