如前所述,TCP/IP 网络中的寻址,至少对于 IP 版本 4 来说,是围绕 32 位数字进行的。然而,您很难记住超过几个这样的数字。因此,主机通常以“普通”名称为人所知,例如 gauss 或 strange。应用程序的职责是找到与此名称对应的 IP 地址。这个过程称为 主机名解析。
当应用程序需要查找给定主机的 IP 地址时,它依赖于库函数gethostbyname(3)和gethostbyaddr(3). 传统上,这些和许多相关的过程被分组在一个单独的库中,称为 resolverlibrary;在 Linux 上,这些函数是标准库的一部分libc. 通俗地说,这组函数因此被称为“解析器”。解析器名称配置在 第 6 章 中详细介绍。
在像以太网这样的小型网络,甚至是以太网集群中,维护将主机名映射到地址的表并不困难。此信息通常保存在名为/etc/hosts. 当添加或删除主机,或重新分配地址时,您只需更新hosts所有主机上的文件。显然,对于包含多于少数几台机器的网络来说,这将变得繁琐。
解决此问题的一种方案是 网络信息系统 (NIS),由 Sun Microsystems 开发,俗称 YP 或黄页。NIS 存储了hosts文件(和其他信息)在主机的数据库中,客户端可以根据需要从中检索。尽管如此,这种方法仅适用于中等规模的网络,如 LAN,因为它涉及维护整个hosts数据库集中式地并将其分发到所有服务器。NIS 的安装和配置在 第 13 章 中详细讨论。
在互联网上,地址信息最初也存储在一个单独的HOSTS.TXT数据库中。该文件由 网络信息中心 (NIC) 维护,并且必须由所有参与站点下载和安装。当网络发展壮大时,这种方案出现了一些问题。除了安装所涉及的管理开销HOSTS.TXT定期更新之外,分发它的服务器上的负载也变得太高。更严重的是,所有名称都必须在 NIC 注册,这确保了不会重复发布名称。
这就是为什么在 1994 年采用了一种新的名称解析方案:域名系统。DNS 由 Paul Mockapetris 设计,同时解决了这两个问题。我们将在 第 6 章 中详细讨论域名系统。