IPv4 + IPv6 = IPv10?是的,IPv10就是IPV4 + IPv6!

你一定知道IPv4和IPv6,IPv6号称为地球上每一粒沙子都分一个IP地址。你有可能也听过大名鼎鼎的IPv9,但是从数学上面考虑,IPv10肯定比IPv9厉害啊。

前面发了一篇IPv6的协议规范RFC8200,正式发布时间是2017年7月份,它废止了RFC2460,RFC2460又废止了RFC1883,RFC1883的草案是1995年3月份提出来的。什么概念呢?1994年4月,中国NCFC(中国国家计算机与网络设施,The National Computing and Networking Facility of China)率先与美国NSFNET(美国国家科学基金会网络,national science fund network)直接互联,实现了中国与Internet全功能网络连接,标志着我国最早的国际互联网络的诞生。也就是说,中国接入互联网的第二年,美国人就已经在研究IPv6了。

时间又过了22年,在2017年9月2日,也就是RFC8200正式发布两个月之后,埃及工程师Khaled Omar提出了IPv10的协议规范。很不幸,这份草案在6个月之后就失效了,没有再更新。

下面,让我们一起走进这份IPv10草案。

Internet Protocol version 10 (IPv10) Specification

Internet 协议版本 10 (IPv10) 规范

本备忘录的状态

本互联网草案完全符合 BCP 78 和 BCP 79 的规定。

Internet- Drafts 是 Internet Engineering Task Force (IETF) 的工作文件。请注意,其他组也可以将工作文档作为 Internet 草案分发。当前 Internet 草案的列表位于 http://datatracker.ietf.org/drafts/current/。

Internet- Drafts 是有效期最长为六个月的草稿文件,可以随时更新、替换或被其他文件淘汰。将互联网草案用作参考材料或引用它们而不是“正在进行的工作”是不合适的。

该互联网草案将于 2018 年 3 月 2 日到期。

版权声明

 版权所有 (c) 2017 IETF Trust 和确定为文档作者的人员。版权所有。

 本文档受 BCP 78 和 IETF Trust 的与 IETF 文档相关的法律规定 (http://trustee.ietf.org/license- info) 的约束,在本文档发布之日生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文档中提取的代码组件必须包含 Trust Legal Provisions 第 4.e 节中所述的简化 BSD 许可文本,并且不提供如简化 BSD 许可中所述的保证。

梗概

 本文档指定了 Internet 协议 (IPv10) 的第 10 版,有时也称为 IP 混合(IPmix)。

1、 简介

 IP 版本 10 (IPv10) 是互联网协议的新版本,旨在允许 IP 版本 6 [RFC- 2460] 与 IP 版本 4 (IPv4) [RFC- 791] 通信,反之亦然。

- Internet 是用于连接到它的主机之间通信的全球范围的网络。

- 这些连接的主机(PC、服务器、路由器、移动设备等)必须具有全局唯一地址才能通过 Internet 进行通信,这些唯一地址在 Internet 协议(Internet Protocol,IP) 中定义。

- Internet 协议的第一个版本是 IPv4。

- 在 1975 年开发 IPv4 时,因为IPv4 地址空间的数量非常庞大,预计连接到 Internet 的主机数量不会超过 IPv4 地址空间,而且IPv4最初旨在用于实验目的。

- IPv4 是(32 位)地址,允许大约 43 亿个唯一 IP 地址。

- 几年前,随着连接到 Internet 的主机的大量增加,IPv4 地址开始耗尽。

- 1990 年代中期引入了三种短期解决方案(CIDR、私有寻址和 NAT),但即使使用这些解决方案,IPv4 地址空间还是在 2011 年 2 月用完了,正如 IANA 所宣布的那样, RIR 的 IPv4 地址空间如下:

 * 2011 年 4 月:APNIC 公告。

 * 2012 年 9 月:RIPE NCC 公告。

 * 2014 年 6 月:LACNIC 公告。

 * 2015 年 9 月:ARIN 公告。

- 引入了长期解决方案 (IPv6) 以增加 Internet 协议使用的地址空间,这在 Internet 协议版本 6 (Internet Protocol version 6,IPv6) 中进行了定义。

- IPv6 由 Internet 工程任务组 (IETF) 于 1998 年开发。

- IPv6 是(128 位)地址,可以支持大量的唯一 IP 地址,大约等于 2的128次方个唯一地址。

- 因此,在 IPv4 地址空间耗尽后,为了能够支持连接到 Internet 的主机的大量增加,对 IPv6 的需求成为一个至关重要的问题。

- 从 IPv4 到 IPv6 的迁移成为必要的事情,但不幸的是,要完成这种完全迁移需要几十年的时间。

- IPv6 已经发展了 19 年,但直到现在还没有完全迁移,这将导致互联网分为两个部分,因为 IPv4 仍然主导着互联网流量(谷歌在 2017 年 4 月测量的 85%)。新的 Internet 主机将被分配纯 IPv6 地址,并且只能与 15% 的 Internet 服务和应用程序进行通信。

- 所以,对于IPv4和IPv6共存的解决方案的需求成为迁移过程中的一个重要问题,因为我们无法早上醒来发现所有IPv4主机都迁移到IPv6主机,尤其是大多数企业还没有这样做迁移以创建完整的 IPv6 实施。

- 此外,在所有企业网络中除了现有的 IPv4 地址(IPv4/IPv6双栈)之外,还要求使用 IPv6 地址并没有实现能够使 IPv6 成为互联网中最主要的 IP 的大规模实施,因为许多人认为他们不会因为拥有更大的 IP 地址位和 IPv4 满足他们的需求而受益,此外,并非所有企业设备都支持 IPv6,而且许多人担心由于这种迁移可能导致服务中断。

- 最近针对 IPv4 和 IPv6 共存的解决方案是:

本机双栈(IPv4 和 IPv6)

双栈精简版

NAT64

464xlat

映射

(也存在其他技术,例如 lw6over4;它们可能有更具体的用例)

- IPv4/IPv6 双栈,通过同时为所有主机使用 IPv4 和 IPv6 地址,允许 IPv4 和 IPv6 共存,但该解决方案不允许 IPv4 主机与 IPv6 主机通信,反之亦然。此外,在 IPv4 地址空间耗尽后,新的 Internet 主机将无法使用 IPv4/IPv6 双栈。

- 隧道,允许 IPv6 主机通过 IPv4 网络相互通信,但仍然不允许 IPv4 主机与 IPv6 主机通信,反之亦然。

- NAT- PT,允许 IPv6 主机与 IPv4 主机通信,只使用主机名并让 DNS 参与通信过程,但该解决方案效率低下,因为它不允许使用直接 IP 地址进行通信,还需要对源 IP 地址和目标 IP 地址使解决方案变得复杂且不适用,这就是为什么将其移至 RFC 2766 中的历史状态。此外,NAT64 需要如此多的协议转换和静态配置绑定,并且还需要在通信过程中使用 DNS64 .

2、 Internet 协议版本 10(IPv10)

- IPv10 是此 Internet 草案中提出的解决方案。

- 它以一种简单且高效的方式解决了仅允许 IPv6 主机与仅 IPv4 主机进行通信的问题,反之亦然,尤其是在使用直接 IP 地址和在 IPv10 主机之间使用主机名完成通信时,因为没有 需要协议转换或让 DNS 参与通信过程,而不是其正常的地址解析功能。

- IPv10 允许来自两个 IP 版本(IPv4 和 IPv6)的主机能够进行通信,这可以通过在同一 IP 报文头中包含 IPv4 和 IPv6 地址混合的 IPv10 报文来实现。

- 从这里出现了 IPv10 的名称,因为 IP 报文可以在同一个第 3 层报文标头中包含 (IPv6 + IPv4 /IPv4 + IPv6) 地址。

3、 四种通信方式

3.1、IPv10:IPv6 主机到 IPv4 主机

- IPv10 报文:

 

- 发送 IPv10 主机 TCP/IP 配置:

 IP 地址:IPv6 地址

 前缀长度:/length

 默认网关:IPv6 地址(可选)

 DNS 地址:IPv6/IPv4 地址

- IPv10 操作示例:

 

IPv10:IPv6 主机到 IPv4 主机

3.2、 IPv10:IPv4 主机到 IPv6 主机

- IPv10 报文:

 

- 发送 IPv10 主机 TCP/IP 配置:

 IP 地址:IPv4 地址

 子网掩码:/mask

 默认网关:IPv4 地址

 DNS 地址:IPv4/IPv6 地址

- IPv10 操作示例:

 - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

IPv10:IPv4 主机到 IPv6 主机

3.3、 IPv10:IPv6 主机到 IPv6 主机

- IPv10 报文:

 

- 发送 IPv10 主机 TCP/IP 配置:

 IP 地址:IPv6 地址

 前缀长度:/Length

 默认网关:IPv6 地址(可选)

 DNS 地址:IPv6/IPv4 地址

- IPv10 操作示例:

 - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

IPv10:IPv6 主机到 IPv6 主机

3.4、 IPv10:IPv4 主机到 IPv4 主机

- IPv10 报文:

 

- 发送 IPv10 主机 TCP/IP 配置:

 IP 地址:IPv4 地址

 子网掩码:/Mask

 默认网关:IPv4 地址

 DNS 地址:IPv6/IPv4 地址

- IPv10 操作示例:

 - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

IPv10:IPv4 主机到 IPv4 主机

重要说明:

所有路由器都必须启用 IPv4 和 IPv6 路由,因此当路由器收到 IPv10 报文时,应根据 IPv10 报文中的目标地址使用适当的路由表。

也就是说,如果接收到的 IPv10 报文的目的地址字段中包含 IPv4 地址,则路由器应该使用 IPv4 路由表来做出路由决策,如果接收到的 IPv10 报文的目的地址字段中包含 IPv6 地址,则路由器应该使用 IPv6 路由表来做出路由决定。

所有连接互联网的主机都必须是 IPv10 主机才能进行通信,无论使用的 IP 版本如何,并且 IPv10 部署过程可以由所有为主机网络和安全设备开发操作系统的技术公司完成。

4、 IPv10 报文头格式。

- 下图显示了与 IPv6 报文头几乎相同的 IPv10 报文头:

 

Version:版本, 4 位 Internet 协议版本号。

 - 0100 : IPv4 报文

 (Src. 和 dest. 是 IPv4)。

 - 0110 : IPv6 报文

 (Src. 和 dest. 是 IPv6)。

 - 1010 : IPv10 报文

 (Src. 和 dest. 是 IPv4/IPv6)。

Traffic Class:流量类别, 8 位流量类别字段。

Flow Label:流标签, 20 位流标签。

Payload Length:有效载荷,16 位长度无符号整数。有效载荷的长度,即此 IP 标头后面的报文的其余部分,以八位字节为单位。(请注意,存在的任何扩展标头 [第 4 节] 都被视为有效载荷的一部分,即包含在长度计数中。)

Next Header:下一个头部, 8 位选择器。 标识紧跟在 IP 标头之后的标头类型。

Hop Limit:跳数限制, 8 位无符号整数。 每个转发报文的节点减 1。 如果 Hop Limit 减少到零,则丢弃该报文。

Source Address:源地址,报文始发者的 128 位地址。

 

Destination Address:目标地址,报文预期接收者的 128 位地址(如果存在路由报文头,则可能不是最终接收者)。

 

5、 IPv10 的优势。

1) 介绍了一种 IPv6 主机和 IPv4 主机之间有效的通信方式。

2) 即使在 IPv4 地址空间耗尽后,也允许仅 IPv4 的主机存在并与仅 IPv6 的主机通信。

3) 在向 DNS 发送查询以进行主机名解析时增加了灵活性,因为 IPv4 和 IPv6 主机可以与 IPv4 或 IPv6 DNS 服务器通信,并且 DNS 可以使用它拥有的任何记录(IPv6主机 AAAA 记录或 IPv4主机A记录)进行记录回复。

4) 无需考虑迁移,因为 IPv4 和 IPv6 主机可以共存并相互通信,这将允许使用 IPv4 和 IPv6 的地址空间,从而使可用的连接主机数量更大。

5)IPv10对“所有”互联网连接主机的支持可以由开发操作系统的技术公司在很短的时间内部署(用于主机和网络设备,并且不会对企业用户产生依赖,它只是一个软件开发过程)所有主机的 NIC 卡允许将 IPv4 和 IPv6 封装在同一个 IP 报文头中。

6) 提供四种主机间通讯方式:

 - IPv6 主机到 IPv4 主机(6 to 4)

 - IPv4 主机到 IPv6 主机(4 to 6)

 - IPv6 主机到 IPv6 主机(6 to 6)

 - IPv4 主机到 IPv4 主机(4 to 4)

安全注意事项

IPv10 的安全特性在 Internet 协议的安全架构 [RFC- 2401] 中进行了描述。

致谢

作者要感谢 S. Krishnan、W. Haddad、C. Huitema、T. Manderson、JC。 Zuniga、A. Sullivan、K. Thomann、M. Abrahamsson、S. Bortzmeyer、J. Linkova、T. Herbert 和 Lee H. 提供了有关 IPv10 的有用输入和讨论。

参考

 [RFC- 2401] Stephen E. Deering and Robert M. Hinden, "IPv6 Specification", RFC 2460, December 1998.

IANA 考虑事项

IANA 必须为 IPv10 报文的第 3 层报文头中的 4 位版本字段保留版本号 10。

完整的版权声明

 版权所有 (C) IETF (2017)。版权所有。

 本文件及其译文可能会被复制和提供给他人,并且可以全部或部分地准备、复制、出版和分发对其进行评论或以其他方式解释或协助其实施的衍生作品,而不受任何限制,前提是上述版权声明和本段包含在所有此类副本和衍生作品中。但是,不得以任何方式修改本文档本身,例如删除版权声明或引用,除非出于制定互联网标准的需要,在这种情况下,必须遵循互联网标准流程中定义的版权程序,或根据需要将其翻译成英语以外的语言。

 上述授予的有限权限是永久的,不会被撤销。

 本文档和此处包含的信息由 INTERNET ENGINEERING TASK FORCE 提供,不提供任何明示或暗示的保证,包括但不限于使用此处的信息不会侵犯任何权利或任何不适用的保证出于特定目的。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用位运算来实现该功能,具体步骤如下: 1. 将IPv4地址和掩码转换成32位的二进制形式。 2. 对掩码进行取反操作,得到反码。 3. 将反码转换成十进制形式,得到掩码中0的个数。 4. 对IPv4地址进行位与操作,将掩码中为1的位保留下来,为0的位全部置为0,得到网络地址。 5. 然后从网络地址+1开始,每次加1,直到达到掩码中为0的个数的所有可能值,即可得到所有的IPv4地址。 以下是Java代码示例: ```java public static List<String> getAllIPv4(String ip, String mask) { List<String> ips = new ArrayList<>(); String[] ipsArr = ip.split("\\."); String[] maskArr = mask.split("\\."); int[] ipv4 = new int[4]; int[] ipv4Mask = new int[4]; for (int i = 0; i < 4; i++) { ipv4[i] = Integer.parseInt(ipsArr[i]); ipv4Mask[i] = Integer.parseInt(maskArr[i]); } int maskValue = (ipv4Mask[0] << 24) + (ipv4Mask[1] << 16) + (ipv4Mask[2] << 8) + ipv4Mask[3]; int reverseMaskValue = ~maskValue; int zeroCount = Integer.bitCount(reverseMaskValue); int networkAddress = (ipv4[0] << 24) + (ipv4[1] << 16) + (ipv4[2] << 8) + ipv4[3]; networkAddress = networkAddress & maskValue; for (int i = 1; i < (1 << zeroCount) - 1; i++) { int currentAddress = networkAddress + i; StringBuilder sb = new StringBuilder(); for (int j = 0; j < 4; j++) { sb.append(currentAddress >> (24 - j * 8) & 0xff); if (j != 3) { sb.append("."); } } ips.add(sb.toString()); } return ips; } ``` 该方法接收两个参数,分别是IPv4地址和掩码,返回值是一个List类型的所有IPv4地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Danileaf_Guo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值