理解网际网路协定(四):从 IPv4 到 IPv6,为何新技术迟迟不普及?浅谈 NAT 及 IPv6

关於 Internet Protocol,我们最後来聊聊为了解决 IPv4 一些问题而提出的新版本 IPv6,以及为什麽早在上世纪末就规划好解决方案,时至今日还是没有广泛的被使用?

首先来看看 IPv4 的主要问题:IP 位置数量不足。

IP 位置不足会影响什麽?

前面提到,由於 IPv4 在定义 Address 时只有使用 32 个位元,也就是总数为 42 亿多的 IP 位置,在今天连网设备数量极多情况,根本没办法让每个设备都被分配到一个实际的 Public IP Address。

有人可能会问,为何上网的设备都需要一个 IP 位置呢?这是因为当你取用网路服务时,实际上是在做封包交换,需要一个目的位置,当然也需要一个来源位置。

上网浏览时的讯息交换
*上网浏览时的讯息交换

例如我们在浏览网页时,我们电脑的浏览器需要先送一段话给网站的服务器,称为 Request,其中会包含来源的 IP 位置。等网站服务器收到这段 Request 後,就会把资料回传给来源方,称做 Response。

在 Request 及 Response 的讯息传递过程中,都会包含要送到哪个 IP 位置这个讯息,因此来源方需要提供一个可以到达的 IP 位置

为何特别标注可以到达的 IP 位置?因为 IPv4 的公开 IP 位置不足,所以很大一部份的连网设备,都会被 Router 分配一组私有(虚拟) IP 位置,而私有 IP 位置是无法在网际网路上被找到的,只有你所在的区域网路知道你在哪。

怎麽办?这时有个叫做 NAT 的技术就被提出来了!

NAT 如何让私有 IP 被定位?

NAT,是 Network Address Translation 的缩写,中文翻译成网路位置转换。没错,就是转换!把私有 IP 位置转成公开 IP 位置,再转回来不就得了?

基本的 NAT 就是这麽做的,由於网站服务器无法定位私有 IP,在电脑送 Request 出去时,Router 就会把来源的 IP 位置改成自己的(Router 同时有两个 IP 位置,区网内的私有 IP 位置,以及 ISP 指派的公开 IP 位置)。

NAT 改写 IP 位置

在 Router 改写来源 IP 位置时,也会在自己的记忆体内注记一下,把原本的私有 IP 位置 192.168.1.2 记录下来,对应到从这个位置想要 Request 的目的 IP 位置 87.65.43.21

等到网站服务器收到这个 Request,把资料回传时,Router 一看这个来源网站服务器为 87.65.43.21,刚好是我有记录过的位置,就把这个 Response 丢回给有记录的这个私有 IP 位置 192.168.1.2,大功告成!

也就是这样技术的诞生,使得 IPv4 位置不够的问题得到缓解。

被耽误 30 年的 IPv6

虽说有这些技术让 IP 位置不够的问题有处理的方式,但终究不是最佳解。

透过 NAT 所转送的封包会有一些限制,例如包了更多层的区域网路,一些需要频繁交换封包的服务从外网进来就难以「穿透」达到真正的目的地,或变的更加复杂,并存在一些安全性的疑虑。

这时将协定更新成 IPv6 就显的较为重要。和 IPv4 最大的不同就是地址的长度,从原先的 32 位元,一下变长了 4 倍达到 128 位元。也就是说,总 IP 位置的数量从原本的 42 亿多一下增加到 2^128 (约为 10^38 这样的数量级)这麽多,就算全世界每个人一天增加 10000 连网设备,到老也用不完的地步。

这麽长的 IP 位置,用十进位表示显然也还是太长,因此最常见的表示方法就改为每 16 位元一组,每组 4 个 16 进制数字,并且中间用 : 隔开,例如 2001:0db8:86a3:08d3:1319:8a2e:0370:7344

纵使解决了大部分 IPv4 的弊端,但在 IPv4 已经普及而且不到很难用的情况下,IPv6 还是无法完全取代 IPv4,究其原因还是相容性的问题。当初设计时并没有办法直接让 IPv6 的硬体设备支援 IPv4 的封包,导致要实做一些像是 Tunneling 的转换机制,才能让其相容。

也因此这让网路设备开发商,亦或是 ISP 们比较没有动力开发或使用 IPv6 的设备,也毕竟大多数的人用 IPv4 还是用的好好的,何必多花钱更新呢?

在去年底(2020)的 IPv6 流量已经占全部流量的 30% 了,但过了 IPv6 已经提出的 30 多年後,还不知道何时能真正普及呢?

参考资料

  1. Wiki - IPv6
  2. 鸟哥的 Linux 私房菜 - NAT
  3. Wiki - NAT
  4. TWNIC Blog - IPv6 何时才能全面普及?
  5. Wiki - ICANN

<<:  最短路径问题 (1)

>>:  Day12 咸香下饭好帮手-金银蛋炒四季豆

【Day16-搜寻】茫茫文海当中找到那个对的词——文字处理利器之正规表达式在python的应用

前一天我们就如何让程序可以认得不同的单字稍微讨论了一下一些基本的处理,那今天我们就继续文字的主题来介...

Day24 AWS - Route53 & Domain name

今日的教学会有购买域名(约每年12美元,系统会协助计算)及DNS映射的服务费(每个月0.5美元,量大...

数据治理(Data Governance)

在数据治理程序中,有一些常见的角色,例如数据所有者,数据管理员,数据保管人等。数据所有者应对其拥有...

理解 HTTP(二):Method、Status Code

昨天大致谈了网站内容是怎麽被下载到电脑里的,今天稍微深入一点聊聊关於 HTTP 这个协定的一些简单并...

Day6-D3 资料绑订 Data Binding: 资料状态enter、update、exit

本篇大纲:Enter / Update / Exit 状态、增减资料数量与DOM元素不匹配的方法、...