Internet 协议版本 6 (IPv6) 概述

Internet 协议版本 6 (IPv6) 是 Internet 网络层的标准协议套件。 IPv6 旨在解决当前版本的 Internet 协议套件(称为 IPv4)的许多问题,即地址耗尽、安全性、自动配置、扩展性等。 IPv6 扩展了 Internet 的功能,以启用新类型的应用程序,包括对等应用程序和移动应用程序。 以下是当前 IPv4 协议的主要问题:

  • 地址空间的快速耗尽。

    这导致使用将多个专用地址映射到单个公共 IP 地址的网络地址翻译器(NAT)。 此机制造成的主要问题是处理开销和端对端连接性的缺失。

  • 缺少层次结构支持。

    由于其固有的预定义类组织,IPv4 缺乏真正的分层支持。 无法以真正映射网络拓扑的方式构建 IP 地址。 这种关键的设计缺陷使大型路由表需要将 IPv4 数据包传送到 Internet 上的任意位置。

  • 复杂的网络配置。

    使用 IPv4 时,必须静态分配地址或使用配置协议(如 DHCP)。 在理想情况下,主机不必依赖于 DHCP 基础结构的管理。 相反,他们能够基于它们所在的网络段自行配置。

  • 缺少内置身份验证和机密性。

    IPv4 不需要支持提供交换数据身份验证或加密的任何机制。 随着 IPv6 的使用,这会发生变化。 Internet 协议安全性(IPSec)是 IPv6 支持要求。

新的协议套件必须满足以下基本要求:

  • 低开销的大规模路由和寻址。
  • 针对各种连接情况自动配置。
  • 内置身份验证和机密性。

IPv6 寻址

使用 IPv6 时,地址长度为 128 位。 如此大的地址空间的一个原因是将可用地址细分为反映 Internet 拓扑的路由域的层次结构。 另一个原因是映射将设备连接到网络的网络适配器(或接口)的地址。 IPv6 具有一种固有的功能,可在最低级别(位于网络接口级别)解析地址,并且还具有自动配置功能。

文本表示形式

以下是用于将 IPv6 地址表示为文本字符串的三种常规形式:

  • 冒号十六进制形式:

    这是首选形式 n:n:n:n:n:n:n:n。 每个 n 值表示地址的 8 个 16 位元素之一的十六进制值。 例如: 3FFE:FFFF:7654:FEDA:1245:BA98:3210:4562

  • 压缩形式:

    由于地址长度,通常有包含长度为零的长字符串的地址。 为了简化这些地址的编写,请使用压缩形式,其中单个连续的 0 块序列由双冒号符号 (::) 表示。 此符号只能在地址中显示一次。 例如,压缩形式的多播地址 FFED:0:0:0:0:BA98:3210:4562FFED::BA98:3210:4562。 单播地址 3FFE:FFFF:0:0:8:800:20C4:0 的压缩形式是 3FFE:FFFF::8:800:20C4:0。 压缩形式的环回地址 0:0:0:0:0:0:0:1::1。 压缩形式的未指定地址 0:0:0:0:0:0:0:0::

  • 混合形式:

    此窗体结合了 IPv4 和 IPv6 地址。 在这种情况下,地址格式为 n:n:n:n:n:n:d.d.d.d,其中每个 n 表示六个 IPv6 高阶 16 位地址元素的十六进制值,每个 d 表示 IPv4 地址的十进制值。

地址类型

地址中的前导位定义特定的 IPv6 地址类型。 包含这些前导位的可变长度字段称为格式前缀(FP)。

IPv6 的单播地址分为两个部分。 第一部分包含地址前缀,第二部分包含接口标识符。 表达 IPv6 地址/前缀组合的简洁方法是:ipv6-address/prefix-length。

下面是具有 64 位前缀的地址的示例。

3FFE:FFFF:0:CD30:0:0:0:0/64

此示例中的前缀为 3FFE:FFFF:0:CD30. 地址也可以以压缩形式编写,如 3FFE:FFFF:0:CD30::/64

IPv6 定义以下地址类型:

  • 单播地址:

    单个接口的标识符。 发送到此地址的数据包将传递到标识的接口。 单播地址通过高阶八进制数的值与多播地址区分开来。 多播地址的高序位八进制数具有 FF 的十六进制值。 此八进制数的任何其他值标识单播地址。 以下是不同类型的单播地址:

    • 链接本地地址:

      这些地址用于单个链接,并具有以下格式: FE80::*InterfaceID* 链接本地地址用于链接的节点之间以实现自动地址配置、邻居发现,或者用于不存在路由器的情况。 链接本地地址主要用于系统启动时,以及系统尚未获取较大范围地址时使用。

    • 站点本地地址:

    这些地址在单个网站上使用,格式如下: FEC0::*SubnetID*:*InterfaceID* 站点本地地址用于在站点内寻址,而无需全局前缀。

    • 全局 IPv6 单播地址:

    这些地址可以跨 Internet 使用,并采用以下格式: *GlobalRoutingPrefix*::*SubnetID*:*InterfaceID*

  • 多播地址:

    一组接口(通常属于不同节点)的标识符。 发送到此地址的数据包将传递到地址标识的所有接口。 多播地址类型取代 IPv4 广播地址。

  • 任播地址:

    一组接口(通常属于不同节点)的标识符。 发送到此地址的数据包仅传送到地址标识的一个接口。 这是路由指标标识的最接近的接口。 任播地址取自单播地址空间,在语法上是不可区分的。 寻址的接口根据其配置区分单播和任播地址。

通常,节点始终具有链路本地地址。 它可能有站点本地地址和一个或多个全局地址。

IPv6 路由

灵活的路由机制是 IPv6 的优势。 由于 IPv4 网络 ID 的分配方式,大型路由表需要由 Internet 主干上的路由器维护。 这些路由器必须知道转发可能定向到 Internet 上任何节点的数据包的所有路由。 借助 IPv6 聚合地址的能力,可以灵活寻址,并大幅减小路由表的大小。 在此新的寻址体系结构中,中间路由器必须仅跟踪其网络的本地部分,以适当地转发消息。

邻居发现

邻居发现提供的一些功能包括:

  • 路由器发现: 这样,主机就可以识别本地路由器。
  • 地址解析: 这使得节点能够为相应的下一跳地址解析链路层地址(作为地址解析协议 [ARP] 的替代)。
  • 地址自动配置: 这允许主机自动配置站点本地地址和全局地址。

邻居发现使用 IPv6 的 Internet 控制消息协议 (ICMPv6) 消息,包括:

  • 路由器播发:由路由器在伪周期基础上发送或作为路由器招标的响应发送。 IPv6 路由器使用路由通告来宣布其可用性、地址前缀和其他参数。
  • 路由器请求: 由主机发送,以请求链接上的路由器立即发送路由器通告。
  • 邻居请求: 节点发送地址解析、重复地址检测或验证邻居是否仍可访问。
  • 邻居广告: 由节点发送以响应邻居请求,或通知邻居对链接层地址的更改。
  • 重定向:由路由器发送,以指示特定目标的下一个更好的跃点地址,用于发送节点。

IPv6 自动配置

IPv6 的一个重要目标是支持节点即插即用。 也就是说,应该可以将节点插入 IPv6 网络,并在没有任何人工干预的情况下自动配置该节点。

自动配置类型

IPv6 支持以下类型的自动配置:

  • 有状态自动配置:

    这种类型的配置需要某种级别的人工干预,因为它需要 IPv6 (DHCPv6) 服务器的动态主机配置协议才能安装和管理节点。 DHCPv6 服务器保留它向其提供配置信息的节点列表。 它还维护状态信息,以便服务器知道每个地址的使用时间,以及何时可用于重新分配。

  • 无状态自动配置:

    这种类型的配置适用于小型组织和个人。 在这种情况下,每个主机从接收的路由器通告的内容中确定其地址。 使用 IEEE EUI-64 标准来定义地址的网络 ID 部分,可以合理地假设链接上的主机地址的唯一性。

无论地址如何确定,节点都必须验证其潜在地址是否对本地链接是唯一的。 这是通过将邻居请求消息发送到潜在地址来完成的。 如果节点收到任何响应,则它知道该地址已在使用中,并且必须确定另一个地址。

IPv6 移动性

移动设备的激增引入了新的要求:设备必须能够任意更改 IPv6 Internet 上的位置,并且仍然保持现有连接。 为了提供此功能,移动节点将分配一个始终可以访问该节点的主地址。 当移动节点位于家时,它将连接到主链接并使用其主地址。 当移动节点远离家庭时,主代理(通常是路由器)在移动节点与其通信的节点之间中继消息。

禁用或启用 IPv6

若要使用 IPv6 协议,请确保运行支持 IPv6 的作系统版本,并确保正确配置作系统和网络类。

配置步骤

下表列出了各种配置

操作系统是否启用了 IPv6? 已启用代码 IPv6? DESCRIPTION
❌ 否 ❌ 否 可以分析 IPv6 地址。
❌ 否 ✔️ 是的 可以分析 IPv6 地址。
✔️ 是的 ❌ 否 使用未标记为过时的名称解析方法,可以分析并解析 IPv6 地址。
✔️ 是的 ✔️ 是的 可以使用所有方法(包括标记为已过时的方法)分析和解析 IPv6 地址。

默认情况下,IPv6 处于启用状态。 若要在环境变量中配置此开关,请使用 DOTNET_SYSTEM_NET_DISABLEIPV6 环境变量。 有关详细信息,请参阅 .NET 环境变量:DOTNET_SYSTEM_NET_DISABLEIPV6

另请参阅