学习历程NO.8

IPv6基本概念

IPv4是目前部署最广泛的因特网协议,但是长远角度来看。IPv6已是必然,IPv6的地址数量更多!!!

(1)层次化的地址结构

地址分配更加规范,利于路由聚合,路由快速查询

(2)即插即用

支持无状态地址自动配置(SLAAC),终端接入更简单。

(3)简化的报文头部

简化报头,提高效率。通过扩展包头支持新应用,利于路由器等网络设备的转发处理,降低投资成本

(4)安全特性

IPsec,真实源地址认证等保证端到端安全;避免NAT破坏端到端通信的完整性

(5)移动性

对移动网络实时通信有较大改进,整个移动网络性能有比较大的提升

(6)增强的Qos特性

额外定义了流标签字段,可为应用程序或者终端所用,针对特殊的服务和数据流,分配特定的资源

IPv4演变成v6主要有以下三种技术

双栈技术:在一台设备上同时启用v4和v6协议栈的技术

隧道技术:将一种协议的数据封装在另一种协议中

转换技术:将v6的地址和v4的地址进行转换

IPv6地址长128bit,用冒号分成8段,每段16bit,用16进制表示

每段的前导0可以省略,比如0001,就可以写成1,全0可以写个0。一个或者多个连续段都是0,可以写成::这个方法,一个地址只能用一次!!!!多了就无法分辨具体地址了。

还有一种内嵌了v4地址的格式,前96bit是v6,后32bit是v4

IPv6地址结构

分为两部分

网络前缀:nbit,其实就相当于v4的网络位

接口标识:(128-n)bit,相当于v4的主机位

举个例子:

2001:0DB8:6101:0001:5ED9:98FF:FECA:A298/64

/64,也就意味着,前64bit是网络前缀,后64bit是接口标识

 接口标识可以通过三种方式生成:手工配置,系统自动生成,基于IEEE EUI-64规范生成

IEEE EUI-64规范生成的最为常用,该方法就是把接口的MAC地址变成v6的接口标识

 也就是把MAC变成二进制写出来,第七位取反,在中间插入FFFE,最后把结果转为16进制,就是接口标识了

IPv6中有三种地址

单播:标识一个接口,目的地址为单播地址的报文就会被送到被标识的接口,在v6中,一个接口拥有多个IPv6地址是很常见的现象

GUA(全球单播地址)

相当于v4的公网IP

ULA(唯一本地地址)

也就是私网地址

 唯一本地地址使用FC00::/7地址块,目前仅使用了FD00::/8地址段,FC00::/8预留给以后拓展用

ULA虽然只在有限范围内有效,但网络前缀依旧是全球唯一,虽然是随机方式产生的,但是冲突概率极小

LLA(链路本地地址)

另一种应用范围受限的地址类型,LLA的有效范围是本地链路,前缀是FE80::/10

LLA用于一条单一链路层面的通信,例如IPv6地址无状态自动配置、IPv6邻居发现等

源或者目的IPV6地址为链路本地地址的数据包将不会被转发到始发的链路之外,链路本地地址的有效范围就是本地链路

每个IPV6地址都必须具备一个LLA,华为设备支持自动生成和手工指定两种方式

组播:标识多个接口,目的地址为组播地址的报文会被送到所有被标识的接口,只有加入组播组的设备接口才会侦听发往该组播地址的报文

组播地址标识某个组,目的地址为组播地址的报文会被送到该组内的成员,组播地址由前缀,标志字段,范围字段和组播组ID构成

 IPV6组播的目的MAC自然也是组播MAC了

组播MAC前16bit是33:33,专门给IPV6组播留的前缀,后32bit从组播的IPV6地址的后32bit直接映射过来

 被请求节点组播地址

当一个节点具有单播或者任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。该地址主要用于邻居发现机制和地址重复检测功能。被请求节点组播地址的有效范围为本地链路范围。

任播:任播地址标识一组网络接口(通常属于不同节点)。目标地址是任播地址的数据包将发到其中路由意义上最近的一个网络接口

广播地址就没了。。。。

 

 IPV6报文结构

基本报头:提供报文转发的基本信息,路由器通过解析基本报头就能完成大部分报文转发

扩展报头:提供一些扩展的报文转发信息,比如说分段、加密等,该部分不是必需的,也不是每个路由器都要处理这个。当路由器或者目的节点要做某些特殊处理时,发送方才会添加扩展报头

上层协议数据单元:一般由上层协议报头和它的有效载荷构成,和IPV4差不多

IPV6基本报头

 version就是版本号,6,占4bit

traffic class就是流分类,用于表示报文的类或者是优先级,占8bit

flow label是流标签,用于区分实时流量。标签+源地址可以确定一条唯一的数据流。20bit

payload length载荷长度,即包头以后的部分,data的长度。16bit

Next header:下一个报头,相当于ipv4中的protocal字段,标识了上层协议类型。8bit

Hop limit:相当于ipv4中的ttl。8bit

Source address:源ipv6地址。128bit

Destination address:目的ipv6地址。128bit

IPV6扩展报头

 Next Header,这个作用和基本报头一样。

Extension header Length:报头扩展长度,占8bit,表示这个扩展报头的长度(不包含next header字段)

Extension header Data:扩展报头的数据,可变长。扩展报头的内容,为一系列选项字段和填充字段的组合

扩展报头到底能干什么?

 注意了,扩展报头必须按照上面的顺序出现,而且,除了这个目的选项报头以外,其他报头只能出现一次!!!

当然了目的选项报头最多也就出现两次,一次是在路由报头之前,第二次是在上层协议数据报文之前,如果没有路由报头,就只出现一次

ICMPv6

类似ICMP(internet控制消息协议),做了一些扩展,比如说NDP(邻居发现协议就是基于ICMPv6)实现的

在说v6的之前,先说一下ICMP吧

ICMP是IP协议的辅助协议,用来传递各种差错和控制信息的,对于收集各种网络设备、诊断和排除各种网络故障起到了很大的作用,像是ping命令就是ICMP的一个功能,检测一下目的节点的网络可达性。还有一个tracert命令,跟踪路由,基于报头的TTL来逐跳跟踪报文转发路径,可以有效检测网络丢包和时延,也能检测环路

 接下来就是ICMPv6

消息类型和ICMP其实也差不多,分差错消息和信息消息

那我们就可以把ICMPv6报文分为两类:差错报文和信息报文

差错报文:type字段最高bit为0,也就是ICMPv6Type=[0,127],差错消息用来报告一些错误,比如说目的不可达,超时等等

信息报文:type字段最高bit为1,也就是ICMPv6 Type=[128,255],信息报文用来实现同一链路上节点之间的通信和子网内的组播成员管理等等

 Path MTU发现

在IPv4中,报文过大,会被路径上的设备分片传输

而在IPv6中,中间的这些设备就不会把报文分片了,而是直接在源节点分

PMTU(Path MTU)就是路径上的最小接口MTU

PMTUD(Path MTU发现机制),就是发现路径上的这些MTU,避免在路径上分片

发送方会依据发现机制所发现的最优MTU来发送数据,尽量避免数据包的分片。

 

 NDP(邻居发现协议)

NDP能做的事情很多

 NDP使用以下几种报文

RS(Router Solicitation):路由请求报文

RA(Router Advertisement):路由器通告报文

NS(Neighbor Solicitation):邻居请求报文

NA(Neighbor Advertisement):邻居通告报文

 路由器发现是指主机发现本地链路上路由器和确定其配置信息的过程

路由器发现可以同时实现以下三个功能

路由器发现(Router Discovery):主机定位邻居路由器以及选择哪一个路由器来做缺省网关的过程

前缀发现(Prefix Discovery):主机发现本地链路上的一组IPv6前缀的过程,用于主机的地址自动配置

参数发现(Parameter Discovery):主机发现相关操作参数的过程,如输出报文的缺省跳数限制,地址配置方式等信息

使用报文:RS(路由器请求) RA(路由器通告)

协议交互主要有两种情况

主机发送RS触发路由器回应RA

路由器周期性发送RA

路由器发现的具体流程

路由器发现有几种情况

主机请求触发,就是一台PC启动了,PC会向本地链路范围内的路由器发送RS报文(RS报文再回想一遍,是路由请求报文),路由器收到后就回应RA报文。主机发现这些本地链路上的路由器后,就会自动的配置缺省路由器、建立缺省路由表‘前缀列表和设置其他的一些参数

 路由器周期性发送

路由器周期性发送RA报文,发送间隔是一个有范围的随机值,缺省的最大值是600s,最小200s,

如果没有配置min-interval,最小时间间隔会随着配置的最大时间间隔max-interval变化,也就是最大值的1/3

也不是什么RA报文都能周期发的,对地址有要求:

Source Address:必须是发送接口的LLA

Destination Address:FF02::1

 地址解析

IPv4的地址解析协议是ARP,是在二层完成的,v6则是通过NS和NA报文来实现,是在三层完成的

在三层完成地址解析,有几个好处:

不同的二层介质可以采用相同的地址解析协议

可以使用三层的安全机制避免地址解析攻击(点名ARP病毒)

使用组播的方式发送请求报文,减少了二层网络的性能压力

邻居状态跟踪

IPv6邻居状态表

缓存了IPv6地址与MAC地址的映射

 OSPF的邻居建立过程有各种状态,IPv6也有

未完成(incomplete)

邻居不可达,正在进行地址解析,或者是邻居的链路层地址未探测到,解析成功的话就进入可达状态

可达(reachable)

邻居可达,一定时间内可达,缺省状态下是30s,如果时间过了还没有被使用过,那就变成陈旧状态

陈旧(Stale)

已经不知道邻居可不可达了,因为一定时间内没被使用,此时除非有发给邻居的报文,否则不对邻居是否可达进行检测。就是如果没有报文发给这个邻居,那他是死是活我不管了

延迟(Delay)

邻居是否可达未知,已经向邻居发送报文,指定时间内得不到回应,就进入探查状态

探查(Probe)

邻居是否可达未知,已经向邻居发送了NS报文(邻居请求报文),探测邻居是否可达,规定时间内收到了NA,进入可达状态,没收到就进入未完成状态

 重复地址检测(DAD)

接口在使用一个v6地址之前,他要先探测一下有没有其他节点用了这个地址,保证网络中地址不会重复

接口在启用任何一个单播IPv6地址之前都要做重复检测,包括LLA

一个地址在通过重复地址检测之前,被称为tentative地址(试验地址),此时,接口不能使用这个地址进行单播通讯,毕竟都没通过,有没有重复都不知道,肯定不能用的

加入两个节点配置了一样的地址,同时做DAD,当一方接收到了对方的DAD NS报文,则接收方不启用这个地址

重定向

一定要说的话,可以理解成重新定向,网关设备发现报文从其他网关设备转发更优,他就会发送重定向报文告知报文的发送者,让他选另一个设备吧

看看下面这个例子,PC1一开始的默认网关是R2,他想访问服务器,就要先走到R2,R2收到报文后,一检查发现要去服务器的话,R1比我好,R2就发送一个重定向报文给PC1,通知PC1,去往服务器的报文发给R1更好

PC1收到重定向报文后,会向R1发送报文,R1再转发给服务器

 IPv6的地址配置方式

v4的时候配置地址,可以手动加进去,也可以用DHCP来动态配置,其实v6也是如此

静态:手动配置

动态:

(1)无状态地址自动配置(SLAAC)

不需要IPv6地址分配服务器保存和管理每个节点的状态信息,基于NDP

过程:
1.PC根据本地的接口ID生成LLA

2.PC对LLA进行DAD检测,如果该地址没有冲突就可以启用了,此时的PC就具备IPv6连接能力

3.PC发送RS报文,尝试在链路上发现IPv6路由器

4.路由器收到RS,发送RA报文(携带可用于无状态地址自动配置的IPv6地址前缀,路由器在没有收到RS的时候也能主动发出RA)

5.PC解析RA报文,得到地址前缀,使用前缀加上本地的接口ID生成IPv6单播地址

6.PC对该单播地址进行DAD检测,通过后启用

搭个拓扑来看看

给R1的1号接口配置一下ipv6的地址

 

在R2的对应接口上开启IPv6 enable,然后配置ipv6地址自动获取。

然而,此时是获取不到地址的。

 

因为此时R1是默认抑制RA报文的发送的,我们需要开启,让他发送RA

 

看回R2,有地址了,前缀是2002

 

 这个是一个GUA,全球单播地址,是由在RA报文里解析出来的2002这个前缀,加上该接口的LLA构成的

 在抓包的时候会发现,这些报文都是FE80前缀的地址,发往FF02::1或者是FE80前缀的

FE80前缀的是LLA(链路本地地址),FF02::1是一个是一个所有节点组播地址。 本地链路上的所有 IPv6 主机都会收到发送到此地址的数据包

 对刚刚抓包获取的RA报文分析一下

这里主要看Managed和Other

M=0,标识无状态地址分配,客户端通过无状态协议(如ND)获得IPv6地址
M=1,标识有状态地址分配,客户端通过有状态协议(如DHCPv6)获得IPv6地址

O=0,标识客户端通过无状态协议(如ND)获取除地址外的其他配置信息
O=1,标识客户端通过有状态协议(如DHCPv6)获取除地址外设为其他配置信息,如DNS

地址的状态变化过程,一开始获取前缀,生成IPv6地址时是Tentative,通过DAD检测后才能进入Preferred状态,Preferred状态可以正常收发报文,时间过了,进入Deprecated状态,此时地址仍然有效,但是不能用它来建立新的连接,Vaild lifetime过时后进入invaild状态,该地址不能继续使用了

 

 DHCP其实也有无状态自动配置:

主机IPv6地址仍然通过路由通告方式自动生成,DHCPv6服务器只分配除了IPv6地址以外的配置参数,包括DNS服务器等参数

M/O置位为0 1

服务器为已经有IPv6地址/前缀的客户端分配其他网络参数

1.客户端以组播的方式向DHCPv6服务器发送Information-request报文,该报文中携带Option Request选项,指定客户端需要从服务器获取的配置参数

2.服务器收到后,给客户端分配网络配置参数,并单播发送Reply报文将网络配置参数返回给客户端。客户端检查Reply报文中的信息,如果与Information-request报文中请求的一致,就按照Reply报文给的参数来配置,不一致,就忽略该参数

 

(2)有状态地址自动配置

IPv6地址分配服务器必须保存并管理每个节点的状态信息,基于DHCPv6

DHCP有状态自动配置:

FHCPv6服务器自动配置IPv6地址/前缀以及其他的网络配置参数(DNS、NIS、SNTP服务器地址等参数)

M/O置位为1 1

四步交互

 

1.DHCPv6客户端发送Solicit消息,请求DHCPv6服务器为其分配IPv6地址/前缀和网络配置参数

2.DHCP服务器回应Advertise消息,告诉客户端,我可以为你分配的地址/前缀和网络配置参数

3.如果客户端收到了多个服务器发送的Advertise消息,就根据消息的接收先后顺序、服务器优先级等,选择其中一台服务器,并向该服务器发送Request消息,请求服务器确认为其分配地址/前缀和网络配置参数

4.服务器回应Reply消息,确认将地址/前缀和网络配置参数分配给客户端使用

还有一种:两步交互

DHCP客户端可以在发送的Solicit消息中携带Rapid Commit选项,标识客户端希望服务器能快速为其分配地址/前缀和网络配置参数。很急,想快点整

 1.客户端发送Solicit报文,并且携带Rapid Commit选项

2.服务器收到报文后,会判断,如果服务器支持快速分配,就省去Advertise和Request,直接返回Reply报文,为客户端分配地址/前缀和网络配置参数。如果不支持就用回四步交互

 地址/前缀租约更新

在v4的时候,配置DHCP时会有租约这个设置,可以设置租多少多少天,或者是小时

v6也有租约,地址/前缀超过租约时间后就不能再用了。所以在超时之前,客户端希望继续使用这个地址/前缀,就需要更新地址/前缀

客户端在T1时刻发送Renew报文进行地址/前缀租约更新请求

如果客户端可以继续使用这个地址/前缀,则DHCPv6服务器回应续约成功的Reply报文,通知客户端续约成功了。否则,回应续约失败的Reply报文,通知客户端不能获得新的租约

如果DHCP服务器未响应T1时刻客户端的Renew请求,客户端会在T2向所有DHCP服务器组播发送Rebind请求更新租约。

1.DHCP客户端在T1时刻发送Renew请求后,没有收到服务器的回应

2.客户端在T2时刻,向所有DHCPv6服务器组播发送Rebind报文请求更新租约

3.如果客户端可以继续使用这个地址/前缀,则DHCPv6服务器回应续约成功的Reply报文,通知客户端续约成功了。否则,回应续约失败的Reply报文,通知客户端不能获得新的租约

 

DHCPv6 PD(前缀代理):

自动配置:下层网络路由器不需要再手工指定用户侧链路的IPv6地址前缀,它只需要向上层网络路由器提出前缀分配申请,上层网络路由器便可以分配合适的地址前缀给下层路由器,下层路由器把获得的前缀(前缀一般长度小于64)进一步自动细分成64位前缀长度的子网网段,把细分的地址前缀再通过路由通告(RA)至与IPv6主机直连的用户链路上,实现主机的地址自动配置,从而完成整个IPv6网络的层次化布局。

不同层次的IPv6地址配置一般手动配置,但是手动配置扩展性不佳,不利于IPv6地址的统一规划管理,而PD能解决这个问题

1.DHCP客户端发送Solicit报文,请求DHCP服务器为其分配IA_NA地址和IA_PD前缀

2.服务器回复Advertise报文,通知客户端可以为其分配的IPv6地址和前缀

3.如果客户端收到了多个服务器发送的Advertise消息,就根据消息的服务器优先级等,选择其中一台服务器(如果优先级一样,就选带有该客户端需要的配置参数的报文),并向该服务器发送Request消息,请求服务器确认为其分配地址/前缀

4.服务器回复Reply报文,确认把地址/前缀分配给客户端

5.客户端收到PD前缀后,与终端进行RS/RA报文交互,在RA报文中携带获得的PD前缀会下发至终端

 

DHCPv6网络构成

基本协议架构中,主要包括以下三种角色:

DHCPv6 Client: DHCPv6客户端,通过与DHCPv6服务器进行报文交互,获取lIPv6地址/前缀和其他网络配置参数,完成自身的网络配置。

DHCPv6 Server: DHCPv6服务器,负责处理来自客户端或中继的地址分配、地址续租、地址释放等请求,为客户端分配IPv6地址/前缀和其他网络配置参数。

DHCPv6 Relay: DHCPv6中继,负责转发来自客户端或服务器的DHCPv6报文,协助DHCPv6客户端和DHCPv6服务器完成地址配置功能。

当服务器和客户端不在一个网段的时候,就需要中继来完成IPv6地址/前缀和网络配置参数的获取

1.客户端向所有DHCPv6服务器和中继的组播地址FF02::1:2发送请求报文

2.中继收到客户端的报文后,将其封装在Relay-Forward报文的中继消息选项中,并将Relay-Forward保温发给DHCPv6服务器或下一跳中继

3.服务器从Relay-Forward报文中解析除DHCPv6客户端的请求,为DHCPv6客户端选取IPv6地址和其他配置参数,并将Relay-Reply报文发给中继

4.中继从Relay-Reply报文中解析除DHCPv6服务器的应答,转发给客户端

 DHCPv6地址确认过程

客户端有断电,掉线,漫游等情况发生的时候,客户端会发送Confirm报文,确认自己的IPv6地址是否可用。如果客户端确认的地址是合法的,则服务器回应;如果没有回应,客户端就需要重新启动地址申请流程

 DHCPv6地址释放过程

客户端不需要再使用这个地址的时候,将Release消息发送到服务器,发起释放地址的交互流程

 

 DHCP常用概念

有效时间:Vaild lifetime,地址/前缀的生命周期

优选时间:Preferred lifetime,用于计算续租时间和重绑定时间

T1:IPv6续租时间,默认是优选时间的0.5倍

T2:重绑定时间,默认是优选时间的0.8倍

IA:Identity Association,身份联盟,是使得服务器和客户端能够识别、分组和管理一系列相关IPv6地址的结构,分为IA_NA(非临时地址身份联盟)和IA_PD(代理前缀身份联盟)

DUID:DHCP Unique Identifier,DHCP设备唯一标识符,用来唯一标志一台设备,每个客户端、服务器、中继都有自己的DUID

报文类型:Solicit、Advertise、Request、Reply、Information-Request、Renew、Rebind、Realse、Confirm、Decline、Reconfigure、Reply-Forward、Relay-Reply

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
深度学习模型的发展历程可以追溯到上世纪80年代,但直到近年来才取得了显著的突破和广泛应用。以下是深度学习模型的发展历程: 1. 人工神经网络(ANN):20世纪50年代,人工神经网络作为一种模拟生物神经网络的计算模型被提出。然而,由于计算能力和数据量的限制,ANN的发展进展缓慢。 2. 反向传播算法:20世纪80年代,反向传播算法的提出使得训练多层神经网络成为可能。这一算法通过计算梯度来更新网络参数,从而实现了深层网络的训练。 3. 深度信念网络(DBN):2006年,Hinton等人提出了深度信念网络,通过逐层贪婪地训练网络,解决了深层网络训练的难题。DBN为后来的深度学习模型奠定了基础。 4. 卷积神经网络(CNN):20世纪90年代,LeCun等人提出了卷积神经网络,该网络结构在图像处理领域取得了巨大成功。CNN通过局部感知和权值共享的方式,有效地提取图像特征。 5. 递归神经网络(RNN):20世纪90年代,RNN被提出用于处理序列数据,如语音识别和自然语言处理。RNN具有记忆功能,能够处理具有时序关系的数据。 6. 深度强化学习(DRL):2013年,DeepMind的AlphaGo通过深度强化学习技术战胜了围棋世界冠军。DRL结合了深度学习和强化学习的方法,使得机器能够通过与环境的交互来学习决策策略。 7. 预训练和迁移学习:近年来,预训练和迁移学习成为深度学习模型的重要技术。通过在大规模数据上进行预训练,可以提取出通用的特征表示,然后将这些表示迁移到特定任务上进行微调。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值