IPv6 简明指南:从基础知识到实际应用
IPv6 简明指南:从基础知识到实际应用
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 的诸多问题,子网也能够更好的支持更多的设备,更好的管理互联网。