IPv4协议仅能提供约2.5亿个IP地址, 即使使用CIDR和NAT等技术进行扩展也无法满足日益增长的需要。
IETF于1996年开始研究下一代IP协议IPv6, 并于1998年12月正式公布(RFC2460).至2014年10月,通过IPv4使用Google服务的用户仍占约95%。
IPv6除将IP地址由32位扩展到128位以外还引入了更多扩展:
-
扩展的地址层次结构
-
灵活的首部格式
-
改进的选项
-
允许协议继续扩充
-
支持即插即用(即自动配置地址)
-
支持资源的预分配
-
IPv6首部改为8字节对齐
IPv6 将实现 IPv6 的主机和路由器均称为结点,IIPv6 地址分配给结点上的接口。一个结点可以有多个单播地址,结点任一接口的单播地址可用来唯一地标志该结点。
IPv6地址可以采用点分16进制记法:
68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
一串连续的0可以被::
取代, 为了避免二义性一个地址中最多出现一次::
:
FF05:0:0:0:0:0:0:B3 -> FF05::B3
128位全0地址(缩写::
)代替`0.0.0.0`来表示任意地址,本地环回地址为::1
.以及本地链路单播地址FE80::/10
。
IPv6把前三位为001
的地址划分为全球单播地址,并将单播地址分为3级:
- 全球路由选择前缀,占 48 位
- 子网标识符,占16 位
- 接口标识符,占 64 位
IPv6 把原来 IPv4 首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站的主机来处理。IPv6支持的扩展首部包括:
-
逐跳选项
-
路由选择
-
分片
-
鉴别
-
封装安全有效载荷
-
目的站选项
除逐跳选项扩展首部外, 数据报途中经过的路由器都不处理这些扩展首部.
IPv6 数据报的目的地址可以是以下三种基本类型地址之一:
-
单播(unicast): 单播就是传统的点对点通信。
-
多播(multicast): 多播是一点对多点的通信。
-
任播(anycast): IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。
IPv6把分片限制为由源站来完成, IPv6可以保证的最小MTU(Maximum Transfer Unit) 为1280字节。分片是端到端的,路径途中的路由器不允许进行分片。
源站也在发送数据前完成路径最大传送单元发现(Path MTU Discovery),以确定沿着该路径到目的站的最小 MTU。
端到端分片可以减少路由器的开销,允许路由器在单位时间处理更多的数据报。但是中间路由器不能轻易地改变路由,因为改变路由可能会改变路径的MTU。
IPv6允许中间路由器采用隧道技术来传送太长的数据报。当路径途中的路由器需要对数据报进行分片时,就创建一个全新的数据报,然后将这个新的数据报分片,并在各个数据报片中插入扩展首部和新的基本首部。
路由器将每个数据报片发送给最终的目的站,而在目的站将收到的各个数据报片收集起来,组装成原来的数据报,再从中抽取出数据部分。