程序员人生 网站导航

信息在网络中的漫游(二)

栏目:互联网时间:2015-01-26 09:15:00

上1篇文章主要介绍了公共因特网的拓扑,或说物理结构,那末这1篇文章要介绍IP――就是网络中每一个节点或端系统的辨认问题。现实中,道路的端点是1个个村落或城市,它们都是着名字的,但是网络世界中,用名字来标示每台主机是1件不太明智的事,因而人们发明了IP这类方式来辨认主机。

IP是2进制数字,共有32位,理论上可以有2的32次方(大约40亿)个不同0、1组合,因而可以标示这么多主机,每一个组合就是1台主机的名字。以下图是1个IP的例子:

11000001 00100000 11011000 00001001

明显,这样不方便记忆和书写,因而人们发明了点分10进制法来做替换,具体就是,把每8个位用1个10进制数字代替,然后10进制数字之间用点号分隔,因而上面那个IP就能够表示为:

193.32.216.9

不难想象,路由器既然要做中转站,必定要与多台主机/端系统相连,路由器伸出多条链路连接到各个主机,每一个主机被分配1个IP地址。那末路由器的IP是怎样的呢?实际上路由器有多个IP或说它本身是没有IP的,由于IP是1个与接口相干的概念,而不是1台机器。所谓接口就是1台机器和1条链路的交接处。表面上看,1条链路连接的是两台机器,但深入到机器内部,这条链路的两端却是机器里的网卡(在路由器中又称线路卡)。所以接口的本质是这块网卡,IP是与这块网卡绑定在1起的。每一个网卡具有1个全球唯1的IP,因而每一个端系统就能够被唯1定位或辨认出来,但是路由器却有很多个网卡,所以可以说有很多个IP,也能够说这些IP都不代表这个路由器本身。其实定位路由器本身也是没有甚么意义的,下面我们就会知道。

首先要了解1下,路由器本身是如何工作的和每台端系统是如何得到自己的IP的。路由器内部保护着1个转发表,其内容就是IP和自己接口的映照关系。IP是指该路由器接收到的分组的目的IP,而内部的每块网卡(即接口)都是有编号的。举个例子:

192.0.0.1 ―――― 1 ―――――― A

192.0.0.2 ―――― 2 ―――――― B

192.0.0.3 ―――― 3 ―――――― C

192.0.0.4 ―――― 4 ―――――― D

路由器根据自己的转发表来转发分组,上图中的转发表决定了目的IP是192.0.0.1的分组要发送到1号接口,然后1号接口通过1条链路与主机A相连,然后A的IP就顺理成章的成为192.0.0.1,同理B、C、D的IP顺次是192.0.2/3/4。

看到这里或许你就可以明白,所谓IP不过就是路由器转发表中的1个数字,或说,你的IP其实不是你的,你自己是用不到它的,只有你的路由器才需要它。路由器需要1个IP来决定把1个分组扔到哪一个接口(也就是链路)。也许有1条链路把你的主机和路由器的1个接口固定起来,但是这其实不意味着你的IP也是固定的,由于路由器随时可以改变转发表,修改掉你的路由器接口和IP之间的映照关系。比如大学时期,我们宿舍每一个人的桌子底下都有1个网线插口,这个插口肯定通过1条链路和学校路由器的某个接口固定,但是我发现自己电脑的IP并不是是固定的。

小结:IP的决定权不在端系统手中,而在与它相连的那台路由器手中。


上面例子中的那台路由器的工作还是非常低级的,由于每一个接口直接连接了1台端系统,或说该路由器中转发表中的接口编号对应的是1个个再具体不过的IP。实际上真实的路由器是不屑于干这类活儿的,由于太大材小用了。现实世界中,这类活儿常常由以太网交换机或集线器承当,以太网是局域网的1种实现思路。为何说大材小用呢?由于路由器转发表中接口编号对应的其实不是具体的IP,而是IP的1个范围,以下所示:

192.0.0.0~192.0.0.63 ―――― 1 ―――――― A

192.0.0.64  ~ 192.0.0.127 ―――― 2 ―――――― B

192.0.0.128 ~ 192.0.0.191 ―――― 3 ―――――― C

192.0.0.192 ~ 192.0.0.255 ―――― 4 ―――――― D

这样,路由器接收到1个分组,会检查它的目的IP出于哪一个范围,然后扔到对应的接口。注意,这个图中,A~D不再是具体的端系统了,而是局域网中的交换机或集线器,它们收到分组后再继续决定把分组发送到哪一个具体端系统。

这样做的好处就是:减轻了路由器的负担,它的转发表不需要保护那末多的映照。


现在我们把眼光集中到上例中IP范围上,我们把192.0.0.0~192.0.0.63转换成2进制就是:

11000000 00000000 00000000 00000000 ~ 11000000 00000000 00000000 00111111

可以发现,处在这个范围中的数(2进制),其前26位是相同的,都是11000000 00000000 00000000 00,只有后面6位不1样。人们发明了1种方法来表示这个有规律可循的范围,即:192.0.0.0/26,26表示这1范围的地址的前26位都是相同的,称之为IP地址的前缀;192.0.0.0是这个范围的起始IP。

一样道理,192.0.0.64  ~ 192.0.0.127表示为192.0.0.64/26;192.0.0.128 ~ 192.0.0.191表示为192.0.0.128/26;

192.0.0.192 ~ 192.0.0.255表示为192.0.0.192/26。

那末现在,路由器的每一个接口连到1个交换机(交换机本身没有IP的)上,交换机再与各个端系统相连,并且与这个交换机相连的每一个接口都有相同的前缀:各个端系统就没必要多言了,为何路由器上的那个接口也要保持相同的前缀呢?虽然前面说过它也有自己的IP,但没说具体是怎样的。实际上,这个路由器的接口和交换机那1头的端系统构成了1个子网,同1子网内的所有接口必须具有相同的前缀,这样我们就能够给出这个子网的地址,也就是上面所说的起始IP(注意到起始IP的末尾几位都是0,国际规定,1个IP除去前缀后的末尾几位若都是0,则这个IP代表这个子网的IP,且该IP不能用做子网内任意1台端系统的IP)。

再来谈谈这个路由器接口的IP,其实我觉得可以把它看作子网派到路由器内部的外交官,是为了子网内部的其他端系统方便寻觅路由器而设定的。从上面的分析中我们可以看到,在路由器内部是不会用到这个接口的IP的,由于路由器直接给了它1个内部编号。


好了,上面的那台路由器算是入门级的了,它下面有4个子网(而且网段很平均),这固然是1种理想化的状态,现实中可能要复杂的多。可以想到,这台路由器下面的4个子网其实构成了另外一个大1点的子网,而这台路由器就是高级1点的交换机,这个大1点的子网的地址不难看出就是192.0.0.0/24,前24位是相同的。

子网是1个相对的概念,我们也能够说真个中国的网络也是1个子网,由于它上面也还有高级路由器。明显,子网的范围越大,其前缀越短;子网越小,前缀越长。ISP们其实就是拿到了某个子网的分配权,然后出卖IP地址。越高级的ISP管理的子网的范围越大。那末谁是终极大BOSS呢?哈哈,ICANN,DNS也是归他管的,谷歌1下吧。


还有1个问题:在最底层的那种路由器中(也称为网关路由器),为何需要1个交换机才能与各个端系统相连呢?难道不能从1个接口伸出很多条线路然后连接各个主机?呃,这个问题我也还没想明白。。

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐