1
纵横于天地之间——互联网络技术
1.7.4 四、Internet寻址

四、Internet寻址

通过IP路由器把网络连接起来,构成了互联网。

世界上各个国家的邮政系统是最传统的信息交换网络。我们要想给朋友发一封信,要完成下面的过程:

第一步,购买一个标准的信封,当然如果你愿意,也可以用废纸糊一个,只要邮局同意你这么做;

第二步,写上收信人的地址和邮政编码,把所写的内容放进信封,封好;

第三步,购买邮票,贴到信封上,这是付费的过程,购买邮票的面额,由邮局决定;

第四步,把信交给邮局,进行检查确认;

第五步,按照收信人的地址,邮局开始逐级投送,这是一个寻址过程。

要把你的信正确地交到收信人手里,关键是完成正确的寻址过程。

同样,在使用电话时,你所拨的号码,也是一个地址,电信网络要把电话接通,也是在完成一个寻址过程。

我们使用互联网,就是要把我们的计算机和网络上的另外一台计算机连接起来,这个任务是由网络完成的。

怎么样找到网络上的计算机呢?这就是Internet的寻址。

互联网上的地址包括物理地址(MAC)、IP地址和域名。

(一)物理地址(MAC)

物理地址是网络的最底层的地址,每台连到网络的计算机必须有一个物理地址。当我们需要在网络传送数据的时候,必须要知道接收者的地址。传送的数据被划分为多个分组,每个分组包含一个目的地址字段。

由于连到互联网的最多的是以太网,所以我们这里只讲以太网地址。

一般而言,以太网地址是固定在网络接口卡上的。网络接口卡俗称网卡,当然,随着芯片技术的发展,很多计算机尤其是笔记本电脑,已经没有单独的网卡了,因为网卡电路已经被包含在主板上。

因为以太网地址是以硬件的形式存在的,所以也被称为硬件地址(Harderware Address)、物理地址(Physical Address)、介质访问地址(Media Access)和2层地址。

这里有一个问题,每一个网卡应该有一个不同的物理地址,否则网络就混乱了。但是网卡是由不同的制造商生产的,如何保证地址不重复呢?

幸运的是网络时代,大家常常接受一些事实上的游戏规则。MAC地址是由电器电子工程师协会(大名鼎鼎的IEEE)进行管理的。以太网硬件制造商向IEEE购买地址块,在生产的时候按照顺序进行分配。所以,没有两个硬件接口有相同的以太网地址。

注意,事实上用户现在可以改变以太网地址。

MAC地址采用48位(bits)进行编址,比如:

000D87970639

这是一个典型的MAC地址,用16进制表示,如果写成2进制,如下所示:

0000,0000,0000,1101,1000,0111,1001,0111,0000,0110,0011,1001

中间的逗号只是为了看得更清楚。

48位能够表示多少个地址呢?248,281,474,976,710,656。事实上,这个地址空间没有完全使用的,被分成了三类:单播地址(Unicast Address)、广播地址(Broadcast Address)、组播地址(Multicast Address)。组播地址也被称为多播地址。

顾名思义,单播地址表示信息是发给一台计算机,广播地址是发给所有计算机,组播地址是发给一组计算机。

如果你对网络安全感兴趣,可能马上会想到一种天然的攻击网络的方式:网络广播。利用一台计算机,连续发送广播数据,让网络上的所有计算机疲于奔命接收这些数据,不是很容易停止这些用户的网络功能吗?

这种方法被称为“广播风暴”。不过事情没这么简单,因为网络设备会对广播风暴有抑制功能。

(二)IP地址

实际上,我们平时所称的互联网地址指的是IP地址。IP地址位于MAC地址的上一层。和MAC地址一样,必须有一个机构进行地址空间的控制,以保证地址的唯一性,这个机构就是IANA,后来是ICANN。

我们最熟悉的IP地址表示方式被称为点分十进制表示法:

202.112.14.151

这种表示法也被称为点分四组表示法(Dotted quad notation),每一组是二进制数,这也就是IPv4的来源,也就是每个IP地址是32位。理论上可以表示4,294,967,296台计算机,是天文数字了。

在IP地址的标准最早制定的时候,很少有人认识到互联网会以现在的发展速度扩张从而导致地址空间不足。虽然采取了很多弥补的办法,但是地址的缺乏仍然是目前的大问题。IPv6的提出,主要就是要解决互联网的地址空间问题。

在IP地址的定义中采用了一种比较聪明的办法。

IP地址可以看作一个二元组(网络号,主机号),其英文是(netid,hostid)。也就是在一个32位的地址中包括了网络编号和主机编号两个部分,网络编号表示主机所在的网络,主机编号表示该网络内的某台主机。在同一个网络内的主机,其网络号必须相同。

最早设置的编址机制如图3-3所示。

img224

图3-3 IP地址分类示意图

IP地址分为A类、B类、C类、D类、E类。常用的是A类、B类、C类。D类、E类一般用户很少使用。D类地址主要用于组播,组播成员由IGMP协议管理。E类地址现在还未使用,保留将来使用。

A类地址的网络可以包含224台主机,B类地址的网络可以包含216台主机,C类地址可以包含28台主机。

实际上,有一些特殊地址,如图3-4所示。

img225

图3-4 特殊的IP地址示意图

在IP地址中,网络标识和主机标识都很少用全0或全1的地址。如果一个主机的网络标识部分为127,表示环回(Loopback),如最典型的也是最常用的:

127.0.0.0

该地址被用于测试TCP/IP与本机通信。当任何一个程序把该地址作为目的地址时,所发送的信息将只会在本地进行处理,而不向网络传送。这个地址经常被用来测试本机的网络功能,你可以在Windows下运行这个命令看看结果(斜体字是你应该输入的命令):

cmd           (进入命令行模式)

ping 127.0.0.0 –t    (发出PING测试网络,注意这

                 里是测试本机)

exit           (退出命令行模式)

表3-1是IP地址的范围,根据这个表可以很容易知道一个IP地址的类型。大多数A类地址和B类地址是被美国瓜分的。

表3-1 各类IP地址的范围

img226

从IP地址的最高三位,就可以区分该地址的类型。而且,从IP地址本身,可以获取该地址所属的网络。

(三)域名

虽然为了比较好记忆,采用点分十进制方式来表示32位的二进制数,但是人们还是习惯于用更直观的方式来表示计算机,这种方式就是域名。

域名是互联网上最高级的寻址方式。

在互联网中对计算机名称实现分级管理的机制称为域名系统,即DNS(Domain Name System)。

DNS实现的是一种分级的命名方法。表3-2为目前的顶级域名。

表3-2 顶级域名

img227

关于新的顶级域名的使用正在被讨论,而且未来仍然会有极大的发展空间,将会有更多的顶级域名出现。

下面这个域名表示电子科技大学的邮件服务器:

mail.uestc.edu.cn

域名的各个级别之间用点号分隔,cn表示中国,edu表示教育机构,uestc表示电子科技大学(University of Electronic Science and Technology of China),而整个域名的意义是中国的教育机构电子科技大学的邮件主机。

事实上,这种主机的名字只是一种符号,需要一种和IP地址的映射机制实现域名和IP地址的转换,进行这种转换的计算机称为名字服务器(Name Server),在实际中,也常常称为DNS服务器。

互联网的域名系统可以看做是一个倒向树的结构,树根被称为根服务器,如图3-5所示。

img228

图3-5 域名的树形结构示意图

域名的映射过程就是域名服务器根据这样的一个树形结构,从最顶级域名开始,逐级进行搜索,找到和所要映射域名对应的IP地址。

那么,用户是怎么实现这种映射的呢?

域名服务器系统是互联网上的一个非常重要的体系,事实上是一个分布式的域名服务网络。要求每个用户必须要知道一个提供域名解析服务的服务器的IP地址,而每个服务器要知道它的上一级服务器的地址。

(四)一个标准的寻址过程

我们已经明白,在互联网上,所用到的地址系统包括域名系统、IP地址、MAC地址三级。实际上,我们的通信软件可以使用这三级地址完成数据传输的要求,也就是说,我们可以实现MAC层、网络层和应用层的通信功能。当然,所实现的系统或者设备相应地被称为应用层、网络层或者数据链路层软件或者设备。这里一般在数据链路层是以硬件设备的形式实现。

假如我们现在要访问电子科技大学的网站,其域名是:

www.uestc.edu.cn

这里有个前提,在你的主机上必须指明电子科技大学的域名服务器是:

202..112.14.151或者202.112.15.161

第一步,在浏览器输入:http:\\www.uestc.edu.cn。

第二步,该主机名www.uestc.edu.cn被发送给域名服务器,进行地址解析。

第三步,域名服务器在数据库中逐级进行检索,获取该域名的IP地址,并传回给用户。

第四步,用户收到该IP地址后,使应用软件如浏览器的通信地址指向该IP地址。

第五步,主机向网络上的其他主机发送ARP请求,要求拥有该IP地址的机器给予响应,并传回物理地址。

第六步,主机把需要发送的信息向该物理地址传送。

上面所说明的步骤只是一个常规的过程,实际上,ARP转换和域名解析要复杂得多。

我们看到,互联网的寻址过程可以概括为:

第一步,进行域名到IP地址的转换,获取IP地址。

第二步,进行IP地址到物理地址的转换,获取物理地址。

第三步,向该物理地址发送数据分组。