前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【IPv6】ICMPv6那些被考官疯狂针对的点

【IPv6】ICMPv6那些被考官疯狂针对的点

作者头像
Ponnie
发布2021-04-29 10:38:44
2.8K0
发布2021-04-29 10:38:44
举报
文章被收录于专栏:玉龙小栈玉龙小栈

ICMPv4和ICMPv6的区别?

1、工作环境区别:ICMPv4运行于ipv4网络中,而ICMPv6运行在ipv6网络中;

2、协议号的区别:ICMPv4协议号为1,ICMPv6协议号为58;

3、功能上的区别:在IPv4中,Internet控制报文协议ICMP(Internet Control Message Protocol)向源节点报告关于向目的地传输IP数据 包过程中的错误和信息。它为诊断、信息和管理目的定义了 一些消息,如:目的不可达、数据包超长、超时、回应请求和回应应答等。

在IPv6中,ICMPv6除了提供ICMPv4常用的功能之外,还是其它一些功能的基础,如邻接点发现、无状态地址配置(包括重复地址检测)、PMTU发现等。ICMPv6的协议类型号(即IPv6报文中的Next Header字段的值)为58。

ICMPv6报文格式报文中字段解释如下:

Type:表明消息的类型,0至127表示差错报文类型,128至255表示消息报文类型。

Code:表示此消息类型细分的类型。

Checksum:表示ICMPv6报文的校验和。

ICMPv6错误报文可以分为以下4种:

ICMPv6错误报文的分类;ICMPv6错误报文用于报告在转发IPv6数据包过程中出现的错误。

1、目的不可达错误报文在IPv6节点转发IPv6报文过程中,当设备发现目的地址不可达时,就会 向发送报文的源节点发送ICMPv6目的不可达错误报文,同时报文中会 携带引起该错误报文的具体原因。目的不可达错误报文的Type字段值为1。

根据错误具体原因又可以细分为:

Code=0:没有到达目标设备的路由。

Code=1:与目标设备的通信被管理策略禁止。

Code=2:未指定。

Code=3:目的IP地址不可达。

Code=4:目的端口不可达。

2、数据包过大错误报文在IPv6节点转发IPv6报文过程中,发现报文超过出接口的链路MTU时,则向发送报文的源节点发送ICMPv6数据包过大错误报文,其中携带出接口的链路MTU值。数据包过大错误报文是Path MTU发现机制的基础。数据包过大错误报文的Type字段值为2,Code字段值为0。

3、时间超时错误报文 在IPv6报文收发过程中,当设备收到Hop Limit字段值等于0的数据包, 或者当设备将Hop Limit字段值减为0时,会向发送报文的源节点发送 ICMPv6超时错误报文。对于分段重组报文的操作,如果超过定时时间, 也会产生一个ICMPv6超时报文。时间超时错误报文的Type字段值为3, 根据错误具体原因又可以细分为:

Code=0:在传输中超越了跳数限制。

Code=1:分片重组超时。

4、参数错误报文 当目的节点收到一个IPv6报文时,会对报文进行有效性检查,如果发现 问题会向报文的源节点回应一个ICMPv6参数错误差错报文。

参数错误报文的Type字段值为4,根据错误具体原因又可以细分为:

Code=0:IPv6基本头或扩展头的某个字段有错误。

Code=1:IPv6基本头或扩展头的NextHeader值不可识别。

Code=2:扩展头中出现未知的选项。

ICMPv6信息报文:

ICMPv6信息报文提供诊断功能和附加的主机功能,比如多播侦听发现 和邻居发现。常见的ICMPv6信息报文主要包括回送请求报文(Echo Request)和回送应答报文(Echo Reply),这两种报文也就是通常使 用的Ping报文。回送请求报文:回送请求报文用于发送到目标节点,以使目标节点立即发回一个回送应答报文。

回送请求报文的Type字段值为128,Code字段的值为0。

回送应答报文的Type字段的值为129,Code字段的值为0。

IPv6 NDP

邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要 的基础协议。

邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)和ICMP路由器发现(Router Discovery),它定义了使用ICMPv6报文实现地址解析,跟踪邻 居状态,重复地址检测,路由器发现以及重定向等功能。

(1)地址解析:取代IPv4中的ARP

Host A在向Host B发送报文之前它必须要解析出Host B的链路层地址,所以 首先Host A会发送一个NS报文,其中源地址为Host A的IPv6地址,目的地址 为Host B的被请求节点组播地址,需要解析的目标IP为Host B的IPv6地址,这就表示Host A想要知道Host B的链路层地址。同时需要指出的是,在NS报文的Options字段中还携带了Host A的链路层地 址。当Host B接收到了NS报文之后,就会回应NA报文,其中源地址为Host B 的IPv6地址,目的地址为Host A的IPv6地址(使用NS报文中的Host A的链路 层地址进行单播),Host B的链路层地址被放在Options字段中。

这样就完成了一个地址解析的过程

1、当PC1想访问PC2时,会查找自己的ipv6 neighbor表

2、如果ipv6 neighbor表里没有此邻居,则会以组播(使用PC2的ipv6 地址计算出来的被请求节点组播地址为目标地址)的方式往外发送 NS报文(携带有自己的mac地址)

3、因为PC2是属于这个组的,所以PC2会处理这个NS报文,解析NS报 文发现PC1要请求自己的MAC地址

4、PC2以单播的方式发送NA消息,携带了自己的MAC地址

(2)重复地址检测:探测是否有其它的节点使用了该地址

1、当PC1配置一个IPv6地址时,不会立即生效,是一个试验地址;

2、PC1会使用一个源IP为:: 目的地址为这个地址对应的被请求节点组播 地址的NS消息(会携带 target ip)进行重复地址检测;

3、如果网络中有人发送NA(目的地址为FF02::1)响应这个NS消息, 则认为这个地址已经有人使用,这个地址将不会生效;

4、如果在一段时间内没人响应这个NS消息,则认为这个地址是没有冲突的;

(3)路由器发现:路由器发现功能用来发现与本地链路相连的设备,并获取 与地址自动配置相关的前缀和其他配置参数。

在IPv6中,IPv6地址 可以支持无状态的自动配置,即主机通过某种机制获取网络前缀信 息,然后主机自己生成地址的接口标识部分。

路由器发现功能是IPv6地址自动配置功能的基础,主要通过以下两种报文实现:

1、 路由器通告RA(Router Advertisement)报文:每台设备为了让二层网络上的主机和设备知道 自己的存在,定时都会组播发送RA报文,RA报 文中会带有网络前缀信息,及其他一些标志位信 息。RA报文的Type字段值为134。

2、 路由器请求RS(Router Solicitation)报文:很多情况下主机接入网络后希望尽快获取网络前缀进行通信,此时主机可以立刻发送RS报文,网络 上的设备将回应RA报文。RS报文的Tpye字段值为133。

路由器发现功能如图4所示:

(4)重定向:当网关设备发现报文从其它网关设备转发更好,它就会发送重 定向报文告知报文的发送者,让报文发送者选择另一个网关设备

1、Host A需要和Host B通信,Host A的默认网关设备是Router A, 当Host A发送报文给Host B时报文会被送到Router A

2、Router A接收到Host A发送的报文以后会发现实际上Host A直接 发送给Router B更好,它将发送一个重定向报文给主机A。

其中报文中更好的路径下一跳地址为Router B,Destination Address为Host B

3、Host A接收到了重定向报文之后,会在默认路由表中添加一个主 机路由,以后发往Host B的报文就直接发送给Router B 注意:路由器收到重定向报文时,不会进行重定向

当设备收到一个报文后,只有在如下情况下,设备会向报文发送者发送重定向报文:

a)报文的目的地址不是一个组播地址。

b)报文并非通过路由转发给设备。

c)经过路由计算后,路由的下一跳出接口是接收报文的接口。

d)设备发现报文的最佳下一跳IP地址和报文的源IP地址处于 同一网段。

e)设备检查报文的源地址,发现自身的邻居表项中有用该地 址作为全球单播地址或链路本地地址的邻居存在。

(5)Path MTU在IPv4中,报文如果过大,必须要分片进行发送,所以在每个节点发送 报文之前,设备都会根据发送接口的最大传输单元MTU(Maximum Transmission Unit)来对报文进行分片。

但是在IPv6中,为了减少中间转发设备的处理压力,中间转发设备不对 IPv6报文进行分片,报文的分片将在源节点进行。当中间转发设备的接 口收到一个报文后,如果发现报文长度比转发接口的MTU值大,则会将 其丢弃;同时将转发接口的MTU值通过ICMPv6报文的“Packet Too Big” 消息发给源端主机,源端主机以该值重新发送IPv6报文,这样带来了额外流量开销。

PMTU发现协议可以动态发现整条传输路径上各链路的MTU值,减少由于重传带来的额外流量开销。PMTU协议是通过ICMPv6的Packet Too Big报文来完成的。

首先源节点假设PMTU就是其出接口的MTU,发出一个试探性的报文,当转发路径上存在一个小于当前假设的PMTU时,转发设备就会向源节 点发送Packet Too Big报文,并且携带自己的MTU值,此后源节点将 PMTU的假设值更改为新收到的MTU值继续发送报文。如此反复,直到 报文到达目的地之后,源节点就能知道到达目的地的PMTU了。

PMTU的工作过程如图1所示:

整条传输路径需要通过4条链路,每条链路的MTU分别是1500、1500、 1400、1300,当源节点发送一个分片报文的时候:

1、 首先按照PMTU为1500进行分片并发送分片报文,当到达 MTU为1400的出接口时,设备返回Packet Too Big错误,同 时携带MTU值为1400的信息。

2、源节点接收到之后会将报文重新按照PMTU为1400进行分 片并再次发送一个分片报文,当分片报文到达MTU值为 1300的出接口时,同样返回Packet Too Big错误,携带MTU 值为1300的信息。

3、 之后源节点重新按照PMTU为1300进行分片并发送分片报 文,最终到达目的地,这样就找到了该路径的PMTU

扩展问题1:NDP被看作第3层的协议,在三层完成地址解析,主要带来以下几个好处?

<1>地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议 (P2P/FR也可以进行地址解析)

<2>可以使用三层的安全机制(例如IPSec)避免地址解析攻击。

<3>使用组播方式发送请求报文,减少了二层网络的性能压力。(APR是广播和单播)

扩展问题2:NDP和ARP的区别?

(1)NDP是基于三层的ICMPV6实现的,而ARP是基于二层的;

(2)NDP和ARP在功能上也有区别,NDP有重定向功能和路由发现功能, 而ARP没有;

扩展问题3:IPv6收到了一个超大数据包会怎么处理?

答:会把数据包丢掉,同时会通过ICMPv6的“packet too big”且携带有本端MTU 的消息发送给源主机,源主机收到此消息后,会根据此值对其进行分片,然后再 次发送此数据。

扩展问题4:RA可以分配哪些参数?

解释:

(1)Preferred lifetime内:表示能主动用这个地址发包,在preferred

(2)flag位(0x00)prf(默认网关优先级):用于决定哪个路由器是默认网关

M位:是否执行有状态自动配置,M=1,表示通 过DHCPv6动态获取ipv6地址;

other位:如果M位为0,other位为1,则表示地址和网关通过无状态配置,其他信息请求dhcpv6。如果M=0、o=0,那么只能通过无状态自动 获取ipv6地址,而无法获得其他的网络参数;

(3)Router lifetime:RA消息在缓存中存多久,在此时间内,设备 可以主动的访问其他设备。lifetime和valid lifetime内的只能被动响应,超过valid的为无效

扩展问题5:ICMPv6有几种协议报文?type是多少?举例说明

(1)目的不可达错误报文:type=1

(2)数据包过大错误报文:type=2

(3)时间超时错误报文:type=3

(4)参数错误报文:type=4

(5)信息报文:type=128、type=129

(7)RS type=133

(8)RA type=134

(9)NS type=135

(10)NA type=136

(11)redirect type=137

地址解析:NS组播请求FF02::1:FFXX:XXXXNA,单播响应

重复地址:NS组播请求FF02::1:FFXX.XXXXNA,组播响应FF02::1

路由发现:RS组播请求FF02::2,RA组播响应FF02::1

扩展问题6:ipv6中有ARP表项吗?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 玉龙网络新知社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ICMPv4和ICMPv6的区别?
  • ICMPv6报文格式报文中字段解释如下:
  • ICMPv6错误报文可以分为以下4种:
  • ICMPv6信息报文:
  • IPv6 NDP
    • (3)路由器发现:路由器发现功能用来发现与本地链路相连的设备,并获取 与地址自动配置相关的前缀和其他配置参数。
      • (4)重定向:当网关设备发现报文从其它网关设备转发更好,它就会发送重 定向报文告知报文的发送者,让报文发送者选择另一个网关设备
      • 扩展问题1:NDP被看作第3层的协议,在三层完成地址解析,主要带来以下几个好处?
      • 扩展问题2:NDP和ARP的区别?
      • 扩展问题3:IPv6收到了一个超大数据包会怎么处理?
      • 扩展问题4:RA可以分配哪些参数?
      • 扩展问题5:ICMPv6有几种协议报文?type是多少?举例说明
      • 扩展问题6:ipv6中有ARP表项吗?
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档