IPv4和IPv6何去何从

2023-05-16

一、缘起

某一天,在公司技术群内运维大佬们发了这么一条消息。

这条消息瞬间勾起了我的好奇心。什么是IPv6?为什么要切IPv6?于是在上班时多去了几次去卫生间之后,对IPv6有了一些初步认识,然后就诞生了本文。

本文主要对什么是IPv6?为什么要切IPv6?两个问题做一个简要阐述。至于怎么切IPv6?就不在运维大佬面前弄斧了(我是真的没看懂-.-)。

先用一张图表示国内对IPv6的态度吧(求关注、点赞、回复三连.)。

二、IP协议

1. 什么是IP

IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。

2. IP协议版本

目前公布的IP版本很多,远不止IPv4和IPv6两个版本。下表是互联网号码分配机构 IANA(Internet Assigned Numbers Authority)列出的官方版本号。

通过以上表格可以看出,IP协议实际是从0开始的,目前可见的最大版本号是15。以后会有更大的版本号吗?以目前来看是不会有的。原因是IP协议中,标识协议版本号的是一个长度为4的二进制字段。可表示区间为0000B ~ 1111B,即十进制的0 ~ 15。因此,若需支持15以上的版本号,需要对整个IP协议进行重新设计,不单是加个版本号而已。所以目前来看,IP协议版本号不会超过15。

大家最为熟悉的应该是IPv4,也是IP协议中应用最为广泛的版本。其他版本我在此也进行下简单介绍。

  • IPv0 ~ 2 实验室版本,此时TCP和IP还没有完全分开。
  • IPv3 第一个真正意义的IP协议版本,但是存在稳定性问题
  • IPv4 IPv3基础上增加了稳定性,目前应用最为广泛的版本
  • IPv5 和IPv4使用相同的寻址系统,目的是支持流媒体视频和其他新媒体。但最终受限于IPv4的地址受限问题被废弃
  • IPv6 解决了IPv4的核心问题,地址数量受限。目前国内大力推广的版本,转转也积极响应,支持了这个版本
  • IPv7 ~ 9 和IPv6同期产物,因IPv6的成功而被暂停或废弃
  • IPv10 基于IPv4和IPv6 目的是解决IPv4和IPv6地址转换互通问题,目前还在草案中。未真正分配。
  • IPv11 ~ 14 未分配
  • IPv15 保留

3. IPv4

3.1 地址格式

我们常见的是地址格式是点分十进制,顾名思义,就是用小数点分割开的十进制表示法。如:192.168.0.11

可惜的是计算机并不认识十进制,只认识01,对应两种状态。真正的IP地址表示由4段(32比特)组成,每段8比特,段与段用点(.)隔开。每位有01两种状态值,总计4,294,967,296 ( 232),约42.9亿个地址。如192.168.0.11 对应的真正的IP地址为:11000000.10101000.00000000.00001011。是不是看到这个想说,这是啥?比起来是不是十进制更好接受。

3.2 地址组成

IP地址是由两部分组成的,网络部分和主机部分,比如:

其中网络部分一样的属于同一个网段,主机部分共包含0000B ~ 1111B 共256个可用主机号。 主机部分全0表示网段自身,主机部分全为1表示网段内所有设备。即广播地址。主机部分为其他值时,表示不同的设备。所以一个网段下最多可包含 0001B ~ 1110B 共254个设备。

3.3 地址分类

由于早期设备性能问题,为了提高地址转发效率,于是对所有IP进行了分类,共五大类。分别为

  • A类前8位为网络地址,后24位为主机地址,网络位第一位必须是0,因此该类IP地址中网络ID的长度为8位,主机ID的长度为24位,该类IP地址范围为1.0.0.0126.255.255.255,**其子网掩码为255.0.0.0**。(全部是0的(0.0.0.0)是指所有网络所以排除,127.0.0.0127.255.255是环回地址)
  • B类前16位为网络地址,后16位为主机地址。网络位的前2为必须是10,因为该类IP地址中网络ID的长度为16位,主机ID的长度为16位,该类IP地址范围为128.0.0.0~191.255.255.255,其子网掩码为255.255.0.0.
  • C类前24位为网络地址,后8位主机地址。网络位的前3位必须是110,因此该类IP地址中网络ID的长度为24位,主机长度为8位。该类IP地址范围为192.0.0.0~223.255.255.255 、其子网掩码为255.255.255.0.
  • D类该类IP地址的前四位必须为1110,它是一个专门保留的地址,并不指向特定的网络。目前这类IP地址被用在组播中,其地址范围为224.0.0.0~239.255.255.255
  • E类该类IP地址以11110开始,为保留地址。其地址范围为240.0.0.0~255.255.255.254
  • 此外,还有全0和全1的IP地址,其中全部是0的(0.0.0.0)是指所有网络,全1的IP地址(255.255.255.255)是所有网络的广播地址

4. IPv6

4.1 地址格式

一个符合规范的IPv6地址格式是这样的:2001:0DB8:0000:0000:0000:8A2E:200C:417A

这是什么?别着急,听我娓娓道来。

每个IPv6地址是由8段(128比特)组成,每段16比特,段与段用冒号(:)隔开。每位有01两种状态值。总计340,282,366,920,938,463,374,607,432,768,211,456( 2128),约为。。。地球所有沙子的数量(理解为近似无限地址)

所以上述的IP地址的真正格式为0010000000000001:110110111000:0000000000000000:0000000000000000:0000000000000000:1000101000101110:0010000000001100:0100000101111010

这肯定看不懂对吧。如果使用对待IPv4地址相同的手段处理IPv6地址呢。也就是使用十进制表示该地址位:8193:3512:0:0:0:35374:8204:16762

差不多可以看懂了,但是对网络传输来说这个的太占空间了,也就降低了传输效率。而且有了域名解析后,相对IP地址,大家更愿意接受域名。

为了提高传输效率,减少空间占用。于是IPv6地址使用十六进制表示。将上述二进制或十进制表示转为十六进制则为:2001:0DB8:0000:0000:0000:8A2E:200C:417A

至此,是不是对IPv6地址格式有了一些了解。为了压缩空间,在此基础上还有一些其他规则。

  • 前置0可省略:IP地址中每一段数值的前置0可省略。上述地址应用规则后可表示为:

    2001:DB8:0:0:0:8A2E:200C:417A

  • 连续零可用::表示:IP地址中连续的0可使用::表示,一个IP地址仅可省略一次,即出现一次::。上述地址应用规则后可表示为:

    2001:DB8::8A2E:200C:417A

    仅可出现一次的原因为:多个::会存在地址冲突。如下两个IP地址

    2001:0:0:0:25DE:0:0:CADE

    2001:0:0:25DE:0:0:0:CADE

    应用规则后均为:2001::25DE::CADE,导致地址冲突了。因此一个IP地址中仅可出现一次::

4.2 地址组成

IPv6地址分为高64比特和低64比特。

高64比特有分配机构进行分配,分配机构也只关心高64比特。

低64比特全部为主机地址。可自行分配。

4.3 地址分类

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

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

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

三、为什么要切IPv6

作为FE的我分析比较IPv4和IPv6实在有些困难,在此引用百度百科的对比描述。

  1. IPv6具有更大的地址空间。IPv4中规定IP地址长度为32,最大地址个数为232;而IPv6中IP地址的长度为2128,即最大地址个数为2128。与32位地址空间相比,其地址空间增加了2128-232个。
  2. IPv6使用更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
  3. IPv6增加了增强的组播(Multicast)支持以及对流的控制(Flow Control),这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS,Quality of Service)控制提供了良好的网络平台。
  4. IPv6加入了对自动配置(Auto Configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
  5. IPv6具有更高的安全性。在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,在IPV6中的加密与鉴别选项提供了分组的保密性与完整性。极大的增强了网络的安全性。
  6. 允许扩充。如果新的技术或应用需要时,IPV6允许协议进行扩充。
  7. 更好的头部格式。IPV6使用新的头部格式,其选项与基本头部分开,如果需要,可将选项插入到基本头部与上层数据之间。这就简化和加速了路由选择过程,因为大多数的选项不需要由路由选择。
  8. 新的选项。IPV6有一些新的选项来实现附加的功能

参考资料

  1. iana(https://www.iana.org/assignments/version-numbers/version-numbers.xhtml)
  2. Where are IPv1, 2, 3 and 5(https://forum.huawei.com/enterprise/en/where-are-ipv1-2-3-and-5/thread/521375-887)
  3. IP(https://baike.baidu.com/item/IP/224599?fr=aladdin)
  4. IPv6(https://baike.baidu.com/item/IPv6/172297?fr=aladdin)
  5. IPv6,到底是什么(https://zhuanlan.zhihu.com/p/36542469)
  6. IPv4地址格式和分类(https://zhuanlan.zhihu.com/p/411205065)
  7. IPv6笔记-地址结构与分类(https://blog.csdn.net/wangcg123/article/details/97398709)

转转研发中心及业界小伙伴们的技术学习交流平台,定期分享一线的实战经验及业界前沿的技术话题。
关注公众号「转转技术」(综合性)、「大转转FE」(专注于FE)、「转转QA」(专注于QA),更多干货实践,欢迎交流分享~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IPv4和IPv6何去何从 的相关文章

  • 将 Jetty 绑定到 IPv6 地址

    我正在尝试将 Jetty 绑定为仅侦听 IPv6 地址 我正在使用 Jetty 7 4 2 v20110526 我的jetty xml
  • Docker 身份验证:无法获取匿名令牌

    我的 gitlab 运行程序中出现以下错误 错误 授权失败 无法获取匿名令牌 获取 https auth ipv6 docker com token scope repository 3Alibrary 2Fnode 3Apull serv
  • 让docker使用IPv4进行端口绑定

    我有 docker 主机 里面有一个容器 docker 主机仅在 IPv6 接口上绑定端口 而不在 IPv4 上绑定端口 这是输出 tcp 0 0 0 0 0 0 22 0 0 0 0 LISTEN tcp 0 0 0 0 0 0 5508
  • INET6_ATON 和 NTOA 函数的 Oracle PL/SQL 版本?

    有没有什么好的代码可以将 IPv6 地址字符串转换为整数 使用一种格式转换 IPv4 似乎相当容易 但是 IPv6 有几种不同的地址显示格式 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
  • 用于接受有效主机名、IPv4 或 IPv6 地址的 Java 正则表达式

    有人有一个好的 最好是经过测试的 正则表达式来仅接受有效的 DNS 主机名 IPv4 或 IPv6 地址吗 我明白你可能是forced使用正则表达式 但是 如果可能的话 最好避免使用正则表达式来执行此任务 而使用 Java 库类来进行验证
  • 使用 IPV6 连接到 Google Cloud SQL

    我一直在尝试使用 Google 提供的 IPV6 地址连接到我的 google cloud sql 数据库 mysql 但没有成功 mysql h 0 0 0 0 0 aaaa aaaa aaaa u admin p 客户端提示输入密码 但
  • IPv4 和 IPv6 禁止

    如果我想在我的网站上通过 IP 禁止用户 是否可以通过两者来实现IPv4 and IPv6 某些浏览器显然默认使用 IPv4 地址 而其他浏览器 如果有可能 则使用 IPv6 地址 因此 如果我通过某人当前的 IP 对其进行禁止 他们只需使
  • ipv6 向后兼容 ipv4 吗?

    我有一个使用 ipv4 编写的小 udp 示例程序 如果我将代码更改为 ipv6 我仍然能够与使用具有 ipv4 地址的侦听器的任何人进行通信吗 我正在查看移植示例 http ou800doc caldera com en SDK neta
  • 什么决定了 System.Net.IPAddress.ToString() 的 IPv6 地址格式?

    内置 Net 方法 System Net IPAddress ToString 对于 IPv6 地址的行为不一致 给定字节数组0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 在某些环境下 aaaa aaaa aaaa
  • 申请因缺乏 IPv6 支持而被拒绝 [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 My last release of application which is 12 8 is rejected by apple saying
  • 无法在辅助接口上接收 UDP/IPv6 数据包

    我有以下用于 UDP 服务器的 C 代码 它将绑定到辅助接口 tap0 的 ipv6 地址 context t new context const struct sockaddr listen addr size t addr size c
  • 添加 IPV6_V6ONLY 标志的动机是什么?

    在 IPv6 网络中 IPV6 V6ONLY 标志用于确保套接字仅使用 IPv6 特别是 IPv4 到 IPv6 的映射不会用于该套接字 在许多操作系统上 默认情况下未设置 IPV6 V6ONLY 但在某些操作系统 例如 Windows 7
  • 重定向 ip6tables 中的端口

    如何使用 ip6tables 将一个端口重定向到另一个本地端口 例如像这样的东西 ip6tables t nat A 预路由 j 重定向 p tcp dport 443 to ports 8443 嗯 这是一个老问题 但因为我需要做同样的事
  • Android 从主机名获取 ipv6 地址

    我正在尝试从 Android 设备上的主机名获取 IPv6 地址 我的设备是 Nexus 7 和 6 0 1 版本 下面是我使用的API InetAddress inets InetAddress getAllByName hostname
  • 从 Dns.GetHostEntry() 获取 IPv4 地址

    我这里有一些代码在 IPv4 机器上运行得很好 但在我们的构建服务器 IPv6 上却失败了 简而言之 IPHostEntry ipHostEntry Dns GetHostEntry string Empty GetHostEntry 的文
  • 如何将 IPV6 地址转换为 IPV4 地址?

    我有使用 IPv4 地址的应用程序 它存储它们很长 因此它只理解 IPv4 地址 是否可以使用Java将IPv6地址转换为IPv4地址 While IPv4 地址范围有 IPv6 等效项 https en wikipedia org wik
  • 匹配有效 IPv6 地址的正则表达式

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我在编写匹配有效 IPv6 地址的正则表达式时遇到问题 包括压缩形式的地址 使用 或从每
  • 使用 IPv6 进行地理定位?

    我正在开发一个 IP 地理定位库 它使用 IPv4 地址的前三个八位字节来确定用户的国家 地区 城市 纬度 经度等 效果非常好 但它不处理 IPv6 地址 我希望它能够处理 有没有办法转换 IPv6 地址以获得 IPv4 地址的前三个八位字
  • Python 中的反向 DNS 查找

    如果我有一个类似 2001 4860 4860 8888 的 IP 地址 如何获得 foo ip6 arpa 格式的完全限定域名 编辑 到目前为止 两个解决方案都给了我 google public dns a google com 也许反向
  • 在同一端口上支持 IPv6 和 IPv4 的 C# 服务器

    是否有可能有一个同时侦听和接受 IPv6 和 IPv4 客户端的 Socket 我在 C 中使用了 IPv6 套接字 希望它能自动向后兼容 但 IPv4 客户端会导致无效的 ip 地址异常 看一看 您可以接受 IPv4 客户端以及 IPv6

随机推荐

  • leetcode_贪心算法

    贪心算法相关题 简单题目455 分发饼干1005 K次取反后最大化的数组和860 柠檬水找零 序列问题376 摆动序列法一 xff1a 贪心法法二 xff1a 动态规划 单调递增的数字简化版本 有点难度53 最大子序和贪心算法动态规划 13
  • leetcode_动态规划

    leetcode 动态规划 基础题目509 斐波那契数70 爬楼梯62 不同路径63 不同路径II343 整数拆分96 不同的二叉搜索树 01背包分割等和子集1049 最后一块石头的重量II494 目标和474 一和零 完全背包518 零钱
  • 北东地/东北天两种导航坐标系与姿态转换

    一 坐标系 1 导航坐标系 常用的导航坐标系有北东地和东北天两种 两种坐标系的指向分别定义如下 xff1a 1 1 北东地坐标系 X轴 xff1a 指北 Y轴 xff1a 指东 Z轴 xff1a 指地 1 2 东北天坐标系 X轴 xff1a
  • 如何消除CACHE对DMA的影响?

    各位看官 xff0c 阅读之前 xff0c 请帮忙点击这里一下 xff0c 多谢 xff01 嵌入式系统中的CACHE 问题 郑州解放军信息工程大学 xff08 450002 xff09 陈曦 李汉宁 随着社会的发展 人们生活水平的提高 x
  • 12种性格导致贫穷

    每个人都有不同的性格和个性 有的性格对于挣钱是有帮助的 有的性格却容易导致贫困 大量的研究表明 至少有十二种性格容易导致贫困和失败 第一 知足 只要有吃有穿 腹饱体暖 就感到满足 对于财富没有追求 第二 自满 自己的总是最好的 这种人不愿与
  • 上海房地产市场救市14条政策出台

    值得纪念的一天 http www sina com cn 2008年10月23日05 53 东方网 东方网10月22日消息 xff1a 为促进本市房地产市场健康发展 xff0c 根据财政部 国家税务总局 中国人民银行等部门有关文件精神 xf
  • 天涯上各大公司裁员应对金融危机的强帖,不断更新中……

    http www tianya cn publicforum content no20 1 171416 shtml 俺的东家赫然在列 xff0c 俺作证 xff0c 裁员是真的 活过冬天就会在春天复苏 xff0c 如果死在冬天 xff0c
  • 学习笔记-Semihosting

    如何理解Semihosting xff08 老帖重发 xff0c 写得比较久了 xff09 Semihosting xff0c 顾名思义 xff0c 就是 34 半主控 34 xff0c 意思就是说 xff0c 运行在target boar
  • 开发笔记-NAND Flash Bad Block Management

    1 xff09 为什么会出现坏块 由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠 xff0c 因此 xff0c 在NAND的生产中及使用过程中会产生坏块 坏块的特性是 xff1a 当编程
  • ThreadX 实时操作系统

    ThreadX 实时操作系统 xff08 RTOS xff09 Express Logic日前發佈了支援Altera Nios II軟式核心嵌入處理器的ThreadX即時作業系統 RTOS xff0c 全新的ThreadX具備快速軟體計時器
  • React 条件渲染组件

    组件通常需要根据不同的条件显示不同的内容 xff0c 以及根据应用的状态变化只渲染其中的一部分 在 React 中 xff0c 可以使用 JavaScript 语法有条件地呈现 JSX xff0c 比如 if 语句 amp amp 和 操作
  • BDM的禅义

    2006 4 13 13 16 00 BDM的禅义 这片文章译自 the zen of bdm xff0c 翻译的不好 xff0c 还请大家多提意见 介绍 你可能感到奇怪 xff0c 为什么说BDM的禅义 BDM xff08 背景调试模式
  • RTOS基本原理:多任务和调度-FreeRTOS是如何工作的

    FreeRTOS是如何工作的 RTOS基本原理 多任务和调度 作者 xff1a Gavin Lee 来源 xff1a upsdn net 更新日期 xff1a 2006 04 12 RTOS基本原理 多任务 调度 上下文切换 实时应用 实时
  • 上下文切换-FreeRTOS是如何工作的

    FreeRTOS是如何工作的 上下文切换 作者 xff1a Gavin Lee 来源 xff1a upsdn net 更新日期 xff1a 2006 04 13 上下文切换 跟任何其他程序一样 xff0c 一个任务执行时 xff0c 它使用
  • 国产手机操作系统艰难探索

    4大阵营纷争劲起 国产手机操作系统艰难探索 作者 xff1a 连晓东 出处 xff1a 中国电子报 2005 7 13 13 07 52 阅读 lt script src 61 34 http service donews com numb
  • 嵌入式系统和嵌入式操作系统

    嵌入式系统和嵌入式操作系统 西南交通大学电气学院 张湘 肖建 2004 10 2 文章从概念 特点 种类等不同方面就嵌入式系统和嵌入式操作系统做了介绍 一 什么是嵌入式系统 嵌入式系统一般指非PC系统 xff0c 有计算机功能但又不称之为计
  • FPGA与SRAM相结合完成大容量数据存储

    FPGA与SRAM相结合完成大容量数据存储 作者 xff1a 安莎莎 赖伟林 张辉 阅读 xff1a 248 引用 xff1a 0 发布时间 xff1a 2006 05 25 20 01 出处 xff1a 电子产品世界 西安电子科技大学 通
  • Git客户端(Windows系统)的使用

    分类 xff1a Ubuntu 2013 09 03 02 15 212人阅读 评论 0 收藏 举报 本文环境 xff1a 操作系统 xff1a Windows XP SP3 Git客户端 xff1a TortoiseGit 1 8 5 0
  • PX4飞控-自定义发送MavLink消息

    PX4飞控 自定义发送MavLink消息 一 自定义XML文件 如图所示 这相当于定义了一个结构体 xff0c 结构体里面就有一个类型为uint8 t的u8元素 使用的id端口为150 xff0c 这里注意不要与已经存在的id重复 二 使用
  • IPv4和IPv6何去何从

    一 缘起 某一天 xff0c 在公司技术群内运维大佬们发了这么一条消息 这条消息瞬间勾起了我的好奇心 什么是IPv6 xff1f 为什么要切IPv6 xff1f 于是在上班时多去了几次去卫生间之后 xff0c 对IPv6有了一些初步认识 x