域名系统(DNS)
前面介绍了主机和IP地址的一些概念。我们知道,可以用4个十进制数来标识一台主机。但是,Internet上的主机数量数以万计,我们不可能记住每一台主机的IP地址。为了解决这个问题,我们需要对系统或是主机进行命名,就像我们不可能记住每一个人的身份证号码,但可以记住每一个人姓名一样,因此,便产生了Internet域名系统DNS(Domain Name System).
一、Internet主机的命名
Internet的主机命名采用分层命名机制。分层命名就是在主机命名中加入了层次的信息,即在主机的命名中,把地域信息或组织机构的信息作为主机命名的一部分。而地域或组织机构的信息一般都具有很强的层次性。
我们来看一个日常生活中描述一个人的例子:
某省 某市 某区 某长街道 张三(按地域)
或 某集团 某公司 财务处 张三(按组织机构)
Internet主机的命名也具有这样的层次性,只不过命名的层次自左向右,由小到大。例如铜陵电大的主机名为
tltvu.net.cn
tltvu为主机,net为网络组织,cn为中国。这就是按地域分配的主机命名。
其中,cn为顶级域名或叫一级域名,net为二级域名,tltvu为三级域名。整个主机的命名具有严格的层次性。
二、Internet域名系统
事实上,Internet主机的命名是一个倒置的树状结构,例如,以组织机构命名的树状结构为:
根域一般用“.”表示,根域下的顶级域名,或称一级域名,由两种基本类型组成:以机构性质命名的域和以国家地区代码命名的域。常见的以机构性质命名的域,一般由三个字符组成,如表示商业机构的“com”,表示教育机构的“edu”等。以机构性质或类别命名的域如下表:
域名 | 含义 |
com | 商业机构 |
edu | 教育机构 |
gov | 政府部门 |
mil | 军事机构 |
net | 网络组织 |
int | 国际机构(主要指北约) |
org | 其他非盈利组织 |
以国家或地区代码命名的域,一般用两个字符表示,是为世界上每个国家和一些特殊的地区设置的,如中国为“cn”、香港为“hk”、日本为“jp”、美国为“us”等。但是,美国国内很少用“us”作为顶级域名,而一般都使用以机构性质或类别命名的域名。下表介绍了一些常见的国家或地区代码命名的域:
域名 |
国家或地区 |
域名 |
国家或地区 |
ar | 阿根廷 | nl | 荷兰 |
au | 澳大利亚 | nz | 新西兰 |
at | 奥地利 | ni | 尼加拉瓜 |
br | 巴西 | no | 挪威 |
ca | 加拿大 | pk | 巴基斯坦 |
co | 哥伦比亚 | pa | 巴拿马 |
cr | 哥斯达黎加 | pe | 秘鲁 |
cu | 古巴 | ph | 菲律宾 |
dk | 丹麦 | pl | 波兰 |
eg | 埃及 | pt | 葡萄牙 |
fi | 芬兰 | pr | 波多黎各 |
fr | 法国 | ru | 俄罗斯 |
de | 德国 | sa | 沙特阿拉伯 |
gr | 希腊 | sg | 新加坡 |
gl | 格陵兰 | za | 南非 |
hk | 香港 | es | 西班牙 |
is | 冰岛 | se | 瑞典 |
in | 印度 | ch | 瑞士 |
ie | 爱尔兰 | th | 泰国 |
il | 以色列 | tr | 土耳其 |
it | 意大利 | gb | 英国 |
jm | 牙买加 | us | 美国 |
jp | 日本 | vn | 越南 |
mx | 墨西哥 | tw | 台湾 |
cn | 中国 |
Internet主机命名需遵守两个原则:
第一、确保每一台在Internet中命名的主机名字唯一;
第二、主机命名中的每一个层次都有专门的机构负责。
三、域名的查询
本质上讲,Internet上主机的命名,是主机地址的一种高层次组织形式,或者称为面向用户的主机地址。然而,在Internet中,主机之间的数据传输并不认识主机名,只能通过IP地址来确定数据分组的传输方向。在实际传输过程中,需要把Internet主机名转化成机器能够识别的IP地址的形式,这就需要Internet的域名解析。Internet中,每一个主机名称都唯一地对应一个IP地址,例如,dog.bjie.an.cn就对应为210.72.16.188。此时,主机dog.bjie.an.cn和210.72.16.188是完全等价的。这一地址解析工作就要有DNS服务器来完成。在DNS做这一工作时会按照以下三种情况来完成:
1、本地的服务知道地址,因为该地址在本地服务的地址数据库中,而本地服务器上地址数据库又是全球地址数据库的一部分。
2、本地服务器知道地址,因为某些人最近了查询过该地址。某一地址第一次被查询后,DNS就将该地址保存一段时间,以防万一有人还想查询同一地址,这叫做缓存(caching),这样能大提高系统的效率。
3、本地的服务器不知道该地址,但是它知道如何查询。
本地服务器通过软件,知道如何与根服务器联系,根服务器是知道顶级域名地址的服务器,本地服务器通过访问根服务器,查找管理顶级网域计算机地址。取得信息后,它又去访问查找出的服务器,查找下一级(二级域名)域名服务器的地址。接着又根据找出的地址,访问下一级(三级域名)域名服务器的地址,最终就能找到所要查找的主机。
四、域名系统的启示
1、根据域名,可以知道谁负责维护该网域,却可能不知道是谁在维护拥有该IP地址的计算机,甚至该计算机的位置在哪里,也不一定能确定。
2、域名没有必要告诉计算机在什么网络上被定位。域名和网络经常重复,但是在它们之间没有必要的连接。在同样的网域中可以不在同一个网络上,例如,以ux1.cso.uiuc.edu和ux.cso.uiuc.edu命名的系统可以是在不同的网络上。域名仅仅告诉我们是谁在负责分配名称。
3、一台机器可能有多个名称。提供多种服务的机器尤其如此。例如:www.tltvu.net.cn和mail.tltvu.net.cn是一台服务器。
我们经常在域名中看见一些规范名称,下表中提供了这些服务名称:
域名 | 用途 |
archie | 文件档案查询服务器 |
ftp | 匿名FTP(公共文件档案) |
gopher | Gopher服务器 |
listserv | 邮件列表管理器 |
majordomo | 邮件列表管理器 |
电子邮件服务器 | |
nntp | USENET新闻服务器 |
pop | 接收电子邮件服务器 |
smtp | 简单邮件传输服务 |
www | 万维网服务器 |
4、命名对于通信不是不必须的。当你收到出错信息“host unknown”,这类信息意味着系统不能将你所给的名字翻译成一个有效的主机地址。
5、名字比地址更有助于记忆。一台主机的服务功能可能发生改变,说明它的网络系统发生改变,但它的名字可以不发生变化。(相当于一个公司可以迁址,但该公司的业务范围可以不发生改变)。