IPv6详解

news2024/11/25 9:24:51

目录:
第一部分 IPv6的诞生背景和引起的主要变化
第二部分 IPv6数据报的基本首部和扩展首部
第三部分 IPv6地址
第四部分 IPv4向IPv6过渡

第一部分 IPv6的诞生背景和引起的主要变化

一.IPv6的诞生背景

  • IPv4存在设计缺陷:
    • IPv4的设计者最初并没有想到该协议会在全球范围内广泛使用,因此 IPv4地址的长度规定为他们认为足够长的32比特。
    • IPv4地址早期的编址方法(分类的IPv4地址和划分子网的IPv4地址)也不够合理,造成IPv4地址资源的浪费。

二.IPv6引起的主要变化

在这里插入图片描述

第二部分 IPv6数据报的基本首部和扩展首部

IPv6数据报由基本首部和有效载荷组成,有效载荷又由扩展首部和数据部分组成
在这里插入图片描述
注意:所有的扩展首部并不属于IPv6数据报的首部,它们与其后面的数据部分合起来构成有效载荷(payload,也称为净负荷)

IPv6和IPv4的组成对比:

  • IPv6将IPv4数据报首部中不必要的功能取消了,这使得IPv6数据报基本首部中的字段数量减少到只有8个
    • 但由于IPv6地址的长度扩展到了128比特,因此使得IPv6数据报基本首部的长度反而增大到了40字节,比IPv4数据报首部固定部分的长度(20字节)增大了20字节。
1.取消了首部长度字段,因为IPv6数据报的首部长度是固定的40字节。
2.取消了区分服务((服务类型)字段,因为IPv6数据报首部中的通信量类和流标号字段实现了区分服务字段的功能。
3.取消了总长度字段,改用有效载荷长度字段。这是因为IPv6数据报的首部长度是固定的40字节,只有其后面的有效载荷长度是可变的。
4.取消了标识、标志和片偏移字段,因为这些功能已包含在IPv6数据报的分片扩展首部中。
5.把生存时间TTL字段改称为跳数限制字段,这样名称与作用更加一致。
6.取消了协议字段,改用下一个首部字段。
7.取消了首部检验和字段,这样可以加快路由器处理IPv6数据报的速度。
8.取消了选项字段,改用扩展首部来实现选项功能。

一.IPv6数据报的基本首部

版本字段:长度为4比特,用来表示lP协议的版本。对于IPv6该字段的值是6。

通信量类字段:长度为8比特,该字段用来区分不同的IPv6数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。

  • 流标号字段:长度为20比特。
    • IPv6提出了的抽象概念。
    • 流”就是因特网上从特定源点到特定终点(单
      播或多播)的一系列IPv6数据报(如实时音视频数据的传送),而在这个“流”所经过的路径上的所有路由器都保证指明的服务质量。
    • 所有属于同一个流的IPv6数据报都具有同样的流标号。换句话说,流标号用于资源分配。
    • 流标号对于实时音视频数据的传送特别有用,但对于传统的非实时数据,流标号则没有用处,把流标号字段的值置为0即可

  • 有效载荷长度字段:长度为16比特,它指明IPv6数据报基本首部后面的有效载荷(包括扩展首部和数据部分)的字节数量
    • 该字段以字节为单位,最大取值为65535,因此IPv6数据报基本首部后面的有效载荷的最大长度为65535字节。

  • 下一个首部字段:长度为8比特。该字段相当于IPv4数据报首部中的协议字段或可选字段
    • 当IPv6数据报没有扩展首部时,该字段的作用与IPv4的协议字段一样,它的值指出了IPv6数据报基本首部后面的数据是何种协议数据单元PDU。
    • 当IPv6数据报基本首部后面带有扩展首部时,该字段的值就标识后面第一个扩展首部的类型。

  • 跳数限制字段:长度为8比特。该字段用来防止IPv6数据报在因特网中永久兜圈
    • 源点在每个IPv6数据报发出时即设定某个跳数限制(最大255跳)。
    • 每个路由器在转发IPv6数据报时,要先把跳数限制字段中的值减1。当跳数限制的值为0时,就把这个IPv6数据报丢弃(即不转发)。

  • 源地址字段和目的地址字段:长度都为128比特。分别用来填写IPv6数据报的发送端的IPv6地址和接收端的IPv6地址。

二.IPv6数据报的扩展首部

  • IPv4数据报如果在其首部中使用了选项字段,则在数据报的整个传送路径中的全部路由器,都要对选项字段进行检查,这就降低了路由器处理数据报的速度
  • 实际上,在路径中的路由器对很多选项是不需要检查的。因此,为了提高路由器对数据报的处理效率,IPv6把原来IPv4首部中的选项字段都放在了扩展首部中,由路径两端的源点和终点的主机来处理,而数据报传送路径中的所有路由器都不处理这些扩展首部(除逐跳选项扩展首部)。

在[RFC 2460]中定义了以下六种扩展首部:

(1)逐跳选项
(2)路由选择
(3)分片
(4)鉴别
(5)封装安全有效载荷
(6)目的站选项

每一个扩展首部都由若干个字段组成,它们的长度也各不相同。
所有扩展首部中的第一个字段都是8比特的下一个首部字段。该字段的值指出在该扩展首部后面是何种扩展首部。
当使用多个扩展首部时,应按以上的先后顺序出现

第三部分 IPv6地址

一.IPv6地址空间大小

在这里插入图片描述

二.IPv6地址的表示方法

冒号十六进制记法
在这里插入图片描述
更加简洁的计法:

  • 在IPv6地址的冒号十六进制记法的基础上,再使用“左侧零”省略“连续零”压缩,可使IPv6地址的表示更加简洁
    • “左侧零”省略是指两个冒号间的十六进制数中最前面的一串0可以省略不写。
    • “连续零”压缩是指一连串连续的0可以用一对冒号取代。
  • 在一个IPv6地址中只能使用一次“连续零”压缩,否则会导致歧义。
    在这里插入图片描述
  • 冒号十六进制记法还可结合点分十进制的后缀。这在IPv4向IPv6过渡阶段非常有用。
  • CIDR的斜线表示法在IPv6中仍然可用。

三.IPv6地址的分类

IPv6数据报的目的地址有三种基本类型:

单播 :传统的点对点通信

多播:一点对多点的通信。
数据报发送到一组计算机中的每一个。IPv6没有采用广播的术语,而将广播看作多播的一个特例。

任播:这是IPv6新增的一种类型。
任播的终点是一组计算机,但数据报只交付其中的一个,通常是按照路由算法得出的距离最近的一个。

[RFC 4291]对IPv6地址进行了分类:

  • 未指明地址

    • 128个比特为“全0”的地址,可缩写为两个冒号“:.”。
    • 该地址不能用作目的地址,只能用于还没有配置到一个标准IPv6地址的主机用作源地址。
  • 环回地址;

    • 最低比特为1,其余127个比特为“全0”,即0:0:0:0:0:0:0:1,可缩写为:1。
    • 该地址的作用与IPv4的环回地址相同。
  • 多播地址:

    • 最高8比特为“全1”的地址,可记为FFO0::/8。
    • IPv6多播地址的功能与IPv4多播地址相同。
    • 这类地址占IPv6地址空间
  • 本地链路单播地址:

    • 最高10比特为1111111010的地址,可记为FE80::/10。
    • 即伸用户网络没有连接到因特网,但仍然可以使用TCPIP协议。连接在这种网络上的主机都可以使用本地链路单播地址进行通信,但不能和因特网上的其他主机通信。
  • 全球单播地址:

    • 全球单播地址是使用得最多的一类地址。
    • IPv6全球单播地址采用三级结构,这是为了使路由器可以更快地查找路由。
      在这里插入图片描述

第四部分 IPv4向IPv6过渡

  • 因特网上使用IPv4的路由器的数量太大,要让所有路由器都改用IPv6并不能一蹴而就。因此,从IPv4转变到IPv6只能采用逐步演进的办法
  • 另外,新部署的IPv6系统必须能够向后兼容,也就是IPv6系统必须能够接收和转发IPv4数据报,并且能够为IPv4数据报选择路由。
  • 下面介绍两种由IPv4向IPv6过渡的策略:
    • 使用双协议栈
    • 使用隧道技术

一.双协议栈

  • 双协议栈(Dual Stack)是指在完全过渡到IPv6之前,使一部分主机或路由器装有IPv4和IPv6两套协议栈
  • 双协议栈主机或路由器既可以和IPv6系统通信,又可以和IPv4系统通信。
  • 双协议栈主机或路由器记为IPv6/IPv4,表明它具有一个IPv6地址和一个IPv4地址
    • 双协议栈主机在与IPv6主机通信时采用IPv6地址,而与IPv4主机通信时采用IPv4地址。
    • 双协议栈主机通过域名系统DNS查询目的主机采用的IP地址:
      • 若DNS返回的是IPv4地址,则双协议栈的源主机就使用IPv4地址
      • 若DNS返回的是IPv6地址,则双协议栈的源主机就使用IPv6地址。

在这里插入图片描述

二.隧道技术

  • 隧道技术(Tunneling)的核心思想是:
    • 当IPv6数据报要进入IPv4网络时,将IPv6数据报重新封装成IPv4数据报,即整个IPv6数据报成为IPv4数据报的数据载荷。
    • 封装有IPv6数据报的IPv4数据报在IPv4网络中传输。
    • 当IPv4数据报要离开IPv4网络时,再将其数据载荷(即原来的IPv6数据报)取出并转发到IPv6网络。
      在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1186747.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leetcode做题笔记226. 翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:root [2,1,3] 输出:[2,3,1]示例 3&#x…

8086读取键盘-磁盘输入

文章目录 前言1.从键盘读数据2.磁盘读数据 前言 想过一个问题没有, 8086是如何从键盘中接受输入的? 8086如何将字符在显示器上显示的? 8086如何从磁盘中读取数据的? 上面的问题都是没有操作系统的时候,比如bios的那段…

VSCode使用插件Github Copilot进行AI编程

演示示例 函数封装 根据上下文 根据注释 详情请看GitHub Copilot 安装插件 在VS Code中安装插件 GitHub Copilot 登录账号 点击VS code左下角账户图标,点击【Sign in】,会自动在浏览器打开Github登录页,登录具有 Github Copilot 服务的…

Wireshark分析tcp交互过程

三次握手 客户端发起请求 Tcp段长度为575字节,seq1,ack1,next_seq576 服务器响应: Tcp段长度为175字节,seq1,ack576,next_seq176 客户端响应: Tcp段长度523字节,seq576&…

OpenGL_Learn08(坐标系统)

目录 1. 概述 2. 局部空间 3. 世界空间 4. 观察空间 5. 剪裁空间 6. 初入3D 7. 3D旋转 1. 概述 OpenGL希望在每次顶点着色器运行后,我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说,每个顶点的x,…

2023.11.7 Spring 依赖注入的三大方式

目录 前言 属性注入&#xff08;Autowired&#xff09; Setter 注入 构造方法注入 Resource Autowired 和 Resource 的区别 Autowired 和 Resource 查找 Bean 对象的区别 前言 配置文件 ​ <?xml version"1.0" encoding"UTF-8"?> <beans …

Park和UnPark底层原理

文章目录 1. 简介2. 底层原理3. 总结 1. 简介 park和unpark也是一个线程暂停技术&#xff08;让线程进入wait状态&#xff09;&#xff0c;与wait/notify不同的是&#xff0c;前者是LockSupport类中的方法&#xff0c;后者是Object类中的方法。其次&#xff0c;wait与notify和…

Makefile 介绍

目录 一、Makefile 的规则 二、一个示例 三、make 是如何工作的 四、makefile 中使用变量 五、让 make 自动推导 六、另类风格的 makefile 七、清空目标文件的规则 make 命令执行时&#xff0c;需要一个 Makefile 文件&#xff0c;以告诉 make 命令需要怎么样的去编译和…

1.docker linux离线环境安装 20.1.0.12

目录 概述下载解压docker 卸载docker 安装检查安装环境常用命令结束 概述 docker离线环境安装 20.1.0.12 , centos 7.x 下载 安装包下载 解压 [roothadoop01 soft]# unzip docker_20_1_0_12.zip [roothadoop01 soft]# cd docker_20_1_0_12 [roothadoop01 docker_20_1_0_1…

Java系统操作日志之数据修改变化记录

系统操作日志之数据修改变化记录 前言效果图如何实现总结 相信大家在自己的系统中都有记录日志吧&#xff0c;像登录日志、操作日志等等 但是一般来说&#xff0c;大家都是获取操作了什么东西&#xff0c;包括它的参数&#xff0c;模块等等&#xff0c;但是你有关心过他的数据变…

06【保姆级】-GO语言的运算符

之前我学过C、Java、Python语言时总结的经验&#xff1a; 先建立整体框架&#xff0c;然后再去抠细节。先Know how&#xff0c;然后know why。先做出来&#xff0c;然后再去一点点研究&#xff0c;才会事半功倍。适当的囫囵吞枣。因为死抠某个知识点很浪费时间的。对于GO语言&a…

使用MCU上的I2C总线进行传感器应用

使用MCU上的I2C总线进行传感器应用是嵌入式系统开发中常见的任务&#xff0c;本文将介绍在MCU上实现I2C总线传感器应用的相关技术和流程。 首先&#xff0c;I2C&#xff08;Inter-Integrated Circuit&#xff09;总线是一种常用的串行通信协议&#xff0c;用于连接多个设备&am…

2023/11/8JAVA学习

多个条件也可以&&放在一块,支持链式编程 map()数据加工,一个对象转化为另一个 不能这样写 不会去重报错

java入门,记一次mysql函数使用

一、前言 记一次mysql函数使用&#xff0c;要求给一个字段进行拼接&#xff0c;然后MD5加密&#xff0c;再转换成大写。这里都是有现成的函数&#xff0c;所以记录下来 二、函数使用 1、拼接函数&#xff1a; concat(字符串1,字符串2) select concat(字符串1,字符串2); 2、…

Postman使用方法详细攻略

一、Postman背景介绍 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的&#xff0c;用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的css、html、脚本等简单的网…

APISpace IP归属地查询接口案例代码

1.IP归属地查询API 1.1 API接口简介 IP归属地查询API&#xff1a;根据IP地址查询归属地信息&#xff0c;包含国家、省、市、区县和运营商等信息。APISpace 提供了IPv4 和 IPv6 的IP归属地查询接口&#xff0c;并且包含了各种归属地精度查询的接口。 1.2 IPv4 IPv4归属地查询…

数据结构与算法-(11)---有序表(OrderedList)

&#x1f308;个人主页: Aileen_0v0 &#x1f525;系列专栏:PYTHON学习系列专栏 &#x1f4ab;"没有罗马,那就自己创造罗马~" 目录 知识回顾及总结 有序表的引入 ​编辑 实现有序表 1.有序表-类的构造方法 2.有序表-search方法的实现 3.有序表-add方法的实现…

电气元器件的型号,符号,接线认识(一)

目录 按钮开关 类型 文字与图形符号 常开常闭触点 接线图 中间继电器 实物图 文字与图形符号 接线图 交流接触器 实物图 文字与图形符号 接线图 开关电源 图形 文字与图形符号 接线图 断路器 实物图 类型 文字与图形符号 接线图 今天让我们来认识一下电路元…

ci-cd的流程

1、项目在gitlab上&#xff0c;从gitlab上使用git插件获取源码&#xff0c;构建成war包&#xff0c;所以使用tomcat作为运行环境 发布 &#xff1a;使用maven插件发布&#xff0c;使用ssh连接。

大众动力总成构建全程数字化的数电票管理平台

客户简介 上海大众动力总成有限公司成立于2005年4月29日&#xff0c;是德国大众在中国的全资投资公司大众汽车&#xff08;中国&#xff09;投资有限公司和上海汽车集团股份有限公司合资组建的发动机生产企业&#xff0c;是世界上加工工艺和技术水平最先进的发动机生产基地之一…