IPv6 与 IPv4现状

一.概述

(1) IPv4可提供bai4,294,967,296个地址,IPv6将原来的32位地址空间增大du到128位,数目是zhi2的128次方。能够对地球上每平方米dao提供6×1023个网络地址,在可预见的将来是不会耗尽的。    

(2) IPv4 使用地址解析通讯协议 (ARP) ,IPv6使用用多点传播 Neighbor Solicitation 消息取代地址解析通讯协议 (ARP) 。    

(3) IPv4 中路由器不能识别用于服务质量的QoS 处理的 payload。IPv6中路由器使用 Flow Label 字段可以识别用于服务质量的 QoS 处理的 payload。      

(4) IPv4的回路地址为: 127.0.0.1,IPv6的回路地址为 : 000:0000:0000:0000:0000:0000:0000:0001 可以简写为 ::1。    

(5) 在IPv4中,动态主机配置协议( Dynamic Host ConfigurationProtocol,DHCP)实现了主机IP地址及其相关配置的自动设置。一个DHCP服务器拥有一个IP地址池,主机从DHCP服务器租借IP地址并获得有关的配置信息(如缺省网关、DNS服务器等),由此达到自动设置主机IP地址的目的。IP v6继承了IPv4的这种自动配置服务,并将其称为全状态自动配置(stateful autoconfiguration)。 m.pcwenku.com 供稿   

(6) IPv4使用 Internet 群组管理通讯协议 (IGMP) 管理本机子网络群组成员身份,IPv6使用 Multicast Listener Discovery (MLD) 消息取代 IGMP。    

(7) 内置的安全性。IPSec由IETF开发是确保秘密、完整、真实的信息穿越公共IP网的一种工业标准。IPsec不再是IP协议的补充部分,在IPv6中IPsec是IPv6自身所具有的功能。IPv4选择性支持IPSec,IPv6自动支持IPSec。    

(8) 更好的QoS支持。QoS是网络的一种安全机制,通常情况下不需要QoS,但是对关键应用和多媒体应用就十分必要。当网络过载或拥塞时,QoS 能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行。在IPv6 的包头中定义了如何处理与识别传输, IPv6 包头中使用 Flow Label 来识别传输,可使路由器标识和特殊处理属于一个流量的封包。流量是指来源和目的之间的一系列封包,因为是在 IPv6 包头中识别传输,所以即使透过 IPSec 加密的封包 payload,仍可实现对 QoS 的支持。

二.两种技术方案

网络层协议承担了分组(Packet)转发和路由选择两大功能,能够为上层提供在不同主机之间运输分组的职责,IP 协议作为网络层协议,虽然只能提供无连接的、不可靠的服务,但是在今天的互联网中起到了极其关键的作用。

图 1 - 互联网协议

在一般情况下,当想要访问其他主机提供的服务时,都需要通过 IP 地址来访问目标主机,只有拥有了 IP 地址才能在互联网上被其他主机访问。IP 地址就像家庭住址,需要保证所有主机 IP 地址的唯一性,这样才能找到正确的主机。

作为在 1974 年诞生的 IP 协议[^1],第一个主要版本 IPv4 使用
32 位表示地址,总共可以提供 2^32 (4,294,967,296) 个 IP 地址[^2]。42 亿个 IP 地址虽然看起来很多,但是可用的 IPv4 地址数量在最近几年一直在减少,早在 2011 年,顶级的 IPv4 地址就已经被全部分配出去了[^3]。

图 2 - IPv4 地址的小数表示
为了解决 IP 地址即将被耗尽的问题,IETF 在 1998 年就发布了 IPv6 协议的草稿[^4]并在 2017 年正式成为互联网标准[^5]。IPv6 使用 128 位的 IP 地址,总共可以表示 2^128 个地址,IPv6 甚至可以为地球上的沙子分配独立的地址[^6]:

新版本的互联网协议 IPv6 不仅能够一劳永逸地解决 IP 地址即将被耗尽的问题,还能提高网络的传输速度以及安全性。IPv6 协议的设计者最初认为随着 IPv4 地址的快速减少,IPv6 会被快速采纳,最初估计 IPv6 协议会在 2003 年在全球部署,但是从今天的角度来看,这些预测还是过于乐观了[^7]。

本文想要分析的问题是,为什么 IPv6 协议有如此之多的好处并且能够解决 IPv4 的地址短缺问题,但是哪怕在最初预估的 2003 年后又过了 17 年,IPv6 协议也没有被大规模采纳。在这里会讨论以下几个原因:

  • NAT 技术很大程度上缓解了 IPv4 地址短缺的问题;
  • IPv6 协议在设计时没有考虑与 IPv4 的兼容性问题;
  • 更细粒度的管控 IPv4 地址并回收闲置的资源;

1.NAT

网络地址转换(Network Address Translation、NAT)是一种在 IP 数据包通过路由器时修改网络地址的技术,能够将当前地址空间中的 IP 地址映射到另一个地址空间。当切换网络或者上游的 ISP 出现改变时,NAT 技术可以避免修改网络中全部节点的 IP,可以将 NAT 技术理解成一个转换表,其中存储着外部地址和端口到内部地址和端口的转换关系。

图 3 - 网络地址转换技术

当数据包从内部访问外部网络时,NAT 会为当前请求分配一个端口、覆写数据包中的源地址和端口并将地址和端口信息存储到本地的转换表中;当数据包从外部进入网络内部时,NAT 会根据数据包的 IP 地址和端口号查找到私有网络中对应的主机和端口号并覆写数据包中的目的地址和端口。

图 4 - NAT 转换表

通过 NAT 这一中间层,不仅可保护私有的网络,还能缓解 IP 地址的短缺问题。不过 NAT 技术也并不是只有好处,也带来了很多的问题,在 NAT 网络下的主机并不能与对端建立起真正的端到端连接,也不能参与部分因特网协议[^8],除此之外,NAT 协议带来的以下问题也备受争议[^9]:

1.  NAT 使用的端口号是用于进程寻址的,而不是用于主机寻址的;

2.  NAT 路由器作为第三层(网络层)的设备,应当只处理达到网络层的分组;

3.  NAT 违反了主机应当直接彼此对话的原则;

虽然 NAT 带来了很多的争议和问题,但是 NAT 已经成为了整个互联网中广泛使用的技术,工程师也尝试通过各种 NAT 穿越技术来解决带来的问题,例如:SOCKS、UPnP 和 ALG 等[^10]。

2.兼容性

软件和协议都会遵循当下以及可预测的未来进行设计,但是很难预测未来的具体走势,当下的设计也会随着场景的变换变得逐渐不适用。所有的软件和协议都是需要更新迭代的,在更新的过程中就需要考虑兼容性,兼容性一般可以分成向前兼容(Forward compatibility)和向后兼容(Backward
compatibility)两种:

  • 向前兼容:老版本系统可以接收并处理新版本系统产生的数据;
  • 向后兼容:新版本系统可以接收并处理老版本系统产生的数据;

图 5 - 系统的兼容性

这两种不同的兼容性可以起到不同的作用,如果 IPv6 协议与
IPv4 是向前兼容的,那么用于处理 IPv4 协议的硬件设备可以不用更新就能处理 IPv6 的数据,不过不更新系统也无法享受 IPv6 带来的好处;如果 IPv6 协议与 IPv4 协议是向后兼容的,那么 IPv6 的硬件可以同时处理 IPv4 和 IPv6 的数据包,只要使用 IPv6 设备替换 IPv4 设备就可以给整个网络无缝升级。

如果 IPv4 和 IPv6 能够具有向前兼容性或者向后兼容性,那么 IPv6 协议的推进也可能也没有这么复杂,但是 IPv6 协议在设计时就没有考虑与更早版本协议的兼容性。虽然 IPv4 和 IPv6 虽然都是 IP
协议,不过因为两者互不兼容,所以只能通过双协议栈、隧道技术或者 NAT64 实现协议的过渡:

图 6 - 双协议栈

IPv6 协议想要摆脱历史的包袱,实现完全不兼容的设计是可以理解的,在过去几十年应用 IP 协议的过程中,遇到了很多的问题,如果要背着历史的包袱继续前行也不是不可以,但是作为互联网的核心协议,虽然 IP 协议的设计者承认 IPv6 没有实现向前兼容是最大的错误[^11],但是作者认为通过不兼容的方式快速摆脱历史的包袱从长期来看也是好事。

2.地址管控

IPv4 的地址虽然从总体上来看确实是稀缺资源,不过与其他的稀缺资源一样,如何合理分配资源并提供使用率一直都是比较大的问题。IANA(Internet
Assigned Numbers Authority) 和 RIR(Regional Internet
Registries) 是负责分配 IP 地址的组织,除了一些为专有网络预留的 IP 地址之外,剩余的地址一般都是通过子网以地址块的形式分配。

在互联网协议的早期开发阶段,子网是通过 IP 地址最左侧的 8 位划分子网,但是因为这种方式只允许划分 256 个网络,所以在 1981 年被分类网络架构(Classful Network Architecture)迅速替代。分类网络架构中包含
A、B 和 C 三类网络[^12]:

A 类地址只能分配给 128 个不同的网络,每个网络中可以包含 1,600 万主机,而 C 类地址可以分配给 200 万组织,网络中可以包含 200 多个主机。通过对 IP 地址的分类,能够更合理地分配 IP 地址块,不过虽然对 IP 地址进行了分类,但是对地址的划分还是比较粗糙。

IETF 在 1993 年提出的无类别域间路由(Classless
Inter-Domain Routing、CIDR)替代了分类网络架构,CIDR 基于可变长子网掩码(Variable-length Subnet Masking、VLSM),主要目的有两个[^13]:

1.  缓解互联网中路由器中转发表的增长速度;

2.  缓解 IPv4 地址耗尽的速度;

分类网络架构中对地址的划分还是有些过于理想,过小的地址块往往不够用、稍大的地址块却会造成较大的浪费。与分类网络架构只使用 8、16 和 24 固定长度的子网掩码将 IP 地址块划分成三类不同,CIDR 会使用可变长度的子网掩码来划分地址块,如下所示的 CIDR 表示中,N 表示前缀长度,可以是从 0 到 32 的任意值:

A.B.C.D/N

A.B.C.D/8、A.B.C.D/16 和 A.B.C.D/24 就可以分别表示分类网络架构中的 A、B 和 C 三类不同的地址块,同时也可以使用其他的数字更灵活的表示特定网络数和主机数的子网。

除了更细粒度的地址分配之外,回收不再使用的 IP 资源并投入再利用也是延长 IPv4 寿命的重要手段,不过在这里就不做展开了。从 IP 地址的分配中,能看到资源从充足到稀缺,人对于资源使用态度的转变,从最开始粗糙的分配方式到后来细粒度的管控,充足的资源总是会被滥用,只有当资源真正变得稀缺时,才开始精打细算。

3.总结

IPv4 协议从 1981 年发布到今天已经过去了将近 40 年,在过去的这段时间里,作为互联网协议簇中的重要协议承担着分组转发和路由选择的重要责任,随着网络环境和终端设备变得越来越复杂,也需要更多的 IP 地址满足今天的需求。

图 7 - 访问 Google 的 IPv6 协议采纳率[^14]
IPv6 协议摆脱了很多历史的包袱轻装前行,虽然越来越多的网站和网络设备都开始支持 IPv6,但是因为很多原因 IPv6 最终也很难完全取代 IPv4 协议,重新回顾一下本文的内容:

  • NAT 技术可以很大程度上缓解 IPv4 的地址短缺问题并且能够保护私有内部的网络,提供防火墙的功能;
  • IPv4 与 IPv6 协议完全不兼容,需要引入双协议栈、隧道技术或者 NAT64 解决兼容性问题,而应用这些技术也需要额外的成本;
  • 通过对资源的细粒度管控并回收不再使用的 IP 地址,可以延缓 IP 地址耗尽的时间;
  • 工程师的想象力是无穷的,在过去的十几年间,尝试通过各种办法为 IPv4 协议续命延缓 IP 资源耗尽的时间,不过在可预见的未来 IPv4 协议也终将被 IPv6 替代。

IPv6 与 IPv4现状的更多相关文章

  1. IPv6 VS IPv4,谈谈升级 IPv6 的必要性

    11月26日,中办.国办印发了<推进互联网协议第六版(IPv6)规模部署行动计划>,提出国内要在 5~10 年的时间形成下一代互联网自主技术体系和产业生态,建成全球最大规模的 IPv6 商 ...

  2. keepalive配置支持ipv6、ipv4双棧支持

    因公司业务需要,keepalived需要同时支持ipv6和ipv4 keepalived版本1.2.23. keepalived 配置: 重点:ipv6的虚IP配置在 virtual_ipaddres ...

  3. 第11章 拾遗5:IPv6和IPv4共存技术(3)_NAT-PT技术【全书完】

    6.4 NAT-PT (1)NAT-PT和NAT的差别 ①NAT-PT(附带协议转换的网络地址转换)技术秉承NAT技术的思想,但在原理方面大有不同. ②NAT-PT和NAT本质的区别在于应用场合的不同 ...

  4. 第11章 拾遗5:IPv6和IPv4共存技术(1)_双栈技术和6to4隧道技术

    6. IPv6和IPv4共存技术 6.1 双栈技术 (1)双协议主机的协议结构 (2)双协议栈示意图 ①双协议主机在通信时首先通过支持双协议的DNS服务器查询与目的主机名对应的IP地址. ②再根据指定 ...

  5. [转帖]IPV6取代IPV4之路 为何道阻且长?

    IPV6取代IPV4之路 为何道阻且长? 经济学人公众号 IPV6作为IPV4的续命神术,从被提出到现今,逾26年之久.而IPV6在中国更是犹抱琵琶半遮面,千呼万唤难出来,IPV6取代IPV4之路,为 ...

  6. IPv6 优于 IPv4 的十大功能

    现在是 9102 年,有一个严重的问题,困扰着资深宅男二狗子.那就是偶像团体没新名了.今年开始,偶像团体 XKB48 已经在无法取更多的新名字了,排列组合的所有方式都已经经过了历史长河的洗礼,除非偶像 ...

  7. ipv6转ipv4 NAT64与DNS64基本原理概述

    原文: https://blog.csdn.net/zhangjie1989/article/details/51464251 1.NAT64与 DNS64背景 在 IPv6网络的发展过程中,面临最大 ...

  8. IPv6地址格式示例及IPv6与IPv4的区别分析

    认识IPv6地址 IPv4地址是类似 A.B.C.D 的格式,它是32位,用\".\"分成四段,用10进制表示: 而IPv6地址类似X:X:X:X:X:X:X:X的格式,它是128 ...

  9. IPv6(诞生原因、数据报格式、与IPv4的不同、地址表现形式、基本地址类型、IPv6与IPv4的过渡策略)

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105297642 学习课程:<2019王道考研计算机网络> 学习目的 ...

随机推荐

  1. C++处理char*,char[],string三种类型间的转换

    前言 在C和C++中,有一个相当重要的部分,就是字符串的编程描述.在学C的时候,很多人习惯了char[],char*表示法,直到遇见了C++后,出现了第三者:string.这时候,很多初学者就会在这三 ...

  2. Java常用类详解

    目录 1. String类 1.1 String的特性 1.2 String字面量赋值的内存理解 1.3 String new方式赋值的内存理解 1.4 String 拼接字面量和变量的方式赋值 1. ...

  3. Flink去重统计-基于自定义布隆过滤器

    一.背景说明 在Flink中对流数据进行去重计算是常有操作,如流量域对独立访客之类的统计,去重思路一般有三个: 基于Hashset来实现去重 数据存在内存,容量小,服务重启会丢失. 使用状态编程Val ...

  4. C++ primer plus读书笔记——第8章 函数探幽

    第8章 函数探幽 1. 对于内联函数,编译器将使用相应的函数代码替换函数调用,程序无需跳到一个位置执行代码,再调回来.因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存. 2. 要使用内 ...

  5. [bug] @Test注解无法使用

    参考 https://blog.csdn.net/lixiangxiang666/article/details/83745901

  6. 搭建LAMP环境部署opensns微博网站

    搭建LAMP环境部署opensns微博网站 实验环境 centos7 ip: 192.168.121.17 一.关闭防火墙和selinux [root@localhost ~]# systemctl ...

  7. 源码安装Apache(httpd)

    [RHEL8] !!!测试环境我们首关闭防火墙和selinux [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# sys ...

  8. VUE如何关闭代码规范extra semiclon/VUE新手必看-(转载)

    VUE如何关闭代码规范 最近在学VUE,作为一个设计转前端的小白鼠. 总是能碰到各种各样奇葩的问题. 比如我碰到了 extra semicolon 百度了下说是这个原因造成的: 但是!!!!!关键点来 ...

  9. stm32.cube(一)——系统架构及目录结构

    一.前言 Arm的应用场景往往比51单片机复杂得多,如果一个高级应用的开发需要连底层的结构性代码都要重构,那么在成本和研发周期上就会面临巨大的风险.为了简化编码过程,芯片厂商经常会提供一些板卡级支持的 ...

  10. IIC通信时遇到问题的解决

    如果遇到问题,反复查不到 就DEBUG  下单点运行,执行每一个SCK 和SDA的拉高拉低 看看是否能正常的拉高拉低 先解决掉底层的GPIO的控制问题, 有的时候可能数据引脚为特殊功能引脚