关于 IPv6 你需要知道的 10 件事

关于 IPv6 你需要知道的 10 件事

在过去的几年里,IPv6已经逐渐慢慢地成为主流,但许多IT专业人士在面临IPv6时还手足无措,的确,IPv6和IPv4存在很大的不同,本文为此而写,希望能帮助你消除IPv6恐惧症。

1、IPv6地址是128位十六进制数

IPv4地址是有4个数字位组(总共32位)组成的,IPv6地址的长度时128位,而且是由16进制字符组成的。在IPv4中,每个位组由0-255的十进制数字组成,位组之间由英文的句号隔开,IPv6地址由8个为组组成,每个位组由4个字符的16进制数字组成。

2、很容易识别链路本地单播地址

IPv6为不同的地址类型保留了特殊的地址头,最明显的一个例子就是链路本地单播地址都是以PE80开头的,多播地址都是以FF0x开头,这里的x是一个占位符,可以用数字1-8替换它。

3、支持地址缩写

因为IPv6的地址比较长,往往会包含很多0,如果某个位组的字符全部是0,则这些0可以缩写为一个0,例如,下面的地址:

FE80:CD00:0000:0CDE:1257:0000:211E:729C

可以缩写为

FE80:CD00:0:CDE:1257:0:211E:729C

4、可省略连续的0

如果连续多个位组的字符全部是0,则可以省略掉所有得0,例如,下面的地址:

FE80:CD00:0000:0000:0000:0000:211E:729C

除了可以按第3条介绍的方法缩写外,还可以直接省略掉连续的0,用两个英文冒号代替,操作系统看到这样的IPv6地址后,自然会知道它们之间的字符全是0。因此上面的地址可以简写为

FE80:CD00::211E:729C

5、IPv6的环回地址

在IPv4中,我们知道环回地址是指向本机的一个特殊地址,即我们熟悉的127.0.0.1,IPv6也不例外,同样设计了环回地址,如下:

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

参考第4条的省略写法,IPv6的环回地址就成了

::1

这看上去是不是不像是一个有效的IP地址啊。

6、不需要传统的子网掩码

在IPv4中,每个IP地址必须要搭配一个子网掩码才能使用,IPv6也使用了子网的概念,但子网ID是直接嵌入到地址中的。在IPv6中,前48 位表示网络前缀,紧接着的16位是子网ID,最后64位才是接口标识,即接口ID或设备ID。如果需要的话,预留给设备ID的位可以借用来表示额外的子网 掩码,但通常是不需要的,因为16位子网和64位设备ID可以提供多达65536个子网。

7、IPv6仍然需要DNS

在IPv4中,主机记录(即A记录)将IP地址映射到主机名,IPv6仍然要使用DNS技术,但IPv6不再使用主机记录,相反,IPv6使用AAAA资源记录,ip6.arpa用于反向主机名的解析。

8、可以跨IPv4网络实现IPv6隧道通信

导致IPv6迟迟得不到有效推进的一个原因就是和IPv4不完全兼容,因此出现了在IPv4网络上走IPv6通信的隧道技术,一个是Teredo, 另一个是6to4,虽然它们的工作方法有点不一样,但基本思想都是将IPv6数据包封装成IPv4数据包进行传输,但通信的两端都需要具有封包和解包的能 力。

9、你可能已经在使用IPv6了

从Windows Vista开始,微软默认就安装了IPv6驱动,并默认启用了IPv6协议,因为这一切都是自动配置的,你可能还不知情,但只有操作系统支持IPv6还不 够,所有交换机和路由器都必须支持,此外,还有一些设计得很差的应用程序将IPv4地址硬编码到程序中了,它们都是阻碍IPv6普及的绊脚石。

10、Windows并没有完整支持IPv6

虽然微软在支持IPv6上表现得很积极,但Windows却并没有完整地支持IPv6,例如,在Windows中,我们以往可以使用UNC(通用命 名约定)访问网络共享文件夹(如//127.0.0.1/C$),但现在却不能使用IPv6这样做,因为Windows看到IPv6地址中的冒号时,它会 把它当做驱动器盘符对待。

为了解决这个问题,微软为IPv6地址转换建立了一个特殊的域,如果你在UNC路径中使用IPv6地址,你必须使用破折号代替冒号,并在地址的末尾 加上.ipv6.literal.net后缀,例如FE80-AB00–200D-617B.ipv6.literal.net。

转自:http://www.oschina.net/bbs/thread/13034

本文是使用
B3log Solo
简约设计の艺术 进行同步发布的

转载于:https://www.cnblogs.com/lanzhi/archive/2010/11/17/6468433.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110693.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java的线程是用户态还是内核态_内核态和用户态的区别

    java的线程是用户态还是内核态_内核态和用户态的区别内核态用户态是什么?操作系统对程序的执行权限进行分级,分别为用户态和内核态。用户态相比内核态有较低的执行权限,很多操作是不被操作系统允许的,简单来说就是用户态只能访问内存,防止程序错误影响到其他程序,而内核态则是可以操作系统的程序和普通用户程序内核态:cpu可以访问计算机所有的软硬件资源用户态:cpu权限受限,只能访问到自己内存中的数据,无法访问其他资源为什么要有用户态和内核态?系统需要限制不同的程序之间的访问能力,防止程序获取不相同程序的内存数据,或者外围设备的数据,并发送到网络,所有cpu

    2025年11月13日
    2
  • mysql拼接字段的函数_mysql拼接字符串

    mysql拼接字段的函数_mysql拼接字符串MySQL的字符串拼接有三个函数CONCAT(str1,str2,…)CONCAT_WS(separator,str1,str2,…)GROUP_CONCAT(expr)这三个函数都各有作用,现在测试看看是什么样子的效果准备数据表CREATETABLE`user_info`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(255)DEFAULTNULL,`age`int(3)DEFAULTNULL,

    2022年9月27日
    3
  • js数组删除元素_js清空数组的方法

    js数组删除元素_js清空数组的方法js的数组删除,我建议大家使用splice函数,不要使用slice函数,因为slice是返回一个新数组,并不是从原来的数组中删除。比如:leta=[111,222,333,444];a.splice(2,1);上面的代码运行后,a数组的值变成:[111,222,444]假如用slice实现:leta=[111,222,333,444];letb=a.slice(2,1);这时a的值不会改变,而b的值变成了[111,222,444]所以splice是比slice用起来简单的

    2022年10月1日
    1
  • SQL Server 配置管理器无法打开

    SQL Server 配置管理器无法打开在把机器重启后SQLSERVER配置管理器就无法正常打开了

    2022年7月20日
    16
  • 程序员外包平台_人力资源外包和劳务派遣

    程序员外包平台_人力资源外包和劳务派遣程序员接单平台,程序员接单,程序员外包平台,程序员外包

    2022年9月29日
    2
  • android 反射NoSuchMethodException异常

    android 反射NoSuchMethodException异常android反射NoSuchMethodException异常因为方法的参数是int类型,使用反射调用时使用Integer类型的参数。应该使用getDeclaredMethod(“****”,int.class);

    2022年6月23日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号