ICMPv6和NDP
  

王龙龙 161

{{ttag.title}}
⦁        在IPv4中,ICMP允许主机或设备报告差错情况。ICMP报文作为IP报文的数据部分,再封装上IP报文首部,组成完整的IP报文发送出去。常用的Ping、Tracert等命令都是基于ICMP实现的。
⦁        IPv6定义了ICMPv6(Internet Control Message Protocol for IPv6),除了提供类似ICMP的功能外,还有诸多扩展。邻居发现协议(Neighbor Discovery Protocol,以下简称NDP)便是基于ICMPv6实现的,作为IPv6的关键协议,NDP提供了如前缀发现、重复地址检测、地址解析、重定向等功能。
⦁        本课程详细介绍ICMPv6和NDP。


⦁        为了更有效地转发IP数据报文和提高数据报文交互成功的机会,在网络层使用ICMP协议。ICMP允许主机或设备报告差错情况和提供有关异常情况的报告。
⦁        ICMP消息:
⦁        ICMP消息封装在IP报文中,IP报文头部Protocol值为1时表示ICMP协议。
⦁        字段解释:
⦁        ICMP消息的格式取决于Type和Code字段,其中Type字段为消息类型,Code字段包含该消息类型的具体参数。
⦁        校验和字段用于检查消息是否完整。


⦁        ICMP的一个典型应用是Ping。Ping是检测网络连通性的常用工具,同时也能够收集其他相关信息。用户可以在Ping命令中指定不同参数,如ICMP报文长度、发送的ICMP报文个数、等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP报文,进行Ping测试。



ICMPv6概述
⦁        ICMPv6是IPv6的基础协议之一。
⦁        在IPv6报文头部中,Next Header字段值为58则对应为ICMPv6报文。
⦁        ICMPv6报文用于通告相关信息或错误。
⦁        ICMPv6报文被广泛应用于其它协议中,包括NDP、Path MTU发现机制等。
⦁        ICMPv6控制着IPv6中的地址自动配置、地址解析、地址冲突检测、路由选择、以及差错控制等关键环节。


⦁        ICMPv6报文载荷由ICMPv6报文类型决定,因报文类型的不同而不同。
⦁        Type:表明消息的类型。
⦁        Code:表示消息类型的细分。
⦁        Checksum:表示ICMPv6报文的校验和。



⦁        首先PC1用1500字节作为MTU向PC2发送IPv6数据包。
⦁        R1意识到数据包过大,出站接口MTU为1400字节,于是回复一个ICMPv6(Type=2)报文给PC1,指定MTU值为1400字节。
⦁        然后,PC1开始使用1400作为MTU发送IPv6数据。
⦁        数据包到达R2后,R2意识到出站接口MTU为1300字节,于是发送一个ICMPv6(Type=2)报文给PC1,指定MTU值为1300字节。
⦁        PC1开始使用1300作为MTU发送IPv6数据。



ICMPv6其它常用的报文
⦁        邻居发现(RFC2461和RFC4861)
⦁        Type=133   路由器请求(Router Solicitation)
⦁        Type=134   路由器公告(Router Advertisement)
⦁        Type=135   邻居请求(Neighbor Solicitation)
⦁        Type=136   邻居公告(Neighbor Advertisement)
⦁        Type=137   重定向  (Redirect)
⦁        组播侦听者发现协议(RFC2710和RFC3810)
⦁        Type=130   查询消息
⦁        Type=131   报告消息
⦁        Type=132   离开消息
⦁        Type=143   MLDv2报告消息






⦁        ipv6 nd ra { max-interval maximum-interval | min-interval minimum-interval }命令用来配置发送周期。




⦁        当PC1要传送数据包到PC2时,如果不知道PC2的链路层地址,则需要完成以下协议交互过程:
⦁        PC1发送一个NS报文到网络上,目的地址为PC2对应的被请求节点组播地址(FF02::1:FF84:EFDC),选项字段中带上PC1的链路层地址000D-88F8-03B0。
⦁        PC2侦听到该NS报文后,由于报文的目的地址FF02::1:FF84:EFDC,自己在该组播组,处理该报文;同时,根据NS报文的源地址和源链路层地址选项更新自己的邻居缓存表项。
⦁        PC2发送一个NA报文应答NS,同时在消息的目标链路层地址选项中带上自己的链路层地址0013-7284-EFDC。
⦁        PC1接收到NA报文后,获悉了PC2的链路层地址,创建一个目标节点的邻居缓存表项。
⦁        这样通过交互后,PC1和PC2就知道了对方的链路层地址,建立其对方的邻居缓存表项(类似于IPv4的ARP表),就可以相互通信了。



⦁        R1先发送NS报文,并生成缓存条目,此时,邻居状态为Incomplete。
⦁        若收到R2回复的NA报文,则邻居状态由Incomplete变为Reachable,否则固定时间后邻居状态由Incomplete变为Empty。
⦁        经过邻居可达时间(默认30s),邻居状态由Reachable变为Stale,即未知是否可达。
⦁        如果在Reachable状态,R1收到R2的非请求NA报文,且其中携带的R2的链路层地址和表项中不同,则邻居状态马上变为Stale。
⦁        在Stale状态若R1要向R2发送数据,则邻居状态由Stale变为Delay,并发送NS请求。
⦁        在经过一段固定时间后,邻居状态由Delay变为Probe,其间若有NA应答,则邻居状态由Delay变为Reachable。
⦁        在Probe状态,R1每隔一定时间间隔(默认1s)发送单播NS,发送固定次数后,有应答则邻居状态变为Reachable,否则邻居状态变为Empty。


⦁        重复地址检测是节点确定即将使用的地址是否被另一节点使用的过程。在节点自动配置某个接口的IPv6单播地址之前,必须在本地链路范围内验证要使用的地址是唯一的,并且未被其他节点使用过。只要NS报文发送到本地链路上(缺省发送一次NS报文),如果在规定时间内没有NA报文进行应答,则认为这个临时单播地址在本地链路上是唯一的,可以分配给接口;反之,这个临时地址是重复的,不能配置到接口。

⦁        特殊情况:有两台主机同时分配到同一个IP地址。假设PC1和PC2都想使用2000::1这个地址,那么进一步假设PC1先发送NS,PC2收到以后将不会发送NS了(当然也不会发送NA),直接停止使用2000::1这个地址,等待其他方式生成新的地址。如果同时收到NS报文,则都会放弃使用2000::1地址。


思考题:
⦁        (多选题)ICMPv6报文类型分为哪几大类?
⦁        差错报文
⦁        信息报文

⦁        其他报文
⦁        参数报文
⦁        (多选题) IPv6地址解析通过以下哪种报文实现?
⦁        RS
⦁        RA
⦁        NS
⦁        NA

打赏鼓励作者,期待更多好文!

打赏
暂无人打赏

王龙龙 发表于 2024-3-4 17:24
  

感谢分享,有助于工资和学习
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
技术笔记
干货满满
技术咨询
产品连连看
新版本体验
功能体验
标准化排查
GIF动图学习
自助服务平台操作指引
通用技术
2023技术争霸赛专题
运维工具
信服课堂视频
秒懂零信任
技术晨报
用户认证
答题自测
深信服技术支持平台
安装部署配置
SDP百科
设备维护
社区帮助指南
每日一记
项目案例
玩转零信任
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
云计算知识
原创分享
解决方案
sangfor周刊
VPN 对接
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

12
185
6

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人