原标题:IPv6地址表示方法及其简化方法详解

对于一个完整的IPv6地址,需要写128位,已经被分成了8段,每段4个字符,也就是说完整地表示一个IPv6地址,需要写32个字母,这是相当长的,并且容易混淆和出错,所以IPv6在地址的表示方法上,是有讲究的,到目前为止,IPv6地址的表示方法分为三种,分别是:

1.首选格式

2.压缩表示

3.IPv4内嵌在IPv6中

下面分别详细介绍这三种IPv6地址表示方法:

1.首选格式

首选格式的表示方法其实没有任何讲究,就是将IPv6中的128位,也就是共32个字符完完整整,一个不漏地全写出来,比如下面就是一些IPv6地址的首选格式表示形式:

0000:0000:0000:0000:0000:0000:0000:0000

0000:0000:0000:0000:0000:0000:0000:0001

2001:0410:0000:1234:FB00:1400:5000:45FF

3ffe:0000:0000:0000:1010:2a2a:0000:0001

FE80:0000:0000:0000:0000:0000:0000:0009

FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF

从上面IPv6地址的首选格式表示中可以看出,每一个地址,都将32个字符全部写了出来,即使地址中有许多个0,或者有许多个F,也都一个不漏地写了出来,由此可见,首选格式只需要将地址完整写出即可,没有任何复杂的变化,但是容易出错。

2.压缩格式

从前面一个IPv6地址表示方法首选格式表示方法中可以看出,一个完整的IPv6地址中,会经常性的出现许多个0,而我们知道,许多时候,0是毫无意义的,0表示没有,写出来,也表示没有,不写,也同样表示没有,那么我们就考虑能否将不影响地址结果的0给省略不写,这样就可以大大节省时间,也方便人们阅读和书写,这样的将地址省略0的表示方法,称为压缩格式。

而压缩格式的表示中,分三种情况,下面来分别介绍三种压缩格式:

第一种情况:

在IPv6中,地址分为8个段来表示,每个段共4个字符,但是一个完整的IPv6地址会经常碰到整个段4个字符全部都为0,所以我们将整个段4个字符全部都为0的使用双冒号::来表示,如果连续多个段全都为0,那么也可以同样将多个段都使用 双冒号::来表示,如果是多个段,并不需要将双冒号写多次,只需要写一次即可,比如一个地址8个段,其中有三个段全都为0,那么我们就将这全为0的三个段共48位用::来表示,再将其它5个段照常写出即可,当计算机读到这样一个不足128位的地址时,比128位少了多少位,就在::的地方补上多少个0,比如上面的::代替为48位,那么计算机就会在这个地址的::位置补上48位的0,这样就正确地将地址还原回去了。

下面来看一些整个段4个字符都为0的IPv6地址使用压缩格式来表示:

例1:

压缩前:

0000:0000:0000:0000:0000:0000:0000:0000

压缩后:

::

说明:可以看出,由于这个地址的8个段全部都为0,所以只用::就将整个地址表示出来,当计算机拿到这个压缩后的地址时,发现比正常的128位少了128位,那么就会在::的地方补上128个0,结果为:

0000:0000:0000:0000:0000:0000:0000:0000

可以看出,计算机还原的地址就是压缩之前的真实地址。

例2:

压缩前:

0000:0000:0000:0000:0000:0000:0000:0001

压缩后:

::0001

说明:可以看出,压缩后的地址比正常的128位少了112位,计算机就会在::的地方补上112个0,结果为:

0000:0000:0000:0000:0000:0000:0000:0001

可以看出,计算机还原的地址就是压缩之前的真实地址。

例3:

压缩前:

2001:0410:0000: 0000:FB00:1400:5000:45FF

压缩后:

2001:0410 :: FB00:1400:5000:45FF

说明:可以看出,压缩后的地址比正常的128位少了32位,计算机就会在::的地方补上32个0,结果为:

2001:0410:0000: 0000:FB00:1400:5000:45FF

可以看出,计算机还原的地址就是压缩之前的真实地址。

例4:

压缩前:

3ffe:0000:0000:0000:1010:2a2a:0000:0001

压缩后:

3ffe::1010:2a2a::0001

说明:当计算机拿到这个压缩后的地址,发现比正常的128位少了64位,计算机就会试图在::的地方补上少了的64个0,但是我们可以看到,压缩后的地址有两个::,而计算机要补上64个0,所以这时补出来的结果很可能是以下几种:

3ffe:0000:1010:2a2a: 0000:0000:0000:0001

3ffe:0000:00001010:2a2a::0000:0000:0001

3ffe:0000:0000:0000:1010:2a2a:0000:0001

从结果中可以发现,当一个IPv6地址被压缩后,如果计算机出现两个或多个::的时候,计算机在将地址还原时,就可能出现多种情况,这将导致计算机还原后的地址不是压缩之前的地址,将导致地址错误,最终通信失败。

所以,在压缩IPv6地址时,一个地址中只能出现一个::。

第二种情况:

在压缩格式的第一种情况的表示中,是在地址中整个段4个字符都为0时,才将其压缩为::来表示,但是在使用第一种情况压缩之后,我们仍然可以看见地址中还存在许多毫无意义的0,比如0001,0410。我们知道,0001中,虽然前面有三个0,但是如果我们将前面的0全部省略掉,写为1,结果是等于0001的,而0410也是一样,我们将前面的0省略掉,写成410,也同样等于0410的,所以我们在省略数字前面的0时,是不影响结果的,那么这个时候,表示IPv6地址时,允许将一个段中前导部分的0省略不写,因为不影响结果。但是需要注意的是,如果0不是前导0,比如2001,我们就不能省略0写成21,因为21不等于2001,所以在中间的0不能省略,只能省略最前面的0。下面来看一些省略前导0的地址表示形式:

例1:

压缩前:

0000:0000:0000:0000:0000:0000:0000:0000

压缩后:

0:0:0:0:0:0:0:0

从结果中可以看出,计算机根本就不需要对这样的地址还原,压缩后的结果和压缩前的结果是相等的。

例2:

压缩前:

0000:0000:0000:0000:0000:0000:0000:0001

压缩后:

0:0:0:0:0:0:0:1

从结果中可以看出,计算机根本就不需要对这样的地址还原,压缩后的结果和压缩前的结果是相等的。

例3:

压缩前:

2001:0410:0000:1234:FB00:1400:5000:45FF

压缩后:

2001:410:0:1234:FB00:1400:5000:45FF

从结果中可以看出,计算机根本就不需要对这样的地址还原,压缩后的结果和压缩前的结果是相等的。

第三种情况:

在前面两种IPv6地址的压缩表示方法中,第一种是在整段4个字符全为0时,才将其压缩后写为::,而第二种是将无意义的0省略不写,可以发现两种方法都能节省时间,方便阅读。第三种压缩方法就是结合前两种方法,既将整段4个字符全为0的部分写成::,也将无意义的0省略不写,结果就可以出现以下一些最方便的表示方法:

例1:

压缩前:

0000:0000:0000:0000:0000:0000:0000:0001

压缩后:

:: 1

可以看到,结合了两种压缩格式的方法,但为简便。

例2:

压缩前:

2001:0410:0000:0000:FB00:1400:5000:45FF

压缩后:

2001:410:: FB00:1400:5000:45FF

可以看到,结合了两种压缩格式的方法,但为简便。

3.IPv4内嵌在IPv6中

在网络还没有全部从IPv4过渡到IPv6时,就可能出现某些设备即连接了IPv4网络,又连接了IPv6网络,对于这样的情况,就需要一个地址即可以表示IPv4地址,又可以表示IPv6地址。

因为一个IPv4地址为32位,一个IPv6地址为128位,要让一个IPv4地址表示为IPv6地址,明显已经少了96位,那么就将一个正常的IPv4地址通过增加96位,结果变成128位,来与IPv6通信。在表示时,是在IPv4原有地址的基础上,增加96个0,结果变成128位,增加的96个0再结合原有的IPv4地址,表示方法为

0:0:0:0:0:0:A.B.C.D 或者::A.B.C.D.,如下:

0000: 0000: 0000: 0000:0000:0000:A.B.C.D

9 6 个0 32位

例:

IPv4地址为 138.1.1.1

表示IPv6地址为0:0:0:0:0:0:138.1.1.1

IPv6中没有广播地址,IPv6不建议划子网,如果需要划子网,网络位请不要低于48位。返回搜狐,查看更多

责任编辑:

ipv6简写还原_IPv6地址表示方法及其简化方法详解相关推荐

  1. Android JNI使用方法,JNI机制详解

    Android JNI使用方法,JNI机制详解 JNI的出现使得开发者既可以利用Java语言跨平台.类库丰 富.开发便捷等特点,又可以利用Native语言的高效. JNI是JVM实现中的一部分,因此N ...

  2. java测试类 main方法_Java使用agent实现main方法之前的实例详解

    Java使用agent实现main方法之前的实例详解 创建Agent项目 PreMainExecutor 类,在main方法之前执行此方法 public class PreMainExecutor { ...

  3. 主成分分析(PCA)方法步骤以及代码详解

    主成分分析(PCA)方法步骤以及代码详解 前言 上一节我们了解到在构建神经网络模型,除了掌握如何搭建神经网络架构,了解参数具体含义,规避风险等方法.第一步是要对采用数据集的详细了解,无需接触任何神经网 ...

  4. python中turtle画雪花_turtle画雪花-方法及效果的详解

    效果图: 代码: import turtle as t import random as r # 定义画雪 def drawsnow(): t.ht() # 隐藏笔头,ht=hideturtle t. ...

  5. 白加黑加载方式_“白加黑减”即曝光补偿的应用方法及原理全面详解——致新手新新手...

    "白加黑减"即曝光补偿的应用方法及原理全面详解 --致新手新新手 本文对曝光补偿这一摄影基本技术及原理做一全面详细的分析和解释,旨在让受此困惑的新手能够从原理上彻底理解" ...

  6. python调用包中的方法_python 中不同包 类 方法 之间的调用详解

    目录结构如下: 在hello.py中导入ORM.py这个文件的时候,采用 import ORMPackage.ORM 或者 import ORM u = User(id = 123, name='co ...

  7. 饥荒机器人怎么解锁_饥荒全人物解锁方法以及属性技能详解

    饥荒的原版游戏共有十余种人物供玩家们选择,每个角色属性技能不同,解锁条件也不同.下面小编就带来了饥荒全人物解锁方法及属性技能详解,一起来看看哪些角色适合玩耍吧. 第 5 页 机器人 机器人 英文名称: ...

  8. IEEE浮点数 换算方法【超易懂详解】

    IEEE浮点数 换算方法[超易懂详解] 格式概览 转换方法 0. 例子说明 1. 小学乘除:十进制 转 二进制 2. 小学数学:科学计数法 3. 儿童观察力:提取三个元素 4. 幼儿手工:收尾拼接 附 ...

  9. js some every数组方法的区别与详解

    js some every数组方法的区别于详解 前言 一.some方法 二.every() 方法 总结 前言 在开发中对数组数据的常规操作我们会经常遇到一些必要的操作 例如:要检测数组中的元素是否满足 ...

最新文章

  1. R语言ggplot2可视化散点图实战:绘制基础散点图、为所有散点添加标签、只为大于阈值的散点添加标签
  2. wsl2 图形界面_WSL2配置xrdp一键启动至桌面环境
  3. (DFS)求出n个数中选择m个数的所有可能
  4. 阮一峰react demo代码研究的学习笔记 - demo10 debug
  5. 《Python Cookbook 3rd》笔记(3.6):复数的数学运算
  6. html 替换反斜杠,在URL直接替换反斜杠反斜杠
  7. java 项目 人力资源项目,基于jsp的人力资源系统-JavaEE实现人力资源系统 - java项目源码...
  8. 企业搜索引擎(Enterprise Search Engine)的2007中重要的功能
  9. 六石管理学:座位可以考虑混排
  10. db2 replace函数的用法_C++常用函数整理
  11. fft qt 代码_FFT代码详解
  12. log4j从入门到了解
  13. 基于SpringBoot+Bootstrap【爱码个人博客系统】附源码
  14. No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing instanc
  15. php怎么把多个pdf拼接成一个,如何把PDF文件拼接成一个?
  16. linux驱动面试题整理
  17. golang 下载图片
  18. 基于TI AM5728(浮点双DSP C66x +双ARM Cortex-A15)的开发板
  19. 分享几个精美的个人简历模板,非常不错的简历,docx格式的可直接修改。
  20. HBASE的CRUD操作

热门文章

  1. Java:键盘录入:接收键盘输入的数字
  2. SQL 极简核心:算术运算
  3. python的dropna函数_Pandas dropna()函数不工作
  4. 微信小程序canvas绘制曲线图表
  5. vs+vtk读取.mhd格式文件出现ERROR:MetaImage cannot read data from file 问题。
  6. 游戏开发入门-认识Unity
  7. C语言实现状态机(一)
  8. 基于翔云平台做人脸识别
  9. SAP EPIC 银企直连 农业银行 Socket 接口项目实践
  10. pytorch:多标签分类的损失函数和准确率计算