TCP/IP非专业指南 – IPv6 Part 1

做了好几年与网络有关的工作,回顾的时候会发现计算机网络所包括的知识内容,其实远超过表面看起来的那么简单。之前写的用Erlang编写游戏服务器网关的文章是最容易被搜索到的一篇,由此看来,Erlang这一两年来在国内也变得流行起来,而且处理网络层面工作的需求可能也越来越多。

能够做基于网络的应用,不等于对网络的基础知识就有比较好的掌握。实际上,对于TCP\IP,HTTP,PPPoE, NAT等等一些网络知识一知半解,对做网站,或是基于网络的APP应用来说,不一定是太大的硬伤。但如果能更深入的去了解一些这方面的知识,会发现其实有更广阔的领域可以有所作为,而且计算网络的发展和即将要发生的变革,起源仍然是来自于这些基础部分的改进和创新。

实际的网络构成比理论知识上的模型要复杂许多,教科书常将网络分为七层的结构,即通常所说的OSI Model。在实际应用中,每一层的职能和特性并不一定是按照这个模型严格界定的,但整体上这个模型对帮助理解有一定作用。

Zack想偶尔还是要写一点技术向的文章,也给自己归纳一些参考的资料。然而网络部分涉及的面太广,要从一开始说起的话,抄书都抄不完。因此还是结合比较常见和热点的问题,记录一点非专业的指南就好。

IPv6是一个这一两年在国内也比较常被提起的词汇,也出现了一些似乎被吹的有点玄乎的项目。所以就先从IPv6到底是怎么回事儿说起好了。

现在的大部分机器上,都会同时有一个IPv6的地址,也会有一个IPv4的地址。大概如224.18.96.103这样的地址就是通常所说的IPv4地址。所谓v4,代表的是Version 4,那么很容易想到的问题是,Version 1, 2, 3是怎么回事?为什么直接到了Version 6版本?

有趣的是,对于IP协议来说,确实没有前三个版本。这是因为其实IP协议是从早期的TCP协议中将一些功能分离出来而形成的,而TCP在此之前经过了三个主要版本的演进,所以当IP出现时,直接就到了Version 4。

而Version 5在某种意义上是存在的,只是因为一直处于试验状态而并没有得到广泛应用,具体可以参见Internet Stream Protocol

促使设计IPv6的最大动力在于IPv4的地址容量已经不能满足接入网络的设备数量。如果对二进制计数有一定基础了解,便可以大概猜到IPv4的地址是用一个32 bits的数据存储的,实际上也是如此。那么计算一下总量,可以得出IPv4的理论地址容量是2的32次方,也就是42亿多一些。这个数字看起来不算小,但如果和如今网络的设备总数相比较,就是不足的了。

IPv6的地址则扩展到了128bits。2的128次方是多大,如果写下来的话,应该是340282366920938463374607431768211456。这个数字具体有多大呢?以现在的人口计算,意味着每个人都可以有上亿个不同的地址。IPv4的地址总量相对于IPv6来说,就如同只是地球上的一粒沙子而已。

无论如何,解决IP地址分配已经不足的问题,是设计IPv6的最重要的驱动因素。容易被提起的问题是既然IPv4不足够,为什么如今仍然在广泛使用?实际上,IPv4结合NAT(Network Address Translation)技术在一定程度上缓解了地址分配不足的问题,但这些混搭的手段对网络整体的拓扑结构,网络的管理以及安全性都增加了许多复杂性。IPv6在设计上也为解决这些问题提供了更多的空间。

另一方面,IP地址协议的切换,就好象给一座已经建好的房子更换地基,是个需要很小心同时需要逐步切换的工程。这中间需要硬件商,ISP服务商等逐步进行切换和升级,现在支持IPv6的设备基本都同时向后兼容IPv4,尽管旧有的只支持IPv4的设备是无法向前兼容IPv6的。