HCIE学习笔记:IPV6 地址、ICMP V6、NDP 、DAD (更新补充中)
系列文章目录
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 系列文章目录
- 前言
- 一、IPV4、IPv6包头对比
- 1. IPV4包头
- 2.IPv6包头
- 3.IPV6扩展包头
- 二、IPV6基础知识地址结构、地址分类
- 三、ICMPV4、ICMPV6
- 1、 lnternet控制消息协议
- 2、ICMP差错检测
- 3、ICMP错误报告
- 四、 ICMPv6的应用
- 1、差错报文
- 1.1、ICMPV6信息报文应用-Ping (ICMPv6 type:128-129)
- 1.2、ICMPv6差错报文应用-Path MTU发现(ICMPv6 type:2)
- 2、信息报文(NDP使用133-137的ICMP报文)
- 2.1、ICMPv6消息报文应用:NDP包括 (ICMPv6 type:133-137)
- 2.2、NDP邻居发现协议的功能
- 1、路由器发现: (使用ICMP的RS+RA报文)发现链路上的路由器,获得路由器通告的信息。
- 1 .1路由器发现流程-主机请求触发
- 1.2、路由器发现流程-路由器周期性发送
- 2、地址解析:请求目的网络地址对应的数据链路层地址,类似IPv4的ARP。(使用ICMP的NS+NA报文)
- 3、无状态自动配置:通过路由器通告的地址前缀,终端自动生成IPv6地址。
- 4、重定向:告知其他设备,到达目标网络的更优下一跳。
- 五、 IPv6单播地址业务流程
- 1、邻居发现协议NDP
- 2、地址配置
- 3、DAD Duplicate Address Detection | 重复地址检测】
- 4、地址解析
- 总结
前言
一、IPV4、IPv6包头对比
1. IPV4包头
IHL:首部长度,如果不带Option字段,则为20,最长为60,该值限制了记录路由选项。以4字节为一个单位
Type of Service:服务类型。只有在有QoS差分服务要求时这个字段才起作用。
Total Length(16bit):,整个IP数据报的长度,包括首部和数据之和,单位为字节,最长65535,总长度必须不超过最大传输单元MTU。
**Identification (16bit):**标识,主机每发一个报文,加1,分片重组时会用到该字段。
Flags(3bit):
Bit 0: 保留位,必须为0。
Bit 1: DF(Don’t Fragment),能否分片位,0表示可以分片,1表示不能分片。
Bit 2: MF(More Fragment),表示是否该报文为最后一片,0表示最后一片,1代表后面还有。
Fragment Offset(12bit)片偏移: 分片重组时会用到该字段。表示较长的分组在分片后,某片在原分组中的相对位置。以8个字节为偏移单位。
Time to Live(8bit)生存时间: 可经过的最多路由数,即数据包在网络中可通过的路由器数的最大值。
Protocol(8bit)协议: 下一层协议。指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个进程处理。
常见值:0: 保留Reserved
1: ICMP, Internet Control Message [RFC792]
2: IGMP, Internet Group Management [RFC1112]
3: GGP, Gateway-to-Gateway [RFC823]
47: GRE (General Routing Encapsulation)
50: ESP Encap Security Payload [RFC2406]
51: AH (Authentication Header) [RFC2402] *
Header Checksum 16比特 首部检验和,只检验数据包的首部,不检验数据部分。这里不采用CRC检验码,而采用简单的计算方法。
Source Address 32比特 源IP地址。
Destination Address 32比特 目的IP地址。
Options 可变 选项字段,用来支持排错,测量以及安全等措施,内容丰富(请参见下表)。选项字段长度可变,从1字节到40字节不等,取决于所选项的功能。
Padding 可变 填充字段,全填0。
2.IPv6包头
Version 4比特 4:表示为IPV4;6:表示为IPV6。
Traffic class 8比特 :流量类别。该字段及其功能类似于IPv4的业务类型字段。该字段以区分业务编码点(DSCP)标记一个IPv6数据包,以此指明数据包应当如何处理。
Flow Label 20比特 :流标签。该字段用来标记IP数据包的一个流,当前的标准中没有定义如何管理和处理流标签的细节。
Payload length 16比特 :该字段表示有效载荷的长度,有效载荷是指紧跟IPv6基本报头的数据包,包含IPv6扩展报头。
Next header 8比特 :下一报头,该字段指明了跟随在IPv6基本报头后的扩展报头的信息类型。
Hop limit 8比特 :跳数限制,该字段定义了IPv6数据包所能经过的最大跳数,这个字段和IPv4中的TTL字段非常相似。
Source Address 128比特: 该字段表示该报文的源地址。
Destination Address 128比特 :该字段表示该报文的目的地址。
Extension Headers 可变 扩展报头。IPv6取消了IPv4报头中的选项字段,并引入了多种扩展报文头,在提高处理效率的同时还增强了IPv6的灵活性,为IP协议提供了良好的扩展能力。当超过一种扩展报头被用在同一个分组里时,报头必须按照下列顺序出现:
3.IPV6扩展包头
二、IPV6基础知识地址结构、地址分类
1、 lpv6;128bit 包含2的128次方个lp地
2、 lpv6使用【:分十六进行】的形式进行表示
3、与IPv4地址类似,IPv6也用“IPv6地址/掩码长度”的方式来表示IPv6地址。
优点
lpv6的中间转发路由器不再作分片和重组的工作,整条链路采用路径MTU发现机制,整个链路使用最小MTU发送数据
4、IPv6单播地址接口标
- 手工配置
- 系统自动生成 通过IEEE
- EUI-64规范生成
三、ICMPV4、ICMPV6
NDP协议中一共有五种ICMPv6报文类型,分别是RS,RA,NS,NA和Redirect报文
1、 lnternet控制消息协议
ICMP【lnternet control Message protocol】是lp协议的辅助协议
ICMP协议用来在网络设备间传递各种差错和控制信息,对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。
ICMPv6报文需要封装成IPv6数据报进行发送:
Type 1字节 定义了报文的类型,该字段决定了其它部分的报文格式。
Code 1字节 该字段依赖TYPE字段,在TYPE字段的基础上,它被用来在基本类型上创建更详细的报文等级。
Checksum 2字节用来在ICMPv6报文中检验数据和部分IPv6首部的完整性。
2、ICMP差错检测
ICMP Echo消息常用于诊断源和目的地之间的网络连通性,同时还可以提供其他信息,如报文往返时间等。
ICMP的一个典型应用是Ping。Ping是检测网络连通性的常用工具,同时也能够收集其他相关信息。
用户可以在Ping命令中指定不同参数,如ICMP报文长度、发送的ICMP报文个数、等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP报文,进行Ping测试
3、ICMP错误报告
ICMP定义了各种错误消息,用于诊断网络连接性问题;根据这些错误消息,源设备可以判断出数据传输失败的原因。
四、 ICMPv6的应用
报文分为两类:
ICMPv6报文可以被分为2大类:差错报文与消息报文。
当TYPE取值范围在0~127范围时,被标识为差错报文,
当TYPE取值范围在128~255范围时,则标识为消息报文。
1、差错报文
1、差错报文【Error Messages】I也称为差错消息I Type字段最高bit为0I也就是ICMPv6 Type=[0 I127]
2、差错消息用于报告在转发lpv6数据包过程中出现的错误I如常见的目的不可达、超时等等
1.1、ICMPV6信息报文应用-Ping (ICMPv6 type:128-129)
Ping基于ICMPV6信息报文实现
Echo Request:用于发送到目标节点,以使目标节点立即发回一个Echo Reply应答报文。
Echo Reply:当收到一个Echo Request报文时,ICMPV6会用Echo Reply报文响应
1.2、ICMPv6差错报文应用-Path MTU发现(ICMPv6 type:2)
• 在IPv6中,中间转发设备不对IPv6报文进行分片报文的分片将在源节点进行。
• 依赖PMTUD,数据的发送方可以使用所发现到的最优PMTU与目的地节点进行通信,
可以避免数据包在从源传输到目的的过程之中,被中途的路由器分片而导致性能的下降。1.首先PC1用1500字节作为MTU向PC2发送IPv6数据包。2.R1意识到数据包过大,出站接口MTU为1400字节,于是回复一个ICMPv6(Type=2)报文给PC1,指定MTU值为1400字节。3.然后,PC1开始使用1400作为MTU发送IPv6数据4.数据包到达R2后,R2意识到出站接口MTU为1300字节,于是发送一个ICMPv6(Type=2)报文给PC1,指定MTU值为1300字节5.PC1开始使用1300作为MTU发送IPv6数据
2、信息报文(NDP使用133-137的ICMP报文)
1、信息报文【lnformation Messages】 I也称为信息消息IType字段最高bit为1I也就是ICMPv6 Type=[128 I255]
2、信息报文可以用来实现同—链路上节点间的通信和子网内的组播成员管理等
2.1、ICMPv6消息报文应用:NDP包括 (ICMPv6 type:133-137)
2.2、NDP邻居发现协议的功能
1、路由器发现: (使用ICMP的RS+RA报文)发现链路上的路由器,获得路由器通告的信息。
• 路由器发现可以同时实现以下三个功能:○ 路由器发现(Router Discovery):主机定位邻居路由器以及选择哪一个路由器作为缺省网关的过程。○ 前缀发现(Prefix Discovery):主机发现本地链路上的一组IPv6前缀的过程,用于主机的地址自动配置。○ 参数发现(Parameter Discovery):主机发现相关操作参数的过程,如输出报文的缺省跳数限制、地址配置方式等信息。
1 .1路由器发现流程-主机请求触发
当主机启动时,主机会向本地链路范围内所有的路由器发送RS报文,触发路由器响应RA报文。主机发现本地链路上的路由器后,自动配置缺省路由器,建立缺省路由表、前缀列表和设置其它的配置参数。
1.2、路由器发现流程-路由器周期性发送
• 对于定期发送的RA报文,其地址有如下要求:○ Source Address:必须是发送接口的链路本地地址。○ Destination Address : FF02..1
2、地址解析:请求目的网络地址对应的数据链路层地址,类似IPv4的ARP。(使用ICMP的NS+NA报文)
• 在三层完成地址解析,主要带来以下几个好处○ 地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议。○ 可以使用三层的安全机制避免地址解析攻击。○ 使用组播方式发送请求报文,减少了二层网络的性能压力。
• 当PC1要传送数据包到PC2时,如果不知道PC2的链路层地址,则需要完成以下协议交互过程:
○ PC1发送一个NS报文到网络上,目的地址为PC2对应的被请求节点组播地址(FFO2::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表),就可以相互通信了。
3、无状态自动配置:通过路由器通告的地址前缀,终端自动生成IPv6地址。
重复地址检测DAD:获得地址后,进行地址重复检测,确保地址不存在冲突。
• 重复地址检测(Duplicate Address Detect,DAD)是指接口在使用某个IPv6地址之前,需要先探测是否有其它的节点使用了该地址,从而确保网络中没有两个相同的单播地址。
• 接口在启用任何一个单播IPv6地址前都需要先进行DAD,包括Link-Local地址。
发送NS如果规定时间没没有NA应答,认为本地链路上唯一
4、重定向:告知其他设备,到达目标网络的更优下一跳。
重定向是指网关设备发现报文从其它网关设备转发更优,它就会发送重定向报文告知报文的发送者,让报文发送者选择另一个网关设备。
五、 IPv6单播地址业务流程
一个接口在发送IPv6报文之前要经历地址配置、DAD、地址解析这三个阶段,其中NDP【Neighbor Discovery Protocol | 邻居发现协议】在整个流程中扮演了重要角色
1、邻居发现协议NDP
邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议。
邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)和ICMP路由器发现(Router Discovery),它定义了使用ICMPv6报文实现地址解析,邻居不可达性检测,重复地址检测,路由器发现,重定向以及ND代理等功能。
2、地址配置
全球单播地址和链路本地地址是接口上最常见的IPv6单播地址,一个接口上可以配置多个IPv6地址
全球单播地址
- 手工静态配置
▫ 采用EUI-64格式形成:接口的IPv6地址的前缀是所配置的前缀,而接口标识符
则由接口自动生成
▫ 手工配置:用户手工配置IPv6全球单播地址- 有状态地址自动配置(不需要lpv6地址分配服务器)
▫ 有状态地址自动配置基于DHCPv6来实现- 无状态地址自动配置(需要lpv6地址分配服务器)
▫ 无状态地址自动配置方式基于NDP来实现
lpv6地址无状态自动配置过程
链路本地地址
- 手工配置
- 系统生成
- 根据EUI-64规范动态生成
3、DAD Duplicate Address Detection | 重复地址检测】
类似于IPv4中的免费ARP检测,用于检测当前地址是否与其它接口冲突
4、地址解析
类似于IPv4中的ARP请求,通过ICMPv6报文形成IPv6地址与数据链路层地址【一般是MAC地址】的映射关系
总结
提示:这里对文章进行总结:
相关文章:

HCIE学习笔记:IPV6 地址、ICMP V6、NDP 、DAD (更新补充中)
系列文章目录 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、IPV4、IPv6包头对比1. IPV4包头2.IPv6包头3.IPV6扩展包头 二、IPV6基础知识地址结构、地址分类三、ICMPV4、ICMPV61、 lnternet控…...

人工智能】Transformers之Pipeline(九):物体检测(object-detection)
目录 一、引言 二、物体检测(object-detection) 2.1 概述 2.2 技术原理 2.3 应用场景 2.4 pipeline参数 2.4.1 pipeline对象实例化参数 2.4.2 pipeline对象使用参数 2.4 pipeline实战 2.5 模型排名 三、总结 一、引言 pipel…...

[SWPUCTF 2021 新生赛]easy_md5
分析代码:1.包含flag2.php 2.GET传name,POST传password $name ! $password && md5($name) md5($password) 属于MD5绕过中的php 弱类型绕过 解题方法: 方法一 import requests# 网站的URL url "http://node7.anna.nssctf.cn:28026&q…...

Redis面试题大全
文章目录 Redis有哪几种基本类型Redis为什么快?为什么Redis6.0后改用多线程?什么是热key吗?热key问题怎么解决?什么是热Key?解决热Key问题的方法 什么是缓存击穿、缓存穿透、缓存雪崩?缓存击穿缓存穿透缓存雪崩 Redis…...

【langchain学习】BM25Retriever和FaissRetriever组合 实现EnsembleRetriever混合检索器的实践
展示如何使用 LangChain 的 EnsembleRetriever 组合 BM25 和 FAISS 两种检索方法,从而在检索过程中结合关键词匹配和语义相似性搜索的优势。通过这种组合,我们能够在查询时获得更全面的结果。 1. 导入必要的库和模块 首先,我们需要导入所需…...

【C语言】预处理详解(上)
文章目录 前言1. 预定义符号2. #define 定义常量3. #define定义宏4. 带有副作用的宏参数5. 宏替换的规则 前言 在讲解编译和链接的知识点中,我提到过翻译环境中主要由编译和链接两大部分所组成。 其中,编译又包括了预处理、编译和汇编。当时,…...

uni-app内置组件(基本内容,表单组件)()二
文章目录 一、 基础内容1.icon 图标2.text3.rich-text4.progress 二、表单组件1.button2.checkbox-group和checkbox3.editor 组件4.form5.input6.label7.picker8.picker-view 和 picker-view-column9.radio-group 和 radio10.slider11.switch12.textarea 一、 基础内容 1.icon…...

linux搭建redis超详细
1、下载redis包 链接: https://download.redis.io/releases/ 我以7.0.11为例 2、上传解压 mkdir /usr/local/redis tar -zxvf redis-7.0.11.tar.gz3、进入redis-7.0.11,依次执行 makemake install4、修改配置文件redis.conf vim redis.conf为了能够远程连接redis…...

Flink-DataWorks第二部分:数据集成(第58天)
系列文章目录 数据集成 2.1 概述 2.1.1 离线(批量)同步简介 2.1.2 实时同步简介 2.1.3 全增量同步任务简介 2.2 支持的数据源及同步方案 2.3 创建和管理数据源 文章目录 系列文章目录前言2. 数据集成2.1 概述2.1.1 离线(批量)同步…...

4个从阿里毕业的P7打工人,当起了包子铺的老板
吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247483727&idx1&sndb05d8c1115a4539716eddd9fde4e5c9&chksmc0e47813f793f105017fb8551c9b996dc7782987e19efb166ab665f44ca6d900210e6c4c0281&scene21#wechat_redirect 《网安面试指南》h…...

javaweb_07:分层解耦
一、三层架构 (一)基础 在请求响应中,将代码都写在controller中,看起来内容很复杂,但是复杂的代码总体可以分为:数据访问、逻辑处理、接受请求和响应数据三个部分。在程序中我们尽量让一个类或者一个方法…...

调用 Python 开源库,获取油管英文视频的手动或自动英文srt字幕,以及自动中文简体翻译srt字幕
前提条件 非常抱歉,这个程序就是个雏形,非常不完善,输入需要手动编辑,凑活着可以用,请自己完善吧。 开源声明:此文代码引用了一个开源MIT License的Python库,其他代码是本人自写自用。你可以随…...

UDP协议实现通信与数据传输(创建客户端和服务器)
目录 一、UDP (传输层,用户数据报协议) 二、服务器Server的创建 三、客户端Client的创建 四、效果实现(描述) 一、UDP (传输层,用户数据报协议) UDP(User Datagram Pr…...

【红黑树】
红黑树 小杨 红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍&am…...

排序算法——简单选择排序
一、算法原理 简单选择排序是一种基本的排序算法,其原理是每次从未排序的元素中选择最小(或最大)的元素,然后与未排序部分的第一个元素交换位置,直到所有元素都被排序。 二、算法实现流程 简单选择排序法(Simple Se…...

OpenAI API推出结构化输出功能
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

Python 异步编程:Sqlalchemy 异步实现方式
SQLAlchemy 是 Python 中最流行的数据库工具之一,在新版本中引入了对异步操作的支持。这为使用异步框架(如 FastAPI)开发应用程序带来了极大的便利。在这篇文章中,简单介绍下 SQLAlchemy 是如何利用 Greenlet 实现异步操作的。 什…...

父类引用指向子类对象
在 Java 中,父类引用可以指向子类对象,这是多态的一种表现。这种特性允许你使用父类的引用来操作子类对象,从而实现更灵活和可扩展的代码设计。 基本概念 多态:父类引用可以指向子类对象。这使得你可以用统一的接口处理不同的对象…...

分享一个基于Spring Boot的面向社区的智能化健康管理系统的设计与实现(源码、调试、LW、开题、PPT)
💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…...

【扒代码】reduction参数是什么
model DensityMapRegressor(in_channels256, reduction8)reduction 参数在 DensityMapRegressor 类中用于决定模型在上采样过程中的层级配置。具体来说,它决定了上采样过程中使用多少个 UpsamplingLayer,从而影响输出的分辨率。 reduction 参数的作用 …...

Python,Spire.Doc模块,处理word、docx文件,极致丝滑
Python处理word文件,一般都是推荐的Python-docx,但是只写出一个,一句话的文件,也没有什么样式,就是36K。 再打开word在另存一下,就可以到7-8k,我想一定是python-docx的问题,但一直没…...

redis的安装与命令
一、redis与memcache总体对比 1.性能 Redis:只使用单核,平均每一个核上Redis在存储小数据时比Memcached性能更高。 Memcached:可以使用多核,而在100k以上的数据中,Memcached性能要高于Redis。 2.内存使用效率 Mem…...

【C++】特殊类设计类型转换
目录 💡前言一,特殊类设计1. 请设计一个类,不能被拷贝2. 请设计一个类,只能在堆上创建对象3. 请设计一个类,只能在栈上创建对象4. 请设计一个类,不能被继承5. 请设计一个类,只能创建一个对象(单…...

为git 命令行 设置代理环境变量
http://t.csdnimg.cn/cAxkg 国内需要修改pinoko根目录下gitconfig文件,添加 [http]proxy http://127.0.0.1:1080 [https]proxy https://127.0.0.1:1080或者通过命令行配置: git config --global http.proxy http://127.0.0.1:1080 git config --glo…...

自定义linux某些常见配置
1.当前路径 echo "PS1\u\h:\w\$ " >> /etc/profile source /etc/profile 2.ssh使能 1.开启openssh 2.权限赋予chown root.root /var/empty/ 3.开发板作为server echo "PermitRootLogin yes" >> /etc/ssh/sshd_config 3开机自启动脚本 1.init…...

告别手动操作!KeyMouseGo实现自动化工作流
前言 在这个快节奏的时代,我们每天都在与电脑打交道,重复着那些繁琐而单调的操作;你是否曾想过,能让电脑自己完成这些任务,而你则悠闲地喝着咖啡,享受着生活?今天,就让我们一起揭开一…...

大型语言模型微调 新进展-4篇 论文
1. Brevity is the soul of wit: Pruning long files for code generation 发布时间:2024-06-29链接:https://arxiv.org/abs/2407.00434机构:伦敦大学学院 (UCL) 本研究针对大型语言模型的代码生成任务中的数据清理问题进行了探索。研究发现…...

专业课140+杭电杭州电子科技大学843信号与系统考研经验电子信息与通信工程真题,大纲,参考书。
顺利上岸杭电,由于专业课考的不错140,群里不少同学希望分享一点经验,回头看看这一年考研复习,确实有得有失,总结一下自己的专业课复习经验,希望对大家有帮助,基础课考的没有专业好,而…...

php 中 (0 == ‘abc‘) 为真
https://andi.cn/page/621653.html...

MacOS Anaconda 安装教程及虚拟环境创建
一、下载 Anaconda 1、Anaconda 官网 2、清华大学开源软件镜像站 点 Date 按时间排序,根据自己 Mac 芯片类型下载对应最新版本的。 Intel 芯片的下载 x86_64 版本的Apple m1 芯片的下载 arm64 版本的 二、安装 Anaconda 将安装包下载到本地后,双击安…...