IPv6地址的初步接触

为了解决因IPv4地址极为有限而对互联网发展的限制问题,早在上个世纪90年代就提出了IPv6的设想, 新的IPv6地址长度为128位,是IPv4地址长度的4倍,可产生2^128次方个地址,号称可以为全世界的每一粒沙都确定一个地址。

IPv6的表示方法

1.冒分十六进制表示法

格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16b,以十六进制表示,例如:
  ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
  这种表示法中,每个X的前导0是可以省略的,例如:
  2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A

二、0位压缩表示法
  在某些情况下,一个IPv6地址中问可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,例如:
  FF01:0:0:0:0:0:0:1101 → FF01::1101
  0:0:0:0:0:0:0:1 → ::1
  0:0:0:0:0:0:0:0 → ::

三、内嵌IPv4地址表示法
  为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前96b采用冒分十六进制表示,而最后32b地址则使用IPv4的点分十进制表示,例如::192.168.0.1与::FFFF:192.168.0.1就是两个典型的例子,注意在前96b中,压缩0位的方法依旧适用。

报文内容

IPv6报文的整体结构分为IPv6报头、扩展报头和上层协议数据3部分。IPv6报头是必选报文头部,长度固定为40B,包含该报文的基本信息;扩展报头是可选报头,可能存在0个、1个或多个,IPv6协议通过扩展报头实现各种丰富的功能;上层协议数据是该IPv6报文携带的上层数据,可能是ICMPv6报文、TCP报文、UDP报文或其他可能报文。

IPv6的报文头部结构如图:

版本号 表示协议版本.值为6
流量等级 主要用于QoS
流标签 用来标识同一个流里面的报文
载荷长度 表明该IPv6包头部后包含的字节数,包含扩展头部
下一报头 该字段用来指明报头后接的报文头部的类型,若存在扩展头,表示第一个扩展头的类型,否则表示其上层协议的类型,它是IPv6各种功能的核心实现方法
跳数限制 该字段类似于IPv4中的TTL,每次转发跳数减一,该字段达到0时包将会被丢弃
源地址 标识该报文的来源地址
目的地址 标识该报文的目的地址

扩展头部:IPv6报文中不再有“选项”字段,而是通过“下一报头”字段配合IPv6扩展报头来实现选项的功能。使用扩展头时,将在IPv6报文下一报头字段表明首个扩展报头的类型,再根据该类型对扩展报头进行读取与处理。每个扩展报头同样包含下一报头字段,若接下来有其他扩展报头,即在该字段中继续标明接下来的扩展报头的类型,从而达到添加连续多个扩展报头的目的。在最后一个扩展报头的下一报头字段中,则标明该报文上层协议的类型,用以读取上层协议数据

地址类型

IPv6协议主要定义了三种地址类型:单播地址(Unicast Address)、组播地址(Multicast Address)和任播地址(Anycast Address)。与原来在IPv4地址相比,新增了“任播地址”类型,取消了原来IPv4地址中的广播地址,因为在IPv6中的广播功能是通过组播来完成的。

单播地址:用来唯一标识一个接口,类似于IPv4中的单播地址。发送到单播地址的数据报文将被传送给此地址所标识的一个接口。

组播地址:用来标识一组接口(通常这组接口属于不同的节点),类似于IPv4中的组播地址。发送到组播地址的数据报文被传送给此地址所标识的所有接口。

任播地址:用来标识一组接口(通常这组接口属于不同的节点)。发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近(根据使用的路由协议进行度量)的一个接口。

IPv6地址类型是由地址前缀部分来确定,主要地址类型与地址前缀的对应关系如下

 

地址类型 地址前缀(二进制) IPv6前缀标识
单播地址 未指定地址 00…0(128 bits) ::/128
环回地址 00…1(128 bits) ::1/128
链路本地地址 1111111010 FE80::/10
站点本地地址 1111111011 FEC0::/10
全球单播地址 其他形式 -
组播地址    11111111 FF00::/8
任播地址    从单播地址空间中进行分配,使用单播地址的格式

单播地址

IPv6单播地址与IPv4单播地址一样,都只标识了一个接口。为了适应负载平衡系统,RFC3513允许多个接口使用同一个地址,只要这些接口作为主机上实现的IPv6的单个接口出现。单播地址包括五个类型:全局单播地址、链路本地地址、站点本地地址、兼容性地址、特殊地址。

一、全局单播地址:等同于IPv4中的公网地址,可以在IPv6 Internet上进行全局路由和访问。这种地址类型允许路由前缀的聚合,从而限制了全球路由表项的数量。

链路本地地址和站点本地地址都属于本地单播地址,在IPv6中,本地单播地址就是指本地网络使用的单播地址,也就是IPV4地址中局域网专用地址。每个接口上至少要有一个链路本地单播地址,另外还可分配任何类型(单播、任播和组播)或范围的IPv6地址。

二、链路本地地址:仅用于单个链路(这里的“链路”相当于IPv4中的子网),不能在不同子网中路由。结点使用链路本地地址与同一个链路上的相邻结点进行通信。例如,在没有路由器的单链路IPv6网络上,主机使用链路本地地址与该链路上的其他主机进行通信。

三、站点本地地址:相当于IPv4中的局域网专用地址,仅可在本地局域网中使用。例如,没有与IPv6 Internet的直接路由连接的专用intranet可以使用不会与全局地址冲突的站点本地地址。站点本地地址可以与全局单播地址配合使用,也就是在一个接口上可以同时配置站点本地地址和全局单播地址。但使用站点本地地址作为源或目的地址的数据报文不会被转发到本站(相当于一个私有网络)外的其他站点。

四、兼容性地址:在IPv6的转换机制中还包括了一种通过IPv4路由接口以隧道方式动态传递IPv6包的技术。这样的IPv6结点会被分配一个在低32位中带有全球IPv4单播地址的IPv6全局单播地址。另有一种嵌入IPv4的IPv6地址,用于局域网内部,这类地址用于把IPv4结点当作IPv6结点。此外,还有一种称为“6to4”的IPv6地址,用于在两个通过Internet同时运行IPv4和IPv6的结点之间进行通信。

五、特殊地址:包括未指定地址和环回地址。未指定地址(0:0:0:0:0:0:0:0或::)仅用于表示某个地址不存在。它等价于IPv4未指定地址0.0.0.0。未指定地址通常被用做尝试验证暂定地址唯一性数据包的源地址,并且永远不会指派给某个接口或被用做目标地址。环回地址(0:0:0:0:0:0:0:1或::1)用于标识环回接口,允许节点将数据包发送给自己。它等价于IPv4环回地址127.0.0.1。发送到环回地址的数据包永远不会发送给某个链接,也永远不会通过IPv6路由器转发[6]  。

组播地址

IPv6组播地址可识别多个接口,对应于一组接口的地址(通常分属不同节点)。发送到组播地址的数据包被送到由该地址标识的每个接口。使用适当的组播路由拓扑,将向组播地址发送的数据包发送给该地址识别的所有接口。任意位置的IPv6节点可以侦听任意IPv6组播地址上的组播通信。IPv6节点可以同时侦听多个组播地址,也可以随时加入或离开组播组。

IPv6组播地址的最明显特征就是最高的8位固定为1111 1111。IPv6地址很容易区分组播地址,因为它总是以FF开始的。

任播地址

一个IPv6任播地址与组播地址一样也可以识别多个接口,对应一组接口的地址。大多数情况下,这些接口属于不同的节点。但是,与组播地址不同的是,发送到任播地址的数据包被送到由该地址标识的其中一个接口。

通过合适的路由拓扑,目的地址为任播地址的数据包将被发送到单个接口(该地址识别的最近接口,最近接口定义的根据是因为路由距离最近),而组播地址用于一对多通信,发送到多个接口。一个任播地址必须不能用作IPv6数据包的源地址;也不能分配给IPv6主机,仅可以分配给IPv6路由器。

时间: 2024-10-27 19:15:44

IPv6地址的初步接触的相关文章

是一个IPV6地址

每次在VS上调试,发现本机地址是 ::1 这种就不解.由于太忙而没关注,今天看了IPV6的文章才明白.原来这是个IPV6地址,也就是本机环回地址.以前是127.0.0.1,IPV4版本,而IPV6的就是::1,这还是个简写的.按IPV6表示方法就是这样 0000:0000:0000:0000:0000:0000:0000:0001 0 1 2 3 4 5 6 7 如果一段都是连续的0,并且连接几段都是0的,比如0段1段都是零.可以写成 :: 每个IPV6 地址只能简写一个连续段,像上面这个0-6

Error:NFS启动无法绑定IPV6地址报错

NFS服务启动时无法绑定ipv6地址 在测试NFS的时候,突然发生了从未有过的错误,故障信息如下,为此特地描述一下排错的过程,供同行参考: info:[[email protected] ~]# service nfs startStarting NFS services:                                     [  OK  ]Starting NFS quotas:                                       [  OK  ]S

ipv6 地址说明

开篇我们先简单介绍下ipv4 地址 IPv4 地址: ipv4地址一共32位,用点分十进制表示,每一个部分是8位.子网掩码有两种表示 192.168.1.3 / 24 表示ip的前24位是网络位,后8位是主机位,ip前24位相同,表示是同一个子网的 IPv6 地址: ipv6地址一共128位,通常写作8组,每组为四个十六进制数的形式,中间用“:”隔开,每一部分是16位. 子网掩码只有一种表示(ipv6已经不叫子网掩码,叫前缀,前缀表示网络位). 现在为了和ipv4表示对比,ipv6的地址,同一i

闲话IPv6地址

巨大的IPv6地址空间保证阿猫阿狗都有唯一地址 IPv6的最主要动机就是满足全球唯一地址的需求.IPv6网络地址位数是IPv4的四倍,一个是32位,一个是128位.IPv6可以提供这颗行星上面每一个网络设备唯一的地址.因为是全球唯一,IPv6地址使得网络设备的全球可达性和端到端安全变得可能,该功能对某些应用和服务很关键.此外,IPv6地址空间的灵活性减少了对私有地址和NAT的需求:因此,IPv6使得新的应用协议不需要边缘路由器进行特殊处理.边缘路由器是NAT进行的地方. IPv6地址格式 IPv

第11章 拾遗4:IPv6(2)_给计算机配置IPv6地址

4. 给计算机配置IPv6地址 4.1 无状态自动配置IPv6地址 (1)网络拓扑 ①无状态地址自动配置是指不需要DHCP服务器进行管理,由客户端向路由器发送前缀请求(RS)询问其所在网段.路由器收到RS后,会发送前缀公告消息(RA),客户端根据网络RA并自己的MAC地址计算出IPv6地址 ②注意:RA公告不支持DNS分发,所以客户端只能得到IPv6地址,而得不到DNS服务器地址等额外信息. (2)路由器配置 R2#conf t R2(config)#ipv6 unicast-routing /

win10 localhost 解析为 ipv6地址 ::1 的解决办法

localhost 访问时提示 not found 404,但是有127.0.0.1可以访问.最后找到原因,是因为 windows 把 localhost 解析为 ipv6 地址 ::1 而不是 127.0.0.1.查了hosts 把ipv6已经屏蔽了,127.0.0.1 localhost 也有,就是不能正常解析. 解决办法: 打开注册表,找到键 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters,添加类

IPV6地址理解及配置

 理解: IPv6单播地址的类型可有多种,包括全球单播地址.链路本地地址和站点本地地址等. 1. 全球单播地址等同于IPv4公网地址,提供给网络服务提供商. 这种类型的地址允许路由前缀的聚合,从而限制了全球路由表项的数量. 2. 链路本地地址用于邻居发现协议和无状态自动配置中链路本地上节点 之间的通信.使用链路本地地址作为源或目的地址的数据报文不会被转发 到其他链路上. 3. 站点本地地址与IPv4中的私有地址类似.使用站点本地地址作为源或目 的地址的数据报文不会被转发到本站点(相当于一个私

利用DNS AAAA记录和IPv6地址传输后门

0x00 前言 在本文中,我想解释如何在DNS流量中利用IPv6地址(AAAA)记录传输Payload.在我之前的文章中,我解释了如何利用DNS和PTR记录,现在我们将讨论AAAA记录. 本文分为两部分: 第一部分:DNS AAAA记录和ICMPv6 第二部分:DNS和AAAA记录(大的DNS AAAA记录响应) 0x01 DNS AAAA记录和ICMPv6 IPv6地址对于传输Payload非常有用,让我解释下如何完成这个例子. 举个例子,我们有一个IPv6地址如下: fe80:1111:00

【Atheros】pktgen的ipv6地址处理函数参考及ipv6基本知识

pktgen有很多函数可以作为很好的网络相关的工具函数,这里列出ipv6中1:0:0:0:0:0:0:1和1::1这两种地址形式相互转化的工具函数. 第一个函数,用于把一个1:0:0:0:0:0:0:1形式的地址转化为1::1 /* * scan_ip6, fmt_ip taken from dietlibc-0.21 * Author Felix von Leitner <[email protected]> * * Slightly modified for kernel. * Shoul