IPv6 理论教程

本文最后更新于:2022年8月10日 上午

Internet协议版本6(IPv6)是互联网协议(IP)的最新修订版本和要广泛部署的协议的第一版本。 IPv6由互联网工程任务组(IETF)开发,用于处理IPv4地址耗尽的长期预期问题。 。

概述

互联网协议版本6是一种新的寻址协议,旨在包含未来互联网的所有可能需求,我们知道互联网版本2.该协议作为其前身IPv4,工作在网络层(第3层)。 随着其提供大量的逻辑地址空间,该协议具有充分的特征,其解决了IPv4的缺点。

为什么是新的IP版本?

到目前为止,IPv4已经证明自己是一个可靠的可路由寻址协议,并且已经为我们的最大努力传递机制服务了几十年。 它是在80年代初设计的,没有得到任何重大的变化。 在它诞生时,互联网仅限于少数几所大学的研究和国防部。 IPv4是32位长,并提供大约4,294,967,296($2^{32}$ )个地址。 这个地址空间被认为是足够的时间。 以下是在IPv6诞生中发挥关键作用的要点:

  • 互联网呈指数增长,IPv4允许的地址空间饱和。 需要具有能够满足未来互联网地址的需求的协议,该协议期望以意想不到的方式增长。
  • IPv4本身不提供任何安全功能。 在Internet上发送数据之前,必须使用某些其他安全应用程序对数据进行加密。
  • IPv4中的数据优先级不是最新的。 尽管IPv4具有为服务类型或服务质量保留的几个比特,但是它们不提供很多功能。
  • 可以手动配置启用IPv4的客户端,或者需要一些地址配置机制。 它没有将设备配置为具有全局唯一IP地址的机制。

特性

IPv4的后继设计不是向后兼容的。 为了保持IP地址的基本功能,IPv6被完全重新设计。 它提供以下功能:

  • 较大的地址空间

    与IPv4相反,IPv6使用4倍多的位来寻址Internet上的设备。 这些额外的位可以提供大约3.4×1038个不同的地址组合。 这个地址可以累积对于这个世界中的几乎一切的地址分配的积极要求。 根据估计,1564个地址可以分配给这个地球的每平方米。

  • 简化标题

    通过将所有不必要的信息和选项(存在于IPv4报头中)移动到IPv6报头的末尾,简化了IPv6的报头。 IPv6报头只有IPv4的两倍大,只要IPv6地址是四倍长。

  • 端到端连接

    每个系统现在都有唯一的IP地址,并且可以通过Internet而不使用NAT或其他翻译组件。 IPv6完全实施后,每个主机都可以直接访问Internet上的其他主机,但存在一些限制,如防火墙,组织策略等。

  • 自动配置

    IPv6支持其主机设备的有状态和无状态自动配置模式。 这样,没有DHCP服务器不会停止段间通信。

  • 更快转发/路由

    简化头将所有不必要的信息放在头的末尾。 包含在报头的第一部分中的信息对于路由器进行路由决定是足够的,从而使得路由决定与查看强制报头一样快。

  • IPSec

    最初,决定IPv6必须具有IPSec安全性,使其比IPv4更安全。 此功能现已可选。

  • 无广播

    虽然以太网/令牌环被认为是广播网络,因为它们支持广播,IPv6不再有任何广播支持。 它使用多播与多个主机通信。

  • 任播支持

    这是IPv6的另一个特点。 IPv6引入了分组路由的Anycast模式。 在此模式下,Internet上的多个接口分配相同的任播IP地址。 路由器,当路由时,发送数据包到最近的目的地。

  • 移动性

    IPv6被设计成保持移动性。 此功能使主机(如移动电话)在不同的地理区域漫游,并保持与同一IP地址连接。 IPv6的移动性功能利用自动IP配置和扩展报头。

  • 增强优先级支持

    IPv4使用6位DSCP(差分服务代码点)和2位ECN(显式拥塞通知)来提供服务质量,但它只能在端到端设备支持它时使用,即源设备和目的设备 并且底层网络必须支持它。

    在IPv6中,流量类和流标签用于告诉底层路由器如何有效地处理数据包并对其进行路由。

  • 平稳过渡

    IPv6中的大IP地址方案使得能够分配具有全球唯一IP地址的设备。 此机制保存IP地址,不需要NAT。 因此,设备可以在彼此之间发送/接收数据,例如,VoIP和/或任何流媒体可以被高效地使用。

    其他事实是,报头负载较少,因此路由器可以采取转发决定,并尽快转发他们到达。

  • 可扩展性

    IPv6报头的一个主要优点是可扩展以在选项部分中添加更多信息。 IPv4仅提供40字节的选项,而IPv6中的选项可以与IPv6数据包本身的大小一样多。

寻址模式

在计算机网络中,寻址模式是指在网络上托管地址的机制。 IPv6提供了几种类型的模式,通过它们可以寻址单个主机。 可以立即寻址多个主机,或者可以寻址最近距离处的主机。

单播

在单播寻址模式下,IPv6接口(host)在网段中唯一标识。 IPv6数据包包含源IP地址和目标IP地址。 主机接口配备有在该网络段中唯一的IP地址。当网络交换机或路由器接收到单个主机的单播IP分组时,它发出其连接到该特定主机的输出接口之一 。

组播

IPv6组播模式与IPv4相同。 目的地为多个主机的数据包在特殊的多播地址上发送。 所有对该组播信息感兴趣的主机需要首先加入该组播组。 加入组的所有接口接收组播数据包并对其进行处理,而对组播数据不感兴趣的其他主机则忽略组播信息。

任播

IPv6引入了一种新型的寻址,称为Anycast寻址。 在此寻址模式下,多个接口(host)被分配相同的任播IP地址。 当主机希望与配备有任播IP地址的主机通信时,它发送单播消息。 在复杂的路由机制的帮助下,在路由成本方面,该单播消息被递送到最接近发送方的主机。

让我们以一个位于所有大陆的TutorialPoints.com Web服务器为例。 假设所有Web服务器都分配有单个IPv6 Anycast IP地址。 现在,当欧洲的用户希望访问TutorialsPoint.com时,DNS指向物理上位于欧洲的服务器。 如果来自印度的用户尝试访问Tutorialspoint.com,则DNS将指向物理位于亚洲的Web服务器。 最接近或最接近的术语用于路由成本。

在上面的图片中,当客户端计算机尝试到达服务器时,请求被转发到具有最低路由开销的服务器。

地址类型和格式

十六进制数字系统

在介绍IPv6地址格式之前,我们将探讨十六进制数字系统。 十六进制是使用radix(base)为16的位置数系统。为了以可读格式表示值,该系统使用0-9个符号表示从0到9的值,A-F表示从10到15的值。 十六进制中的每个数字都可以表示0到15之间的值。

地址结构

IPv6地址由被划分为8个16位块的128位组成。 然后将每个块转换为由冒号符号分隔的4位十六进制数字。

每个块被转换为十六进制并由’:'符号分隔:

1
2001:0000:3238:DFE1:0063:0000:0000:FEFB

即使在转换为十六进制格式后,IPv6地址仍然很长。 IPv6提供了一些规则来缩短地址。 规则如下:

**规则1:**丢弃前导零:

在块5,0063中,可以省略前导的两个0,例如(第五块):

2001:0000:3238:DFE1:63:0000:0000:FEFB

**规则2:**如果两个或多个块包含连续零,则省略它们并用双冒号sign ::替换,例如(第6和第7块):

2001:0000:3238:DFE1:63::FEFB

连续的零块只能被::替换一次。如果地址中仍有零块,它们可以缩小到一个零,例如(第二块):

2001:0:3238:DFE1:63::FEFB

全局单播地址

此地址类型等同于IPv4的公共地址。 IPv6中的全球单播地址是全局可识别的和唯一可寻址的。

全局路由前缀:最高有效48位指定为全局路由前缀,分配给特定的自治系统。 全局路由前缀的三个最高有效位始终设置为001。

链路本地地址

自动配置的IPv6地址称为链路本地地址。 此地址始终以FE80开头。 链路本地地址的前16位总是设置为1111 1110 1000 0000(FE80)。 接下来的48位设置为0,因此:

链路本地地址仅用于链路(广播段)上的IPv6主机之间的通信。 这些地址不可路由,因此路由器不会将这些地址转发到链路之外。

唯一本地地址

这种类型的IPv6地址是全局唯一的,但它应该用于本地通信。 该地址的后半部分包含接口ID,前半部分被分为前缀,本地位,全局ID和子网ID。

前缀始终设置为1111 110。
L位,如果地址是本地分配,则设置为1。 到目前为止,L位到0的含义没有定义。
因此,唯一本地IPv6地址始终以“FD"开头。

IPv6单播地址范围

链路本地地址的范围仅限于段。 唯一本地地址是本地全局的,但不通过Internet路由,将其范围限制为组织的边界。 全球单播地址是全球唯一和可识别的。 他们应该是互联网寻址的本质。

特殊地址

IPv6具有比IPv4更复杂的IP地址结构。 IPv6已经为特殊目的保留了几个地址和地址符号。 参见下表:

  • 如表所示,地址0:0:0:0:0:0:0:0/128不指定任何内容,称为未指定地址。 简化后,所有的0被压缩为:: / 128。
  • 在IPv4中,地址0.0.0.0与网络掩码0.0.0.0表示默认路由。 相同的概念也适用于IPv6,地址0:0:0:0:0:0:0:0,网络掩码全0表示默认路由。 应用IPv6规则后,此地址压缩为:: / 0。
  • IPv4中的环回地址由127.0.0.1到127.255.255.255系列表示。 但在IPv6中,只有0:0:0:0:0:0:0:1/128表示环回地址。 环回地址后,可以表示为:: 1/128。

路由协议的保留组播地址

  • 上表显示了内部路由协议使用的保留组播地址。
  • 按照与IPv4相同的规则保留地址。

保留路由器/节点的多播地址

  • 这些地址帮助路由器和主机与段上的可用路由器和主机通信,而无需配置IPv6地址。 主机使用基于EUI-64的自动配置来自配置IPv6地址,然后通过这些地址与段上的可用主机/路由器通信。

报头

IPv6的奇迹在于它的头部。 IPv6地址是IPv4的4倍,但令人惊讶的是,IPv6地址的头部仅比IPv4的头部大2倍。 IPv6报头有一个固定报头和零个或多个可选(扩展)报头。 所有必要的信息,对路由器是必不可少的保存在固定报头。 扩展报头包含可选信息,帮助路由器了解如何处理数据包/流。

固定标题

IPv6固定报头长度为40字节,包含以下信息。

S.N. 字段和说明
1 版本(4位):表示Internet协议的版本,即0110。
2 流量类(8位):这8位分为两部分。 最重要的6位用于服务类型,以便让路由器知道应该向该分组提供什么服务。 最低有效2位用于显式拥塞通知(ECN)。
3 流标签(20位):此标签用于维护属于通信的数据包的顺序流。 源标记序列以帮助路由器识别特定分组属于特定信息流。 此字段有助于避免数据包的重新排序。 它是为流媒体/实时媒体设计的。
4 有效负载长度(16位):该字段用于告诉路由器特定分组在其有效载荷中包含多少信息。 有效载荷由扩展报头和上层数据组成。 使用16位,可以指示高达65535个字节; 但是如果扩展报头包含逐跳扩展报头,则有效载荷可能超过65535字节,并且此字段设置为0。
5 下一个报头(8位):该字段用于指示扩展报头的类型,或者如果扩展报头不存在,则它指示上层PDU。 上层PDU的类型的值与IPv4的相同。
6 跳跃限制(8位):此字段用于无限期地停止数据包在网络中循环。 这与IPv4中的TTL相同。 跳跃限制字段的值在它通过链路(路由器/跳跃)时递减1。 当字段达到0时,数据包被丢弃。
7 源地址(128位):此字段指示数据包的发起方的地址。
8 目的地址(128位):此字段提供数据包的预期收件人的地址。

扩展头

在IPv6中,固定报头只包含所需的很多信息,避免那些不需要或很少使用的信息。 所有这些信息以扩展报头的形式被放在固定报头和上层报头之间。 每个扩展头由不同的值标识。

当使用扩展报头时,IPv6固定报头的下一报头字段指向第一个扩展报头。 如果还有一个扩展头,则第一个扩展头的“下一个头"字段指向第二个扩展头,依此类推。 最后一个扩展头的“下一个头"字段指向上层头。 因此,所有报头以链接列表方式指向下一个报头。

如果下一个报头字段包含值59,则表示在此报头之后没有报头,甚至不是上层报头。

根据RFC 2460,必须支持以下扩展报头:

扩展报头的顺序应该是:

这些标题:

  • 1.应由第一个和后续目的地处理。
  • 2.应由最终目的地处理。

扩展报头以链表方式一个接一个地排列,如下图所示:

通信

在IPv4中,希望与网络上的另一个主机通信的主机需要具有通过DHCP或手动配置获取的IP地址。 只要主机配备了一些有效的IP地址,它就可以与子网上的任何主机通信。 要在第3层上进行通信,主机还必须知道其他主机的IP地址。 在链路上的通信是通过硬件嵌入的MAC地址建立的。 要知道其IP地址已知的主机的MAC地址,主机发送ARP广播,作为回应,目标主机发回其MAC地址。

在IPv6中,没有广播机制。 启用IPv6的主机不是必须从DHCP获取IP地址或手动配置,但它可以自动配置其自己的IP。

ARP已被ICMPv6邻居发现协议替代。

邻居发现协议

IPv6网络中的主机能够使用唯一的链路本地地址自动配置自身。 一旦主机获得IPv6地址,它就加入多个多播组。 与该段相关的所有通信仅在那些多播地址上发生。 主机通过IPv6中的一系列状态:

  • 邻居请求:手动或通过DHCP服务器或自动配置配置所有IPv6后,主机向其所有IPv6地址的FF02 :: 1/16多播地址发送邻居请求消息 命令知道没有人占据相同的地址。
  • DAD(重复地址检测):当主机不侦听来自段中关于其邻居请求消息的任何内容时,假定段上没有重复地址。
  • 邻居通告:在将地址分配给其接口并使其启动和运行后,主机再次发出邻居通告消息,通知该段上的所有其他主机,它已分配这些IPv6地址 其接口。

一旦主机完成了其IPv6地址的配置,它会执行以下操作:

  • 路由器请求:主机在其段上发送路由器请求组播数据包(FF02 :: 2/16),以了解此段上任何路由器的存在。 它帮助主机将路由器配置为其默认网关。 如果其默认网关路由器关闭,主机可以切换到新的路由器,并使其成为默认网关。
  • 路由器通告:当路由器接收到路由器请求消息时,它回应主机,通告它在该链路上的存在。
  • 重定向:这可能是路由器收到路由器请求,但它知道它不是主机的最佳网关的情况。 在这种情况下,路由器发回一个重定向消息,告诉主机有一个更好的“下一跳"路由器可用。 下一跳是主机将其发送给不属于相同段的主机的数据发送的地方。

子网划分

在IPv4中,地址是在类中创建的。等级IPv4地址清楚地定义了用于网络前缀的位和用于该网络上主机的位。要在IPv4中进行子网,我们使用默认的类别的网络掩码,这允许我们借用要用作子网位的主机位。这导致多个子网,但是每个子网的主机少。也就是说,当我们借用主机位来创建一个子网时,我们用较少的一点来用于主机地址。

IPv6地址使用128位表示一个地址,其中包含用于子网划分的位。地址的后半部分(最低有效位64位)始终仅用于主机。因此,如果我们对网络进行子网分配,则不会有任何妥协。

子网的16位相当于IPv4的B类网络。使用这些子网位,一个组织可以拥有另外65千个子网,这远远超出了这个。

因此路由前缀是/ 64,主机部分是64位。我们可以通过借用主机位进一步将网络子网超过16位子网ID; 但建议始终为主机地址使用64位,因为自动配置需要64位。

IPv6子网与IPv4中的可变长度子网掩码的概念相同。

/ 48前缀可以分配给一个组织,它具有最多/ 64个子网前缀的优点,这是65535个子网络,每个子网络具有264个主机。可以将A / 64前缀分配给链路上只有两个主机(或启用IPv6的设备)的点对点连接。

移动性

当主机连接到链路或网络时,它会获取IP地址,并且使用该链路上的该IP地址进行所有通信。 一旦相同的主机改变其物理位置,即移动到另一个区域/子网/网络/链路,其IP地址相应地改变,并且在主机上使用旧的IP地址发生的所有通信都关闭。

IPv6移动性为主机在不丢失任何通信/连接及其IP地址的情况下漫游不同链路提供了一种机制。

此技术涉及多个实体:

  • 移动节点:需要IPv6移动性的设备。
  • 主链路:此链路配置有主子网前缀,这是移动IPv6设备获取其归属地址的地方。
  • 家庭地址:这是移动节点从家庭链路获取的地址。 这是移动节点的永久地址。 如果移动节点保持在相同的归属链路中,则各种实体之间的通信照常进行。
  • 原籍代理:这是一个充当移动节点注册商的路由器。 归属代理连接到归属链路并维护关于所有移动节点,其归属地址及其当前IP地址的信息。
  • 外部链接:任何其他不是移动节点的主链接的链接。
  • 转交地址:当移动节点连接到外部链接时,它会获取该外部链接子网的新IP地址。 归属代理维护归属地址和转交地址的信息。 可以将多个转交地址分配给移动节点,但是在任何情况下,只有一个转交地址与归属地址绑定。
  • 通讯节点:任何打算与移动节点进行通信的启用IPv6的设备。

路由

路由概念在IPv6的情况下保持相同,但是几乎所有路由协议都被相应地重新定义。 我们之前讨论过,主机如何对其网关说话。 路由是转发可路由数据的过程,其选择在到目的地的若干可用路由或路径之中的最佳路由。 路由器是一种转发未明确指定给它的数据的设备。

存在两种形式的路由协议:

  • 距离向量路由协议:运行距离向量协议的路由器通告其连接的路由,并从其邻居学习新的路由。 到达目的地的路由成本通过源和目的地之间的跳计算。 路由器通常依赖于其邻居来进行最佳路径选择,也称为“通过谣言路由"。 RIP和BGP是距离矢量协议。
  • 链路状态路由协议:此协议确认链路的状态,并通告其邻居。 从对等路由器学习关于新链路的信息。 在所有路由信息已经收敛之后,链路状态路由协议使用其自己的算法来计算到所有可用链路的最佳路径。 OSPF和IS-IS是链路状态路由协议,它们都使用Dijkstra的最短路径优先算法。

路由协议可以分为两类:

  • 内部路由协议:此类别中的协议在自治系统或组织内用于在其边界内的所有路由器之间分发路由。 示例:RIP,OSPF。
  • 外部路由协议:外部路由协议在两个不同的自治系统或组织之间分布路由信息。 示例:BGP。

路由协议

  • RIPng

    RIPng代表下一代路由信息协议。 这是一个内部路由协议,是一个距离矢量协议。 RIPng已升级以支持IPv6。

  • OSPFv3

  • 开放最短路径优先版本3是经过修改以支持IPv6的内部路由协议。 这是一个链路状态协议,并使用Djikrasta的最短路径优先算法来计算到所有目的地的最佳路径。

  • BGPv4

    BGP代表边界网关协议。 它是唯一的开放标准外部网关协议可用。 BGP是一种距离向量协议,它使用自治系统作为计算度量,而不是路由器的数量作为Hop。 BGPv4是BGP的升级以支持IPv6路由。

协议更改为支持IPv6

  • ICMPv6 :Internet控制消息协议版本6是ICMP的升级实现,以适应IPv6要求。 该协议用于诊断功能,错误和信息消息,统计目的。 ICMPv6的邻居发现协议替换ARP,并帮助发现链路上的邻居和路由器。
  • DHCPv6 :动态主机配置协议版本6是DHCP的一种实现。 启用IPv6的主机不需要任何DHCPv6服务器获取IP地址,因为它们可以自动配置。 他们也不需要DHCPv6定位DNS服务器,因为可以通过ICMPv6邻居发现协议发现和配置DNS。 然而DHCPv6服务器可以用于提供这些信息。
  • DNS :没有新版本的DNS,但它现在配备了扩展,以支持查询IPv6地址。 添加了新的AAAA(quad-A)记录以回复IPv6查询消息。 现在DNS可以用两个IP版本(4和6)回复,而查询格式没有任何改变。

参考资料


IPv6 理论教程
https://www.zywvvd.com/notes/coding/internet/ipv6/ipv6/
作者
Yiwei Zhang
发布于
2021年12月17日
许可协议