热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入解析下一代互联网协议:IPv6在网络架构中的应用与优势

随着互联网的迅猛发展,IPv4的32位地址资源在2011年2月宣告枯竭,导致互联网服务提供商(ISP)无法再申请新的地址段。为应对这一挑战,下一代互联网协议IPv6应运而生,并在网络架构中展现出显著的优势。本文深入解析了IPv6在提升网络容量、增强安全性及简化管理等方面的独特价值,探讨了其在网络架构中的应用前景和实际效益。

IP 是互联网的核心协议。
互联网经过几十年的飞速发展,到 2011 年 2 月,IPv4 的 32 位地址已经耗尽。
ISP 已经不能再申请到新的 IP 地址块了。
我国在 2014 – 2015 年也逐步停止了向新用户和应用分配 IPv4 地址。
解决 IP 地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP,即 IPv6。


IPv6 的基本首部


  • IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组。为方便起见,本书仍采用数据报这一名词。
  • 所引进的主要变化如下:

  1. 更大的地址空间。IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
  2. 扩展的地址层次结构
  3. 灵活的首部格式。 IPv6定义了许多可选的扩展首部。
  4. 改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。
  5. 允许协议继续扩充
  6. 支持即插即用(即自动配置)。因此 IPv6 不需要使用 DHCP。
  7. 支持资源的预分配。 IPv6 支持实时视像等要求,保证一定的带宽和时延的应用。
  8. IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。原来的 IPv4 首部是 4 字节对齐。

IPv6 数据报的一般形式

IPv6 数据报由两大部分组成:


  • 基本首部 (base header)
  • 有效载荷 (payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部 (extension header),再后面是数据部分。

在这里插入图片描述


IPv6 数据报的基本首部

IPv6 将首部长度变为固定的 40 字节,称为基本首部。
把首部中不必要的功能取消了,使得 IPv6 首部的字段数减少到只有 8 个。
IPv6 对首部中的某些字段进行了如下的更改:
在这里插入图片描述
在这里插入图片描述


  • 版本(version)—— 4 位。它指明了协议的版本,对 IPv6 该字段总是 6。
  • 通信量类(traffic class)—— 8 位。这是为了区分不同的 IPv6 数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。
  • 流标号(flow label)—— 20 位。 “流”是互联网络上从特定源点到特定终点的一系列数据报, “流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号。
  • 有效载荷长度(payload length)—— 16 位。它指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),其最大值是 64 KB。
  • 下一个首部(next header)—— 8 位。它相当于 IPv4 的协议字段或可选字段。
  • 跳数限制(hop limit)—— 8 位。源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减 1。当跳数限制的值为零时,就要将此数据报丢弃。
  • 源地址—— 128 位。是数据报的发送站的 IP 地址。
  • 目的地址—— 128 位。是数据报的接收站的 IP 地址。

IPv6 的扩展首部


  • IPv6 把原来 IPv4 首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站的主机来处理。
  • 数据报途中经过的路由器都不处理这些扩展首部(只有一个首部例外,即逐跳选项扩展首部)
  • 这样就大大提高了路由器的处理效率

六种扩展首部

在 RFC 2460 中定义了六种扩展首部:


  1. 逐跳选项
  2. 路由选择
  3. 分片
  4. 鉴别
  5. 封装安全有效载荷
  6. 目的站选项

IPv6 的地址

IPv6 数据报的目的地址可以是以下三种基本类型地址之一:


  1. 单播 (unicast):传统的点对点通信。
  2. 多播 (multicast):一点对多点的通信。
  3. 任播 (anycast):这是 IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。

结点与接口

  • IPv6 将实现 IPv6 的主机和路由器均称为结点
  • 一个结点就可能有多个与链路相连的接口。
  • IPv6 地址是分配给结点上面的接口的。

  1. 一个接口可以有多个单播地址
  2. 其中的任何一个地址都可以当作到达该结点的目的地址。即一个结点接口的单播地址可用来唯一地标志该结点

冒号十六进制记法

  • 在 IPv6 中,每个地址占 128 位,地址空间大于 3.4  1038 。
  • 为了使地址再稍简洁些,IPv6 使用冒号十六进制记法(colon hexadecimal notation, 简写为 colon hex)。
  • 每个 16 位的值用十六进制值表示,各值之间用冒号分隔。例如:
    68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
  • 在十六进制记法中,允许把数字前面的 0 省略。例如把 0000 中的前三个 0 省略,写成 1 个 0。

零压缩

  • 冒号十六进制记法可以允许零压缩 (zero compression),即一连串连续的零可以为一对冒号所取代。
    FF05:0:0:0:0:0:0:B3 可压缩为:
    FF05::B3
  • 注意:在任一地址中只能使用一次零压缩

点分十进制记法的后缀

  • 冒号十六进制记法可结合使用点分十进制记法的后缀,这种结合在 IPv4 向 IPv6 的转换阶段特别有用。
  • 例如:0:0:0:0:0:0:128.10.2.1
    再使用零压缩即可得出: ::128.10.2.1
  • CIDR 的斜线表示法仍然可用
  • 例如:60 位的前缀 12AB00000000CD3 可记为:
    12AB:0000:0000:CD30:0000:0000:0000:0000/60
    12AB::CD30:0:0:0:0/60 (零压缩)
    12AB:0:0:CD30::/60 (零压缩)

IPv6 地址分类

在这里插入图片描述


  • 未指明地址

  1. 这是 16 字节的全 0 地址,可缩写为两个冒号“::”。
  2. 这个地址只能为还没有配置到一个标准的 IP 地址的主机当作源地址使用。
  3. 这类地址仅此一个。

  • 环回地址

  1. 即 0:0:0:0:0:0:0:1(记为 ::1)。
  2. 作用和 IPv4 的环回地址一样。
  3. 这类地址也是仅此一个。

  • 多播地址

  1. 功能和 IPv4 的一样。
  2. 这类地址占 IPv6 地址总数的 1/256。

  • 本地链路单播地址 (Link-Local Unicast Address)

  1. 有些单位的网络使用 TCP/IP 协议,但并没有连接到互联网上。连接在这样的网络上的主机都可以使用这种本地地址进行通信,但不能和互联网上的其他主机通信。
  2. 这类地址占 IPv6 地址总数的 1/1024。

  • 全球单播地址

  1. IPv6 的这一类单播地址是使用得最多的一类。
  2. 曾提出过多种方案来进一步划分这 128 位的单播地址。
  3. 根据 2006 年发布的草案标准 RFC 4291 的建议, IPv6 单播地址的划分方法非常灵活。

在这里插入图片描述


从 IPv4 向 IPv6 过渡

向 IPv6 过渡只能采用逐步演进的办法,同时,还必须使新安装的 IPv6 系统能够向后兼容:IPv6 系统必须能够接收和转发 IPv4 分组,并且能够为 IPv4 分组选择路由。

两种向 IPv6 过渡的策略:


  • 使用双协议栈
  • 使用隧道技术

双协议栈

  • 双协议栈 (dual stack) 是指在完全过渡到 IPv6 之前,使一部分主机(或路由器)装有两个协议栈,一个 IPv4 和一个 IPv6
  • 双协议栈的主机(或路由器)记为 IPv6/IPv4,表明它同时具有两种 IP 地址:一个 IPv6 地址和一个 IPv4 地址
  • 双协议栈主机在和 IPv6 主机通信时是采用 IPv6 地址,而和 IPv4 主机通信时就采用 IPv4 地址。
  • 根据 DNS 返回的地址类型可以确定使用 IPv4 地址还是 IPv6 地址。

在这里插入图片描述


隧道技术


  • 在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报封装成为 IPv4 数据报,整个的 IPv6 数据报变成了 IPv4 数据报的数据部分。
  • 当 IPv4 数据报离开 IPv4 网络中的隧道时,再把数据部分(即原来的 IPv6 数据报)交给主机的 IPv6 协议栈。
    在这里插入图片描述

ICMPv6


  • IPv6 也不保证数据报的可靠交付,因为互联网中的路由器可能会丢弃数据报。
  • 因此 IPv6 也需要使用 ICMP 来反馈一些差错信息。新的版本称为 ICMPv6。
  • 地址解析协议 ARP 和网际组管理协议 IGMP 协议的功能都已被合并到 ICMPv6 中。
    在这里插入图片描述

ICMPv6 报文的分类

  • CMPv6 是面向报文的协议,它利用报文来报告差错,获取信息,探测邻站或管理多播通信。
  • ICMPv6 还增加了几个定义报文的功能及含义的其他协议。
    在这里插入图片描述

推荐阅读
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • Kubernetes 持久化存储与数据卷详解
    本文深入探讨 Kubernetes 中持久化存储的使用场景、PV/PVC/StorageClass 的基本操作及其实现原理,旨在帮助读者理解如何高效管理容器化应用的数据持久化需求。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • Hadoop发行版本选择指南:技术解析与应用实践
    本文详细介绍了Hadoop的不同发行版本及其特点,帮助读者根据实际需求选择最合适的Hadoop版本。内容涵盖Apache Hadoop、Cloudera CDH等主流版本的特性及应用场景。 ... [详细]
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • 搭建Jenkins、Ant与TestNG集成环境
    本文详细介绍了如何在Ubuntu 16.04系统上配置Jenkins、Ant和TestNG的集成开发环境,涵盖从安装到配置的具体步骤,并提供了创建Windows Slave节点及项目构建的指南。 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 本文详细解释了华为ENSP模拟器中常用的命令,涵盖用户模式、系统模式、接口模式和地址池视图模式下的操作。这些命令对于进行计算机网络实验至关重要,帮助用户更好地理解和配置路由器及PC机的通信。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • NTP服务器配置详解:原理与工作模式
    本文深入探讨了网络时间协议(NTP)的工作原理及其多种工作模式,旨在帮助读者全面理解NTP的配置参数和应用场景。NTP是基于RFC 1305的时间同步标准,广泛应用于分布式系统中,确保设备间时钟的一致性。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 优化SQL Server批量数据插入存储过程的实现
    本文介绍了一种改进的SQL Server存储过程,用于生成批量插入语句。该方法不仅提高了性能,还支持单行和多行模式,适用于SQL Server 2005及以上版本。 ... [详细]
author-avatar
生活更美好YE
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有