IPv6 简明指南:从地址构成到实际应用
IPv6 简明指南:从地址构成到实际应用
IPv6是互联网协议的下一代版本,它解决了IPv4地址空间不足的问题,为每个设备提供了唯一的全球IP地址。本文将从IPv6地址的构成开始,介绍如何获取IPv6地址及其应用场景,帮助读者全面了解IPv6的基础知识。
从 IPv6 地址构成开始理解
概览
本文档主要讲解 IPv6 的一些皮毛知识,对家用来说,已经足够了。为了让更多普通中文用户看懂,我们将尽可能使用中文来解释某些专用名词,并隐藏一些的技术细节。阅读本文档大约耗时 10 分钟。主要内容:理解 IPv6 地址的一些概念,诸如前缀,子网,接口。如果您具备一定关于 IPv4 的网络知识,那么相信您阅读本文档将能更快理解 IPv6。
IPv6 带来了什么
如果把 IPv6 和 IPv4 做个类比,那您可以这样理解:IPv4 就相当于功能机时代,而 IPv6 就相当于进入了智能手机的时代。在功能机时代,大家相互联系一般靠手机号码,而智能手机的时代,二维码大行其道,我们有非常多的办法保持相互的联系,不再依赖手机号码。IPv6 大抵如此,您一定听说过,IPv6 的地址空间足够给地球上的每粒沙子都分配一个 IPv6 地址。这正是它对于普通用户的最大意义。
IPv6 地址的结构
IPv6 地址的完整结构是这样的:
0000:0000:0000:0000:0000:0000:0000:0000
它是一个 128 位(bit)长度的数据。在书写时,由 8 段 16 进制组成的数字加上一个冒号组成。第一次接触 IPv6 地址会有一点奇怪,因为 IPv4 地址是 32 位(bit)的数据,以每 8 位加一个点隔离开,因此它通常是以 10 进制来表示,比如 1.2.4.8。但是 IPv6 地址是 16 进制的,所以如果以 10 进制来表示会非常长,没有人会那么做。
没关系,很快就会习惯。
看着如此长的 IPv6 地址,确实有理由相信 IPv6 可以给每一粒沙子分配一个地址。不过,这么长的 IPv6 地址,在实际传输时,可能会占用更多的带宽。为了解决这个问题,IPv6 地址的结构可以被缩短。
让我们来看看 Youtube 的 IPv6 地址:
2404:6800:4004:801::200e
这个 Youtube 的 IPv6 地址明显比开头的更短!因为这个地址已经被缩短了,如果要把它扩展为完整的 IPv6 地址,那么应该是这样:
2404:6800:4004:0801:0000:0000:0000:200e
一个 IPv6 地址中间可能包含很长的一段 0,可以把连续的一段0压缩为 ::
。但为保证地址解析的唯一性,地址中 ::
只能出现一次。另外,每个冒号之间的数据,如果前面是 0,那么可以省略,比如 :801:
的完整表示是 :0801:
。当全部是 0 时,则可以只用一个 0 表示,比如 :0000:
可以表示位 :0:
。
前缀
IPv6 地址很长,可以存储很多部分,为了方便规划功能,设计者将 IPv6 地址划分成了两个部分,分别是前缀和后缀。现在我们先来看看前缀。
IPv6 地址的前缀是前 48 位(也就是前 3 段)的部分,拿 Youtube 的 IPv6 地址来说,前缀就是 2404:6800:4004
。
前缀的功能是用来区分不同的网络,比如网络 A 和网络 B,网络 A 的前缀是 2404:6800:4004
,网络 B 的前缀是 2404:6800:4005
。通常这是运营商网络负责的领域。
另外,前缀也称为站点前缀,它有点像是 IPv4 时代的公网 IP 地址,尽管这么比喻并不恰当。为什么这么说呢,由于 IPv4 只有 32 位,所以 IP 数据包中用于标记 IP 地址预留的空间到此处 2404:6800
就已经用完了,没有更多的空间用于标记到具体设备。这一问题在 IPv6 中不再存在,因为 IPv6 预留了更多的空间。
子网
前缀之后的那一段 16 位的数据,用于标记子网 ID。子网 ID 通常是您家庭网络的部分(家庭网络的 ID 号,如果以此为界最多可以分配 65535 个家庭使用)。
在 IPv4 的时代,这就是您家庭路由器的网络的部分,通常已经进入到了 NAT 的部分,您家中的其它网络设备都只能在一个公共的 IP 下活动,可悲的是这个公共的 IP 可能还不是公网 IP,可能只是运营商内部的内网 IP。
NAT 的缺点这里就不多谈了,大家应该深有体会。在 IPv4 时代,受限于协议这是无法避免的问题,而在 IPv6 的年代,就不存在这个问题了。毕竟每个设备都能分到唯一的公网 IP 地址。
接口
整个 IPv6 地址的长度一共 128 位,前 64 位通常用于 IPv6 地址的前缀和子网,而后 64 位则通常作为接口。通俗的讲,这用于标记到底是哪个设备,比如您的家庭网络的路由器,还是您的手机,又或者是电脑。
总结
一张图来总结 IPv6 地址的常规套路。
总的来说, IPv6 的地址大概就是,把 IPv4 时代 IP + 家庭局域网专用子网 + 设备MAC 全部揉到一起,以便于一次性全部传输完。
可以理解到, IPv6 本质上是 IPv4 的升级版,为了解决地址空间不够的问题,规划了充足的空间。
1分钟获得你的首个 IPv6 地址,及其应用
获取 IPv6 地址的最有效方式
尽管 IPv6 目前在中国已经大面积铺开应用,不过家用有线宽带部署情况不是很乐观,具体原因下一章节解释。出人意料的,移动蜂窝网络已经基本完成了 IPv6 的部署,因此目前最简单,最快速的获取 IPv6 地址的方式,就是用您的手机开个热点。
当您的电脑连上手机的热点后,您可以在任务管理器(win10以上系统)看到分配到了 IPv6 地址。
在这张图中,笔者的 IPv6 地址是:
240e:414:b00:5af5:dd21:505a:a881:6a7
请同学们根据上节课的内容,分析一下这个 IPv6 地址。 其站点前缀是 240e:414:b00
,子网 ID 是 5af5
。在后面的则是接口地址 dd21:505a:a881:6a7
。
是不是很令人意外,IPv6 就在身边。
IPv6 网络如何运行
上个章节讲到,家用有线宽带的部署情况不是很乐观,这里有一个比较通俗易懂的解释。
如果把网络之间互相连接电路比作高速公路,那么 IPv4 数据包和 IPv6 数据包则分别是小型箱车与大型卡车。
在互联网建设早期,由于只有 IPv4 数据包传输,因此为了支持其数据包的传输,各个网络节点都建设了支持小型箱车的装卸平台(协议支持),这些网络节点可能是路由器,也可能是您的电脑。
但是,IPv6 大卡车来了之后,尽管它可以上路,但是在某些网络节点由于缺乏装卸平台(协议支持),它无法抵达下一个网络节点。
因此,如果要使整个网络都能完整支持 IPv6,情况则变得复杂许多。最大的阻碍在于老旧设备无法通过软件升级去支持 IPv6,只能更换,耗资巨大。家庭网络除了要更换连接各个家庭的汇集设备,还要挨个更新支持 IPv6 协议的猫。如果用户家里还有单独的路由器,则要求这些路由器支持 IPv6。
阻力重重。
在现阶段,最好的办法仍然是 IPv4 网络和 IPv6 网络同时运行,以实现最大兼容。因此运营商目前的策略是旧的线路不管,新线路则支持 IPv6。
IPv6 地址是怎么分配的
思绪回到刚刚到手的 IPv6 地址,现在可以玩了。 赶紧到 ipv6-test.com 测试一下网络能不能用。嗯。看样子是没问题。
这里重点讲一下 SLAAC 这个标签。 在 IPv6 时代,IPv6 地址的分配方式主要是两种:
- 有状态分配。即传统的分配方案,与 IPv4 时代的路由器内网地址类似,这是由路由器生成一个地址给设备,有时间限制。甚至可以理解为动态 IP 地址。
- 无状态分配,通常就是指 SLAAC。SLAAC 是一种很简单好用的配置方式:由于在 IPv6 地址中,前缀和子网都是确定好的,如果路由器支持无状态分配,。通常情况下的分配方式是,系统会使用设备的 MAC 地址(物理地址)来作为其 IPv6 接口的一部分。
IPv6 的应用场景
看样子一切都准备就绪,可以起飞了。更快的 BT 速度,更好的联机体验!
然而。
在稍早前的章节说到,为了保持最佳兼容性,目前现阶段的互联网 IPv6 和 IPv4 这两个网络是同时运行,并且互相连接。因此并不是说有了 IPv6 就万事无忧了。
举个例子:玩 P2P 游戏,虽然您已经连接到了 IPv6 网络,但是如果您的队友在 IPv4 网络,尽管您们通过 IPv4-IPv6 间的桥接转换能勉强互联,但是就又回到了有 NAT 的时代。IPv6 等于没用。
究其原因,首先,在各个系统上运行的应用程序,很多早期开发完成的应用程序并不支持 IPv6,直接的结果就是无法在 IPv6 网络下工作。此外,由于网络架构发生了改变,要支持到 IPv6 ,甚至是需要额外开发专门的模块来支持,比如 Linux 上的防火墙,是单独的一个 ip6tables 在负责管理。似乎一切都变得复杂了很多。
因此就实用性而言,目前 IPv6 的实用性还没办法与 IPv4 对等。作为普通用户,我们期待的是能完全取代 IPv4,不去做任何额外的工作。
希望能等到那天的到来。
总结
同时接入 IPv4 和 IPv6 的感觉就像家里拉了电信联通,以为是双倍的带宽,双倍的快乐。结果,只有一条线路能干活。这种感觉您有过吗。😂。
IPv6 子网
子网是什么
本章节内容会稍微复杂一些,不过我们仍然努力隐藏技术细节,保证普通用户能读懂这些内容。请记住,您不需要了解技术细节。
在过去的年代,如果您要寄送一封信件(物理)给某人,有时候,信使无法直接将信件寄到收件人手上,因为收件地址可能是在某个单位或企业,信件只能抵达门卫处,然后再由其他人转交给您,或者您自己去取。这就是子网。
对于互联网,各个设备都是通过物理链路连接的,数据需要通过层层子网进行传输。
子网
其实无论是 IPv6 还是 IPv4,网络地址的组成都是基本一样的,其原理都是由大至小,呈现出树形结构。用这两张图来帮助理解。
家庭中的各路设备,通过路由器(WiFi 或者电缆)相互连接到一起,形成一个子网。
然后,各路家庭网络再通过光纤或者电缆,连接到电信运营商在每个临近区域部署的路由器上,再形成一个子网。
各个电信运营商的路由器,再相互连接,接入到每个省份的省级运营商的路由器上,再形成一个子网。并同时,与其它运营商(电信,联通,移动,balabala)的路由器相互连接,形成互联网。
圆环套圆环,编织成了现在您正在使用的互联网。
IPv4 与 IPv6 的子网处理方案
如果某个设备的数据需要发送给另外一个设备,那么必需要知道其目的地,也就是目标 IP 地址。它想要收到目标设备的回信,也需要把自己的 IP 地址带上,这样目标设备才能知道给谁回信。
在 IPv4 时代,由于网络地址的规划长度有限,在电子设备日益增长的时代,没有办法给每个设备都分配一个唯一的地址。这就相当于,您想要在信封上填写收件人的地址时,发现写不满。
聪明的工程师发明了一种方式,将有限的空间重新组合,使得这有限的 IPv4 地址得以服务于现阶段全球数以亿计的设备。那就是:网络地址转换和子网掩码。
网络地址转换和子网掩码可以让不具备公网 IP 地址的设备,正常与互联网上的设备通信。即便目标设备也不具备公网 IP 地址。
不过,即便有这两种技术加持,也无法解决日益增长的设备数量对网络地址的需求。因此 IPv6 的应用总算开始推进了。
在 IPv6 中,由于充足的网络地址规划,不再需要网络地址转换和子网掩码。
进阶:IPv4 和 IPv6 的子网
进阶内容不可避免地使用一些专业术语,可选阅读。部分属于在文中如果没有解释,请您自行搜索,对于理解内容来说是必要的。
IPv4
我们都知道 IPv4 的地址长度是 32位,在 IPv4 互联网结构中,会有一个网关,子网掩码,IP 地址三大要素,一起组成了子网。
子网掩码
子网掩码与 IPv4 地址的长度一样,都是32位(很多初学者会混淆,不知其所以然,以为是 IPv4 地址),需要与 IPv4 地址互相组合使用,单独存在时没有意义。它的用途主要是辅助计算子网范围。
简单的说就是一个切糕刀子,在 32 位长度的 IPv4 地址中切一刀,左边是网络号(类似于 IPv6 中的前缀),右边就是子网。
公网下的子网
通过子网掩码,有限的地址空间下,被规划成了多个类型的网络,每个类型的网络都通过子网掩码来确定网络的规模(子网数量和主机数量)。
网络规模越大,主机数量越多,而网络规模越小,主机数量则越少。
总而言之就是挺复杂的,还是别想太多了。
家庭或企业下的子网,以及网络地址转换
由于公网 IPv4 地址有限,无法为每一台设备都提供公网 IPv4 地址,但是通信又需要 IPv4 地址,因此互联网地址管理机构将一部分 IPv4 地址划分出来,作为内部网络的专用地址。这可能会减少了一些可用的公网 IPv4 地址,但是通过网络地址转换技术(NAT),可以支持更多的设备接入到互联网。
比如 192.168.1.1/24
这个子网。这是家庭常用的子网地址范围。一般路由器作为网关占用了 192.168.1.1
这个 IP,其余的 IP 分配给了路由器的网关下的设备。这个子网可以支撑 254 个设备接入到网络。
这种方式虽然暂时解决了 IPv4 地址不够用的问题,但是增加了互联网的复杂度,降低了效率,增加了管理成本,属于治标不治本。
IPv6
有不少用户在初次接触 IPv6 时会有一些不习惯,因为在网络管理配置界面中,您只能看到一个 IPv6 地址(或者还有一个临时 IPv6 地址),没有子网掩码的概念。这并不是说就没有子网了,该切还是要切,只不过不用子网掩码来切,而是用前缀+子网ID来切。IPv6 切割子网用 CIDR 格式来表示,比如 2001:db8::/32
。大多数情况下,您的家庭网络一般会分到 /64
或 /56
的子网。这些信息由系统与 IPv6 路由器自动协商管理,您不需要自己去管理。
CIDR(无类别域间路由)
遵循 CIDR 规则的地址在尾部有一个以斜线分割的数字,以表明前缀长度(以位为单位)。
CIDR 有一个很好理解的方法。 比如 2001:1db8::/32
这个子网,就是从前往后数 8 个字符(不包括冒号),之后的地址范围都是属于 2001:1db8::
下的子网。比如 2001:1db8::1234
是属于 2001:1db8::/32
这个网络下的 IPv6 地址。
由于子网内的每个设备都有了公网 IPv6 地址,不再需要做网络地址转换,大大降低了管理难度。不需要借助任何额外的手段。
总结
简单来说,就是进步和舒适。 在 IPv6 中,很多配置都自动化了,不需要自己管理(对于普通用户来说)。IPv6 很好的解决了 IPv4 的诸多问题,子网也能够更好的支持更多的设备,更好的管理互联网。