1.3 关于名字

也许你更习惯于通过名字来指代一个主机,例如:host.example.com。然而,互联网协议只能处理二进制的网络地址,而不是主机名。首先应该明确的是,使用主机名而不使用地址是出于方便性的考虑,这与TCP/IP提供的基本服务是相互独立的。你也可以不使用名字来编写和使用TCP/IP应用程序。当使用名字来定位一个通信终端时,系统将做一些额外的工作把名字解析成地址。有两个原因证明这额外的步骤是值得的:第一,相对于点分形式(或IPv6中的十六进制数字串),人们更容易记住名字;第二,名字提供了一个间接层,使IP地址的变化对用户不可见。在本书英文版第一版的写作期间,网络服务器www.mkp.com的地址就改变过。由于我们通常都使用网络服务器的名字,而且地址的改变很快就被反应到映射主机名和网络地址的服务上(我们马上会对其进行更多的介绍),如www.mkp.com从之前的地址208.164.121.48对应到了现在的地址,这种变化对通过名字访问该网络服务器的程序是透明的。

名字解析服务可以从各种各样的信息源获取信息。两个主要的信息源是域名系统(Domain Name System,DNS)和本地配置数据库。DNS[1]是一种分布式数据库,它将像www.mkp.com这样的域名映射到真实的互联网地址和其他信息上。DNS协议[2]允许连接到互联网的主机通过TCP或UDP协议从DNS数据库中获取信息。本地配置数据库通常是一种与具体操作系统相关的机制,用来实现本地名称与互联网地址的映射。

[1]Mockapetris,Paul,“Domain Names-Concepts and Facilities,”Internet Request for Comments 1034,November 1987.

[2]Mockapetris,Paul,“Domain Names-Implementation and Specification,”Internet Request for Comments 1035,November 1987.