DNS域名系统

一.DNS概述

       域名系统的功能只有一个便是进行域名与IP地址之间的转换。如果我们从DNS产生的历史来说起应该会更便于我们理解DNS系统及所谓的域名。在ARPANET时期,由于网络上主机较少,也为了便于人们记忆,因此为每个主机进行理命名,并将主机名与IP地址的映射写在了一张表中。随着网络的不断扩充,更多机构(如大学,政府部门)的加入,显然使用文件来一一映射是不明智的。因此根据机构组织划分出了一个个的域,每个域中可以划分出更小的域,当具体到某台主机时便不可再划分。而在如何将这些域组织起来的问题上,采用了一种树状层次结构。最上面的一层是根,下一层为顶级域名,二级级域名...。域名树的树叶就是单台计算机的名字,不能继续向下进行子域的划分。比如:域名www.81.cn,cn为顶级域名,也是国家域名,代表中国(一个“组织,机构”,此生无悔入华夏),接着81便是cn之下的二级域名(代表军队(也是一种“组织”)),而www便是便是具体到某台提供万维网服务的主机了。虽然很多机构的主机都取名为www,但整体域名在因特网的所有域名中必须是唯一的。通过上面这个例子也可以发现,域名树中的读法是自底向上的。下面使用一张图来做进一步说明: 

【注】:因特网的域名空间是按照机构的组织来划分的,与物理网络无关,与IP地址中的“子网”也无关

二.域名到IP地址的转换

     当我们在浏览器中输入了某个域名时,浏览器会调用一个地址解释器去访问本地DNS(即主机在网络配置中设置的DNS服务器),在UNIX下是通过库函数gethostbyname和gethostbyaddr来访问的(现在推荐使用getaddrinfo函数)。当本地域名服务器无法查找到相关信息,则会根据DNS请求报文中的相关标志决定是采用递归查询(一般用于主机向本地服务器查询)还是迭代查询(一般用于本地服务器向根服务器的查询)。

1.递归查询

     当主机所询问的本地服务器不知道被查询域名的IP地址时,那么本地DNS服务器就以DNS客户的身份,向其它根域名服务器发出询问报文,而不是让主机自己去询问。但这一般只用于主机向本地服务器查询。

2.迭代查询

     迭代查询即当被某个DNS询问的DNS服务器,要么给出所要查询的IP地址,要么告诉询问者你下一步应该向哪个DNS服务器进行询问。

比如,希望从学校某个学校内的主机去访问域名为www.81.cn的万维网服务器,那么该校内主机先回询问本地DNS,若其没有查询到,则本地DNS服务器会向根服务器进行查询,根服务器认识顶级域名cn(根服务器知道所有顶级域中的授权名字的服务器的地址与对应的名字),通知本地服务器应该去向顶级域名服务器cn询问(告知其cn的IP地址)。之后在顶级域名cn收到询问报文后,要么告知其目的IP,要么告知其询问二级域名服务器81,之后81会将万维网服务器服务器的IP地址通过回答报文(一般为UDP,但当返回字节长度大于512时会选用TCP,因为UDP数据报应尽量小于512字节,否则应该分多个报文进行发送)告知本地服务器,本地服务器再告知校内主机。

三.IP地址到域名的转换

     该查询也被称为指针查询,即给定一个IP地址,返回与该地址对应的域名。当一个组织链入网络,并获得DNS域名空间的授权,那么便会将该组织申请的IP地址空间链入该域。这一块的作用自己不太明朗,暂不做具体说明,可以参TCP v1 p150。

猜你喜欢

转载自blog.csdn.net/qq_34228327/article/details/84368721