IPv6

本文参考《计算机网络(第7版)》

目录

  • IPv6
  • IPv6 的基本首部
  • IPv6 的扩展首部
  • IPv6 的地址
    • Understanding IPv6 Link Local Address
  • 从 IPv4 向 IPv6 过渡
    • 双协议栈
    • 隧道技术
  • ICMPv6

IPv6

解决 IPv4 地址耗尽问题

  • 采用无类别编址 CIDR,使 IP 地址的分配更加合理
  • 采用网络地址转换 NAT 方法以节省全球 IP 地址
  • 采用具有更大地址空间的新版本的 IP 协议 IPv6 (根本措施)

IPv6 的主要特征

  • 有效的分级路由结构 — 地址划分为适应路由的层次结构,适应了现代 Internet 网络结构的特点
  • 支持地址自动配置 — 简化了使用,提高了效率
  • 内置安全性 — IPv6 支持 IPSec 协议,为网络安全性提供了一种标准的解决方案
  • 更好地支持 QoS — 协议首部定义了“通信类型、流标记”字段来区分其优先级,可以更好地支持 QoS
  • 协议更加简洁 — ICMPv6 具备了 ICMPv4 的所有基本功能,合并了ICMP、IGMP 与 ARP 等多个协议的功能,使协议体系变得更加简洁

IPv6 的基本首部

  • IPv6 采用新的协议头格式
    • 首部长度变为固定 (基本首部) (40字节)
    • 增加了可选的扩展首部,,扩展首部可以具有不同的长度,可以很方便地实现功能的扩展 (可扩展性)
    • 取消了首部的检验和字段,加快了路由器处理速度

IPv6_第1张图片


IPv6_第2张图片

  • 版本:4 位。指明协议的版本,对 IPv6 该字段总是 6
  • 通信类型 (traffic class):8 位。区分不同的 IPv6 数据报的类别或优先级。目前正在实验中
  • 流标记 (flow label):20 位
    • IPv6 的一个新机制是支持资源预分配, 并且允许路由器把每一个数据报与一个给定的资源分配相联系
    • ”是互联网络上从特定源点到特定终点的一系列分组, “流”所经过的路径上的路由器都保证指明的服务质量。用于非默认的QoS连接,例如实时数据(音频和视频)的连接
    • 流标记 表示分组属于源结点和目标结点之间的一个特定分组序列,需要由中间 IPv6 路由器进行特殊处理。属于同一个流的分组具有相同的流标记。普通数据无用,置为0
  • 有效载荷长度 (payload length):16 位。指明 IPv6 分组除基本首部以外的字节数(所有扩展首部都算在有效载荷之内)
  • 下一个首部 (next header):8 位
    • 当出现扩展首部时,用于标识后面第一个扩展首部的类型
      IPv6_第3张图片
    • 当没有扩展首部时,相当于 IPv4 的协议字段,用于指出基本首部后面的数据应交付 IP 层上面的哪一个高层协议
      IPv6_第4张图片
  • 跳数限制 (hop limit): 8 位。表示 IPv6 分组可以通过的最大路由器转发数 (即 TTL)。路由器在转发分组时将其值减1。当跳数限制的值为零时,丢弃此数据分组
  • 源地址 / 目的地址:128 位。是分组发送 / 接收站的 IPv6 地址

IPv6 的扩展首部

  • IPv6 把 IPv4 首部中的选项功能都放在扩展首部中,并把扩展首部留给路径两端的源点和终点的主机来处理,传送途中经过的路由器都不处理这些扩展首部逐跳选项扩展首部例外),大大提高路由器的处理效率

  • 六种扩展首部:
    • 逐跳选项首部:需要由到目标沿路径的所有节点处理的选项放在逐跳选项首部中
    • 路由首部:用于指出在分组从源结点到达目的结点的过程中,需要经过的一个或多个中间结点路由器
    • 分片首部:用于支持在分组从源结点到达目的结点的过程中,是否需要对分组进行分片;仅在源节点和目的节点被处理,即在源节点进行分段,在目的节点进行报文组装
    • 认证选项
    • 封装安全有效载荷首部
    • 目的选项首部:仅由目标节点处理的选项包含在目的选项首部中
  • 每一个扩展首部都由若干个字段组成, 它们的长度也各不同。但所有扩展首部的第一个字段都是 8 位的 “下一个首部” 字段。此字段的值指出了在该扩展首部后面的字段是什么
  • 使用多个扩展首部时, 应按以上的先后顺序出现。高层首部总是放在最后面。例如,如果有逐跳选项首部,它必须是 IPv6 首部之后的第一个扩展首部

由“下一个首部”字段组成的指针链

IPv6_第5张图片

IPv6 的地址

冒号十六进制表示法

  • IPv6 的 128 位 地址按 每 16 位 划分为一个位段,每个位段被转换为一个4位的十六进制数,并用冒号隔开
    • 例如: 21 D A : 0000 : 0000 : 0000 : 02 A A : 000 F : F E 08 : 9 C 5 A 21DA:0000:0000:0000:02AA:000F:FE08:9C5A 21DA:0000:0000:0000:02AA:000F:FE08:9C5A

零压缩法

  • 根据前导零压缩法,上面地址简化表示为:
    21 D A : 0 : 0 : 0 : 2 A A : F : F E 08 : 9 C 5 A 21DA:0:0:0:2AA:F:FE08:9C5A 21DA:0:0:0:2AA:F:FE08:9C5A
  • 写地址时,不一定要全部位段都使用或都不使用零压缩法,可以灵活选择

双冒号表示法

  • 如果几个连续位段的值都为0,则这些0可以简写为::
    • 例如,前面的结果又可以简化写为: 21 D A : : 2 A A : F : F E 08 : 9 C 5 A 21DA::2AA:F:FE08:9C5A 21DA::2AA:F:FE08:9C5A;而如果地址为全0,则可记为 : : :: ::
  • 双冒号在一个地址中只能出现一次。例如: 0 : 0 : 0 : 2 A A : 12 : 0 : 0 : 0 0:0:0:2AA:12:0:0:0 0:0:0:2AA:12:0:0:0 不能写为 : : 2 A A : 12 : : ::2AA:12:: ::2AA:12::,可以记为 : : 2 A A : 12 : 0 : 0 : 0 ::2AA:12:0:0:0 ::2AA:12:0:0:0
  • 冒号十六进制记法可结合使用点分十进制记法的后缀
    • 例如, 0 : 0 : 0 : 0 : 0 : 0 : 128.10.2.1 0:0:0:0:0:0:128.10.2.1 0:0:0:0:0:0:128.10.2.1 : : 128.10.2.1 ::128.10.2.1 ::128.10.2.1 均为合法的冒号十六进制记法

IPv6 前缀(format prefix)

  • IPv6 不支持子网掩码,它只支持前缀长度表示法 (与 CIDR 的斜线表示法类似)
  • 前缀是地址的一部分,用作 IPv6路由子网标识
    • 例如, 21 D A : D 3 : : / 48 21DA:D3::/48 21DA:D3::/48

IPv6 的目的地址

  • IPv6 数据报的目的地址的基本类型除了单播 (unicast)、多播 (multicast),还增加了任播 (anycast)
  • 任播的终点是一组计算机, 但数据报只交付其中的一个, 通常是距离最近的一个

IPv6 的地址分类

IPv6_第6张图片

  • : : / 128 ::/128 ::/128 ,即 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 0:0:0:0:0:0:0:0 0:0:0:0:0:0:0:0 未指明地址。它不能分配给任何节点,也不能用作目的地址。它的一个应用示例是初始化主机时,在主机未取得自己的地址以前,可在它发送的任何 IPv6 包的源地址字段放上未指明地址
  • : : 1 / 128 ::1/128 ::1/128,即 0 : 0 : 0 : 0 : 0 : 0 : 0 : 1 0:0:0:0:0:0:0:1 0:0:0:0:0:0:0:1 回环地址。节点用它来向自身发送 IPv6 包。它不能分配给任何物理接口。功能很像 IPv4 的 127.0.0.1 127.0.0.1 127.0.0.1
  • F F 00 : : / 8 FF00::/8 FF00::/8,前缀为 11111111 11111111 11111111(8位),用于多播地址
  • F E 80 : : / 10 FE80::/10 FE80::/10 ,前缀为 1111111010 1111111010 1111111010(10位),本地链路单播地址 (IPv6 Link Local Address)。有些单位的网络使用 IPv6 协议,但没有连接到互联网上,可以进行本地通信
  • 全球单播地址,其他所有二进制前缀
    • IPv6 单播地址的划分方法非常灵活, 可以如下所示的任何一种。也就是说, 可把整个的 128 比特都作为一个结点的地址。也可用 n n n 比特作为子网前缀, 用剩下的 ( 128 − n ) (128-n) (128n) 比特作为接口标识符(相当于 IPv4 的主机号)。当然也可以划分为三级, 用 n n n 比特作为全球路由选择前缀,用 m m m 比特作为子网前缀, 而用剩下的 ( 128 − n − m ) (128-n-m) (128nm) 比特作为接口标识符
    • 接口标识符 (interface ID) 用于标识链路上的接口,基于改进的 IEEE EUI-64 格式,可由 48bit 的 MAC 地址转换 (EUI-48)
      IPv6_第7张图片

Understanding IPv6 Link Local Address

参考:Understanding IPv6 Link Local Address

  • A link-local address is an IPv6 unicast address that can be automatically configured on any interface using the link-local prefix FE80::/10 and the interface identifier in the modified EUI-64 format.
    • Link-local addresses are not necessarily bound to the MAC address (configured in a EUI-64 format).
    • Link-local addresses can also be manually configured in the FE80::/10 format using the ipv6 address link-local command.
  • These addresses refer only to a particular physical link and are used for addressing on a single link for purposes such as automatic address configuration and neighbor discovery protocol. Link-local addresses can be used to reach the neighboring nodes attached to the same link. The nodes do not need a globally unique address to communicate. Routers will not forward datagram using link-local addresses. IPv6 routers must not forward packets that have link-local source or destination addresses to other links. All IPv6 enabled interfaces have a link-local unicast address.

从 IPv4 向 IPv6 过渡

  • 由于现在整个互联网的规模太大,向 IPv6 过渡只能采用逐步演进的办法,必须使新安装的 IPv6 系统能够向后兼容
  • 也就是说,IPv6 系统必须能够接收和转发 IPv4 分组, 并且能够为 IPv4 分组选择路由

双协议栈

dual stack

  • 双协议栈是指在完全过渡到 IPv6 之前, 使一部分主机(或路由器)装有双协议栈: 一个 IPv4 和一个 IPv6 。因此双协议栈主机(或路由器)既能够和 IPv6 的系统通信, 又能够和 IPv4 的系统通信
    IPv6_第8张图片
  • 双协议栈的主机(或路由器)记为 IPv6 / IPv4 , 表明它同时具有两种 IP 地址: 一个 IPv6 地址和一个 IPv4 地址
  • 双协议栈主机使用 域名系统 DNS 来查询目的主机是采用哪一种地址。若 DNS 返回的是 IPv4 地址, 双协议栈的源主机就使用 IPv4 地址。但当 DNS 返回的是 IPv6 地址, 源主机就使用 IPv6 地址

IPv6_第9张图片

  • 如上图所示,源主机 A A A 和目的主机 F F F 都使用 IPv6 , 所以 A A A F F F 发送 IPv6 数据报, 路径是 A A A B B B C C C D D D E E E F F F。中间 B B B E E E 这段路径是 IPv4 网络, 路由器 B B B 不能向 C C C 转发 IPv6 数据报。 B B B 是 IPv6 / IPv4 路由器, 它把 IPv6 数据报首部转换为 IPv4 数据报首部后发送给 C C C C C C 再转发到 D D D。当 D D D 转发到 IPv4 网络的出口路由器 E E E 时 ( E E E 也是 IPv6 / IPv4 路由器),再恢复成原来的 IPv6 数据报
  • 需要注意的是: IPv6 首部中的某些字段无法恢复。例如, 原来 IPv6 首部中的流标号 X X X 在最后恢复出的 IPv6 数据报中只能变为空缺。这种信息的损失是使用首部转换方法所不可避免的

隧道技术

tunneling

IPv6_第10张图片

  • 这种方法的要点就是在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报封装成为 IPv4 数据报,使整个 IPv6 数据报变成了 IPv4 数据报的数据部分
  • 这样的 IPv4 数据报 (源地址是 B B B 而目的地址是 E E E) 从路由器 B B B 经过路由器 C C C D D D, 传送到 E E E, 而原来的 IPv6 数据报就好像在 IPv4 网络的隧道中传输, 什么都没有变化。当 IPv4 数据报离开 IPv4 网络中的隧道时, 再把数据部分(即原来的 IPv6 数据报)交给主机的 IPv6 协议栈
  • 图中的一条粗线表示在 IPv4 网络中好像有一个从 B B B E E E 的 "IPv6 隧道
  • 要使双协议栈的主机知道 IPv4 数据报里面封装的数据是一个 IPv6 数据报, 就必须把 IPv4 首部的协议字段的值设置为 41 (41 表示数据报的数据部分是 IPv6 数据报)

ICMPv6

  • IPv6 不保证数据报的可靠交付, 因为互联网中的路由器可能会丢弃数据报。因此 IPv6 也需要使用 ICMP 来反馈一些差错信息
  • 新的版本称为 ICMPv6。ICMPv6 实现 IPv4 中 ICMPARPIGMP 的功能
    IPv6_第11张图片
  • ICMPv6 协议功能: 向源结点报告关于向目的地址传输 IPv6 包的错误和信息,具有差错报告、网络诊断、邻结点发现和多播实现等功能

ICMPv6 报文的封装

  • ICMPv6 报文封装在 IPv6 中

IPv6_第12张图片


ICMPv6 的报文类型

IPv6_第13张图片

你可能感兴趣的:(计算机网络)