当前位置: 首页 > news >正文

IPv6(五)

文章目录

  • IPv6协议
    • ICMPv6
    • NDP邻居发现

IPv6协议

ICMPv6

IPv6的基础协议之一

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

在IPv6中,ICMPv6除了提供ICMPv4常用的功能之外,还是其它一些功能的基础,如邻接点发现、无状态地址配置(包括重复地址检测)、PMTU发现等。

ICMPv6的协议类型号(即IPv6报文中的Next Header字段的值)为58

  • Type:表明消息的类型,0至127表示差错报文类型,128至255表示消息报文类型。
  • Code:表示此消息类型细分的类型。
  • Checksum:表示ICMPv6报文的校验和。
  • type:
    0-127表示差错报文类型
    128-255表示消息报文类型
    128 : Request
    129 : Reply
    133 : RS //寻找路由器的报文
    134 : RA //路由器发送的报文
    135 : NS //类似于ARP-Request报文
    136 : NA //类似于ARP-Reply报文
    137 : ICMPV6重定向

NDP邻居发现

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

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


邻居通告报文:

  • 邻居请求报文NS:类型字段值为135
  • 邻居通告报文NA:类型字段值为136
  • 在路由器发现中使用了两种ICMPv6报文:路由器通告和路由器请求报文:
  • 路由器通告RA:类型字段值为134
  • 路由器请求RS:类型字段值为133
  • 重定向使用了一种新的ICMPv6报文:重定向报文。重定向报文类型字段值为137




地址解析

类似于IPv4中的ARP协议

  • 基于ICMPv6实现
  • 包括NS报文和NA报文
#PC1 发送NS消息(135)请求
Source IP:自己的IPv6地址                 目的IP:PC2的请求节点组播地址#(物理接口的地址可以推出来请求节点组播地址)
Source MAC:自己的MAC                    目的MAC:33开头的组播MAC地址
target address:PC1的IP地址
Option:自己的MAC地址#PC2 回应NA消息(136)应答,回复的时候发送的是单播报文
Source IP:自己的IPv6地址                 目的IP:PC1的IPv6地址
Source MAC:自己的MAC                    目的MAC:PC1的MAC
target address:PC2的IP地址
Option:自己的MAC地址

IPv6定义了五种邻居状态

Empty状态为空白状态

  • 未完成(Incomplete)
  • 可达(Reachable)
  • 陈旧(Stale)
  • 延迟(Delay)
  • 探查(Probe)
#下面以A、B两个邻居节点之间相互通信过程中A节点的邻居状态变化为例(假设A、B之前从未通信),说明邻居状态迁移的过程。
1.A先发送NS报文,并生成缓存条目,此时邻居状态变为Incomplete。
2.若B回复NA报文,则邻居状态由Incomplete变为Reachable,如固定时间后未收到NA报文则邻居状态由Incomplete变为Empty,即删除表项。此状态可以通信
3.邻居链路空余固定时间后,邻居状态由Reachable变为Stale,即未知是否可达。
4.如果在Reachable状态,A收到B的非请求NA报文,且报文中携带的B的链路层地址(NAC地址)和表项中不同,则邻居状态马上变为Stale。
5.在Stale状态若A要向B发送数据,则邻居状态由Stale变为Delay,并发送NS请求。如果有NA应答,变成Reachable。
6.再经过一段固定时间后,邻居状态由Delay变为Probe,期间若有NA应答,则邻居状态由Delay变为Reachable。
7.在Probe状态,A每隔一定时间间隔发送单播NS,发送固定次数后,有应答则邻居状态变为Reachable,无应答则邻居状态变为Empty,即删除表项。dis ipv6 neighbors    //查看IPv6邻居状态debugging ipv6 nd    //开启Debug测试
terminal debugging    //终端显示Debug信息
terminal monitor    //监控显示Debug信息

DAD重复地址检测

IPv4使用免费ARP进行重复地址的检测、IPv6使用DAD进行地址冲突的检测

  • 基于ICMPv6实现

  • 包括 NS 报文和 NA 报文

  • 在进行DAD检测是,一个IPv6单播地址在分配给一个接口之后且通过重复地址检测之前称为试验地址(Tentative Address)。此时该接口不能使用这个试验地址进行单播通信,但是仍然会加入两个组播组:ALL-NODES组播组和实验地址所对应的Solicited-Node组播组。

  • IPv6重复地址检测技术和IPv4中的免费ARP类似:节点向一个自己即将使用的试验地址所在Solicited-Node组播组发送一个以该试验地址为请求的目标地址的NS报文,如果收到某个其他站点回应的NA报文,就证明该地址已被网络上使用,节点将不能使用该实验地址通讯,如果没有收到某个其他站点发送的NA报文,那么这个试验地址转换为正式地址就可以使用了

#DAD检测过程
1、PC1的IPv6地址为2001::1为新配置的地址,即试验地址,PC1向2001::1所在的 Solicited-Node 组播组发送一个以 2001::1 为请求的目标地址的NS报文进行冲突检测,由于2001::1报文的源地址为未指定地址,PC2收到该NS报文后,有两种处理方法(1)、如果PC2发现2001::1是自身的一个试验地址,则PC2放弃使用该地址作为接口地址,并且不会发送NA报文(2)、如果PC2发现2001::1是自己已经在使用的地址,PC2会向该地址所在的All-Node组播组发送一个NA报文,消息中包含			2001::1。之后PC1收到消息之后就会停止使用该地址



路由发现

  • 基于ICMPv6实现
  • 发现与本地链路相连的路由器
  • 获取与地址自动配置相关的前缀和其他配置参数
  • 包括RA和RS报文

在IPv6中,IPv6地址可以支持无状态的自动配置,即主机通过某种机制获取网络前缀信息,然后主机自己生成地址的接口标识部分。路由器发现功能是IPv6地址自动配置功能的基础,主要通过以下两种报文实现:

  • 路由器通告RA(Router Advertisement)报文:每台路由器为了让二层网络上的主机和路由器知道自己的存在,定时都会组播发送RA报文,RA报文中会带有网络前缀信息,及其他一些标志位信息。RA报文的Type字段值为134。
  • 路由器请求RS(Router Solicitation)报文:很多情况下主机接入网络后希望尽快获取网络前缀进行通信,那么此时主机可以立刻发送RS报文,网络上的路由器将回应RA报文。RS报文的Type字段值为133。


    RA消息的源IP:自己 的Link-local地址 目的地址是FF02::1
#当存在以下情况时,忽略RA发送的前缀
1、ICMPv6里的Option字段的Flag中的Auto未置位
2、前缀与已有地址前缀重复(包括Link-local地址)
3、RA报文选项中 Preferred lifetime 时间大于 Valid lifetime
4、前缀长度与接口ID长度之和不等于128位
#除以上情况外,主机获得前缀同时也获取一些相关的时间参数
1、Preferred time 发起通讯的有效时间
2、valid lifetime 原有通讯的有效时间
#主机会周期新的发送RA报文,并根据此报文来更新自己的时间参数




ICMPv6中的Flag字段

M位置1:表示有状态–DHCPv6
M位置0:表示无状态–RA消息自动获取
O位置1:表示通过无状态获取到 IP 地址,但是通过有状态的方式获取到其他信息、比如DNS




ICMPv6----RA消息中的Flag字段:

  1. Cur Hop Limit:64----该字段用于帮助主机完成跳数限制。当PC使用该RA通告的前缀构建IPv6地址后,该PC发送的IPv6报文的跳数限制被设置为该值(64)
  2. Managed address configuration----M位默认为0,0时收到该RA的主机使用RA中包含的IPv6前缀用于无状态地址自动配置
    ----使用如下命令,可将该值设置为1----ipv6 nd autoconfig managed-address-flag
    ----当该值为1时,收到该RA的主机将采用有状态自动配置,也就是DHCPv6的方式来获取IPv6地址
  3. Other Configuration,默认为0,表示主机不应该使用有状态自动配置机制来配置除了IPv6地址外的其他参数
    ----使用命令:ipv6 nd autoconfig other-flag----将该值置1,则主机需使用DHCPv6来配置除了IPv6地址外的其他信息,如DNS,域名等,但是IPv6地址还是无状态自动获取的
  4. Router Lifetime:1800----单位是秒,主机将路由器视为缺省路由器的时间。该计时器到计数为0时,该路由器将不会出现在主机的缺省网关列表中



    对于M位和O位,配置强制置1命令之后需要重新使能一下接口来进行实现

Author:DC

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【白皮书下载】分布式功能安全的创新与突破
  • 自监督的主要学习方法
  • React学习day08-useReducer、useMemo、memo、useCallback、forwardRef、useInperativeHandle
  • C++进阶|多态知识点详解及经典面试题总结
  • 执行matlab后进行RTL功能仿真check
  • 【数学二】极限概念与性质
  • C++——类和对象(3)
  • ppt文件怎么压缩变小一些?8种压缩PPT文件的方法推荐
  • 网络安全应急响应概述
  • 配置Red Hat Enterprise Linux 7 YUM源
  • 免费音乐剪辑软件大揭秘:2024 大学生的音乐创作利器
  • CTFshow--爆破靶场全攻略
  • Python 课程14-TensorFlow
  • 张养浩,文坛政坛的双重巨匠
  • string类(C++)
  • .pyc 想到的一些问题
  • IP路由与转发
  • Java IO学习笔记一
  • Javascript弹出层-初探
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • nodejs:开发并发布一个nodejs包
  • Promise面试题,控制异步流程
  • SQLServer之索引简介
  • windows下使用nginx调试简介
  • 那些年我们用过的显示性能指标
  • 山寨一个 Promise
  • 思维导图—你不知道的JavaScript中卷
  • 小程序测试方案初探
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • Java数据解析之JSON
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ​补​充​经​纬​恒​润​一​面​
  • #define、const、typedef的差别
  • $.ajax中的eval及dataType
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (3)STL算法之搜索
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (回溯) LeetCode 40. 组合总和II
  • (转)winform之ListView
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • (轉貼) UML中文FAQ (OO) (UML)
  • .aanva
  • .Net多线程Threading相关详解
  • .NET中 MVC 工厂模式浅析
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • [ NOI 2001 ] 食物链
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • []error LNK2001: unresolved external symbol _m
  • [1] 平面(Plane)图形的生成算法
  • [ArcPy百科]第三节: Geometry信息中的空间参考解析
  • [C++]运行时,如何确保一个对象是只读的
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
  • [dfs] 图案计数
  • [Electron]ipcMain.on和ipcMain.handle的区别