ICMPv6概述
(1)ICMPv6是IPV6的基础协议之一,用于向源节点传递报文转发的信息或错误。
(2)协议类型号(即IPV6 Next Header)为58.
(3)在IPV6中,ICMPV6除了提供ICMPV4的对应功能之外,还有其他一些功能的基础,如邻居发现、无状态地址配置、重复地址检测、PMTU发现等。(把邻居关系放到三层而不是原来的协议邻居)
ICMP for IPV4(基础报文)
(1)目的不可达
(2)数据包超长
(3)超时
(4)回应请求
(5)回应应答
ICMPV6 for IPV6
(1)目的不可达
(2)数据包超长
(3)超时
(4)回应请求
(5)回应应答
(6)邻居发现
(7)无状态地址配置
(8)重复地址检测
(9)PMTU发现
邻居发现协议-NDP概述:NDP(Neighbor Discovery Protocol,邻居发现协议)在RFC2462及RFC4861中定义。
NDP实现了IPV6中诸多重要机制:
(1)路由器发现:发现链路上的路由器,获得路由器通告的信息。
(2)无状态自动配置:通过路由器通告的地址前缀,终端自动生成IPV6地址。
(3)DAD:获得地址后,进行地址重复检测,确保地址不存在冲突。
(4)地址解析:请求目的的网络地址对应的数据链路层地址,类似于IPV4的ARP。
(5)邻居状态跟踪:通过NDP发现链路上的邻居并跟踪邻居状态。
(6)前缀重编址:路由器对所通告的地址前缀进行灵活设置实现网络重编址。
(7)路由重定向:告知其他设备,到达目标网络的更优下一跳。
NDP使用ICMPV6的相关报文:
(1)RS(Router Solicitation):路由器请求报文。(发送者是主机)
(2)RA(Router Advertisement):路由器通告报文。
(3)NS(Neighbor Solicitation):邻居请求报文。(与NA是路由器之间的)
(4)NA(Neighbor Advertiisement):邻居通告报文。
地址解析报文:地址解析过程中使用了两种ICMP报文(1)邻居请求(2)邻居通告。
邻居请求:
(1)type=135,Code=0.
(2)Target Address是需要解析的IPV6地址,因此该处不准出现组播地址。
邻居通告:
(1)Type=136,Code=0
(2)R标识(Router flag):标识发送者是否为路由器,如果1则表示是。
(3)S标识(Solicited flag):表示发送邻居通告是否是响应某个邻居请求,如果1则表示是。
(4)O标识(Overide flag):标识邻居通告中的消息是否覆盖已有的条目信息,如果1则表示是。
(5)Target Address表示所携带的链路层地址对应的IPV6地址。
ARP报文中的内容:(1)源MAC、(2)源IP、(3)请求MAC,因为不知道使用0.0.0.0,全0代表未知全F代表广播、(4)请求IP、(5)消息类型。(ARP只能对应MAC地址,如PPP累的地址无用)
IPV6地址解析优势:
(1)IPV6的地址解析不再使用ARP,也不再使用广播方式。
(2)三层完成,针对不同的链路层协议可以采用相同的地址解析协议。
(3)通过ICMPV6(类似于135的NS及类型136的NA报文)来实现地址解析。
(4)NS报文发送使用组播的方式,报文的目的IPV6地址为被请求的IPV6地址对应的”被请求节点组播地址“,报文的目的MAC为组播MAC。
(5)采用组播的方式发送NS消息相比于广播的方式更加的高效,也减少了对其他节点的影响和对二层网络的性能压力。
(6)可以使用三层的安全机制(例如IPsec)避免地址解析攻击。
重复地址检测DAD:
机制概述:
(1)重复地址检测确保网络中无两个相同单播地址。
(2)所以地址都需要做DAD:
(3)使用NS和NA完成DAD交互过程。
原理:
(1)一个地址在通过DAD地址重复检测之前称为”tentaitive地址“也就是实验性地址。接口暂时还不能使用这个实验性地址进行正常的IPV6单播通讯,但是会加入和该地址所对应的Solicited-Node组播组。
(2)DAD重复检测:节点向该tentative地址所在的Solicited-Node组播地址发送一个NS,如果收到某个其他站点回应的NA,就证明该地址已经被网络上使用,节点将不能使用该tentative地址通讯。
(3)接口在启用任何一个单播IPV6地址前都需要先进行DAD,包括Link-Lical地址。
IPV6地址无状态自动配置概述:
(1)IPV6地址无状态自动配置(S tateless Address autoconfiguraion,SLAAC)是IPV6的标准功能,在RFC2462中定义。
(2)在IPV6中,设备可以通过手工或者动态的方式获取地址。在动态获取地址的方式中,存在DHCPV6及无状态地址自动配置两种方式。
(3)相比于DHCPV6这种动态地址分配技术而言,SLAAC无需部署应用服务器,更加轻量。
路由器发现概述:路由器发现功能是IPV6地址自动配置功能的基础,主要通过以下两种报文实现。
(1)RA(Router Advertisement ,路由通告)报文:每台设备为了让二层网络上的主机和设备知道自己的存在,可以定时以组播方式发送RA报文,RA报文中会带有网络前缀信息,及其他一些标志位信息。RA报文的Type字段为134。
(2)RS(Router Solicitation,路由器请求)报文:很多情况下主机接入网络后希望尽快获取网络前缀进行通信,此时主机可以立刻发送RS报文,网络上的设备将回应RA报文。RS报文的Type字段值为133。(还会带上自己的二层地址)
路由器发现-路由器周期发送RA:
(1)链路上的路由器会定期(不固定周期+触发式)的发送RA(Router Advertisement)消息。
(2)收到RA的主机将加入默认路由器(网关)列表中。
(3)收到RA的路由器将检查RA内容的一致性。
路由器发现-路由器回应RA:
(1)主机接口初始化时发RS(Router Solicitation)消息,路由器回应RA。(回应的RA可以直接给请求的主机,也可以选择多播到所有节点,该RS的目标地址是FF02::2)(RA的目标是FF02::1)
主机获得前缀及其他参数过程:
1、当存在以下情况时忽略RA发送的前缀:(不发送RA)
(1)RA报文选项中的“auto”未置位。
(2)前缀与已有地址前缀重复(包括Link-Lcoal地址)
(3)RA报文选项中的“preferrde lifetime”时间大于“valid lifetime”。
(4)前缀长度与接口ID长度之和不等于128位。(因为接口ID都是EUI-64为64为,所以等于前缀不等于64位)
2、除以上情况外,主机获得前缀同时也获得一些相关时间参数:
(1)“preferrde lifetime”=发起新通讯的有效时间。(优选生存期)
(2)“valid lifetime”=原有通讯的有效时间。(有效生存期)
3、主机会周期性的收到RA报文,并据此报文来更新自己的时间参数。
地址生存时间:
(1)DAD:实验地址,看该地址是已被占用。
(2)有效生存期:有效生存期分为优选生存期和反对地址,优选生存期可以互相连接,但是反对地址只能被动接受连接。
(3)无效地址:任何连接都会DOWN掉。
正常情况下,有效生存期结束前,应该再次受到RA,重置计时器。
RFC(一系列以编号排定的文件):基本的互联网通信协议都有在RFC文件内详细说明。
重定向报文:
(1)当网关路由器知道更好的转发路径时,会以重定向报文的方式告知主机。
(2)target Address是更好的路径下一跳地址,Destination Address是需要重定向转发的报文的目的地址。
PMTU:
(1)同一条链路上最小的MTU大小。(MTU:包的最大大小)
(2)PMTU最小为1280bytes(IPV6要求链路层所支持的MTU最小为1280)
(3)最大PMTU由链路层决定,如隧道,可以支持很大的MTU。