美文网首页程序员
IPv6地址格式

IPv6地址格式

作者: 木木与呆呆 | 来源:发表于2019-03-01 11:38 被阅读96次

    1.说明

    IPv6是互联网协议的第六版,
    现有IPv4只支持大概40亿个网络地址,
    而IPv6支持3.4e38个网络地址。
    IPv4的地址长度是32位(bit),
    IPv6的地址长度是128位。
    尽管大部分IPv4计算机每个接口只有一个IP地址,
    但是IPv6计算机通常会有两个IP地址:
    一个本地链路地址和一个全球单播地址。


    2.首选格式(冒分十六进制表示法)

    一个128位二进制数的IPv6地址如下:

    0010000000000001 0000000000000000 0011001000111000 1101111111100001
    0000000001100011 0000000000000000 0000000000000000 1111111011111011 
    

    一般二进制数不好阅读和记忆,
    所以推荐使用十六进制数作为首选格式,
    这128位的地址按每16位划分为一组,
    每组转换成4个十六进制数,
    每组之间用冒号隔开,
    称为冒分十六进制表示法。
    一个典型的IPv6地址为8组4个十六进制数,如下:

    2001:0000:0000:0000:085b:3c51:f5ff:ffdb
    

    3.压缩格式

    基于使用冒分十六进制表示法的首选格式,
    IPv6地址还可以进一步压缩为两种短格式。

    3.1.省略前导零

    可以省去任意组的前导零来压缩IPv6地址,
    085b可以化简为85b
    全0块0000可以化简为0
    下面的IP地址与前一个IP地址完全相同:

    2001:0:0:0:85b:3c51:f5ff:ffdb
    

    3.2.双冒号::

    对于多个连续地址块为0的情况时,
    可以使用双冒号::压缩。
    下面的IP地址省略了3组全0
    只使用剩下的5组十六进制数,
    实际与前一个IP地址完全相同:

    2001::85b:3c51:f5ff:ffdb
    

    为保证地址解析的唯一性,
    地址中双冒号::只能出现一次,
    因为IPv6地址始终会有8组4个十六进制数,
    所以可以确定有多少全0组被省略。
    如果出现多个连续全0块时,
    双冒号::要化简最长的一段,
    没有最长的使用就近原则,
    压缩最靠近左边的第一段,
    双冒号::可以出现在地址开头或结尾。

    4.内嵌IPv4地址的格式

    为了实现IPv4-IPv6互通,
    IPv4地址会嵌入IPv6地址中,
    此时地址常表示为:

    X:X:X:X:X:X:d.d.d.d
    

    地址前96位采用冒分十六进制表示法,
    地址后32位则使用IPv4的点分十进制表示法,
    下面两个地址是典型的内嵌IPv4地址:

    ::192.168.0.1
    ::FFFF:192.168.0.1
    

    注意在地址前96位中,压缩格式仍然适用。

    4.1.通过IPv4映射的IPv6地址

    此类型的地址用于将IPv4节点表示为IPv6地址。
    它允许IPv6应用程序直接与IPv4应用程序通信。
    例如:

    0:0:0:0:0:ffff:192.1.56.10 
    ::ffff:192.1.56.10/96
    

    4.2.兼容IPv4的IPv6地址

    此类型的地址用于隧道传送。
    它允许IPv6节点通过IPv4基础结构通信。
    例如:

    0:0:0:0:0:0:192.1.56.10 
    ::192.1.56.10/96
    

    5.地址类型

    IPv6协议主要定义了三种地址类型:

    • 单播地址(Unicast Address)
    • 任播地址(Anycast Address)
    • 组播地址(Multicast Address)

    5.1.单播地址

    一个单播地址对应一个接口,
    发往单播地址的数据包会被送到对应的接口。

    5.1.1 全球单播地址

    前缀2000::/3,相当于IPv4的公网地址。
    这种地址在全球的路由器间可以路由。

    5.1.2 链路本地地址

    前缀FE80::/10,
    此类地址用于同一链路上的节点间的通信,
    主要用于自动配置地址和邻居节点发现过程。
    Windows和Linux支持或开启IPv6后,
    默认会给网卡接口自动配置一个链路本地地址。
    Linux下查看链路本地地址:


    Windows下查看链路本地地址:


    每个接口必须至少有一个链路本地地址,
    每个接口可以配置1个以上的单播地址,
    例如一个接口可以配置一个链路本地地址,
    同时也可以配置一个全球单播地址。

    5.1.3 唯一本地地址

    前缀FC00::/7,
    相当于IPv4的私网地址(10.0.0.0、172.16.0.0、192.168.0.0),
    在RFC4193中新定义的一种解决私网需求的单播地址类型,
    用来代替废弃使用的站点本地地址。
    由于默认情况下私网内节点与外界通信的发起是单向的,
    网络访问仅仅能从私网内发起,
    外部发起的请求会被统一网关或者防火墙阻隔掉,
    这样的网络架构很好的保护了私网内的节点安全性和私密性。
    因此,在安全性和私密性要求下,
    IPv6中同样需要支持私网,并且也需要支持NAT。

    5.1.4 站点本地地址

    前缀FEC9::/48,以前是用来部署私网的,
    但RFC3879中已经不建议使用这类地址,
    实际上这种地址已经不再使用,
    建议使用唯一本地地址。

    5.1.5 特殊地址:回环地址

    0:0:0:0:0:0:0:1或::1,
    等同于IPv4的127.0.0.1。

    5.1.6过渡地址:内嵌IPv4地址的IPv6地址

    参考上面的第4章节,
    这类地址主要用于IPv6/IPv4的过渡技术中。

    5.2.任播地址

    一个任播地址对应一组接口,
    发往任播地址的数据包会被送到这组接口中最近的一个接口,
    最近的一个被标识接口由具体的路由协议确定。

    5.3.组播地址

    一个组播地址对应一组接口,
    发往组播地址的数据包会被送到这组的所有接口。
    IPv6中没有广播地址,其功能被组播地址取代。

    6.参考文章:

    IP Version 6 Addressing Architecture
    RFC 2732 Format for Literal IPv6 Addresses in URL's
    IPV6地址和报文结构详解
    IPv6技术详解:基本概念、应用现状、技术实践(上篇)
    IPv6技术详解:基本概念、应用现状、技术实践(下篇)

    相关文章

      网友评论

        本文标题:IPv6地址格式

        本文链接:https://www.haomeiwen.com/subject/ostduqtx.html