详解DNS协议

DNS协议

TCP/IP中使用IP地址和端口号来确定网络上某一台主机上的某一个程序,但是IP地址是点分十进制,不方便记忆。因此,就出现了域名,如:www.baidu.com。

域名和IP的对应关系保存在一个叫hosts文件中。
最初,通过互联网信息中心来管理这个文件,如果有一个新的计算机想接入网络,或者某个计算IP变更都需要到信息中心申请变更hosts文件,其他计算机也需要定期更新,才能上网。但是这样太麻烦了,就出现了DNS系统。

DNS系统

一个组织的系统管理机构,维护系统内的每个主机IP和主机名的对应关系。如果计算机接入网络,将这个信息注册到数据库中,用户输入域名时,会自动查询DNS服务器,由DNS服务器检索数据库,得道对应的IP地址
在域名解析的过程中,优先查找hosts文件的内容。
这里写图片描述

实际上,人们将主机名叫做域名,其原因是Internet使用的命名系统定义了很多域,主机要按照它所属的域命名,因此就叫做域名。域名是按照一定的规则,用自然语言表示的名字,它与确定的IP地址相对应。域名是面向用户的,IP是面向主机的。

DNS的作用

将主机域名转化为IP地址,使得用户能够方便的访问各种Internet资源与服务,DNS是Internet各种应用层协议实现的基础。

DNS的本质

提出一种分层次、基于域的命名方案,并且通过一个分布式数据库系统,以及维护与查询机制来实现域名服务功能。

DNS三个组成部分

* 域名空间

* 域名服务器
* 域名解析程序

DNS域名空间

这里写图片描述

域名空间的特点:

1.顶级域TLD有两种,通用域、国家或地区域。常用的通用域:.com(商业)、.edu(教育性机构)、.gov(政府)、.net(网络服务供应商)、.org(非营利性机构)、.int(国际性组织)、.mil(军事组织)。

2.每个域自己控制如何分配它下面的域
当一个组织拥有一个域的管理权后,它可以决定是否需要进一步划分层次。Internet主机域名的排列原则是低层的子域名在前,所属的高层域名在后。

Internet主机域名的一般格式为:

这里写图片描述
例子:cs.nankai.sed.cn表示的是南开大学计算机系的主机。
这里写图片描述
3.为了创建一个新的域,创建者必须得到该新域的上级域管理员的许可

域名服务器

域名是分层结构,域名服务器也是分层结构。

* 每个层的域名上都有自己的域名服务器,最顶层的是根域名服务器。
* 每一级域名服务器都知道下一级域名服务器的IP地址
* 为了容灾,每一级至少设置两个或以上的域名服务器。

容灾

容灾系统是指在相隔较远的异地,建立两套或多套功能相同的IT系统,互相之间可以进行健康状态监视和功能切换,当一处系统因意外(如火灾、地震等)停止工作时,整个应用系统可以切换到另一处,使得该系统功能可以继续正常工作。

全球共有13台根服务器,这13台根域名服务器中文名字分别为“A”至“M”,其中10台设置在美国,另外三台分别设置在英国、瑞典、日本。

1个位主根服务器,防置在美国,其余12个均为辅根服务器。所有根服务器均由美国政府授权的互联网域名与号码分配机构CANN统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理。

域名解析过程

如果用户希望通过FTP客户进程来访问一台远程主机上的FTP服务器,该FTP服务器的域名为xxx.com,这里将处理的流程描述出来。
1.用户将xxx.com传递给其主机上的FTP客户进程;

2.FTP客户进程将xxx.com传递给DNS客户进程;

3.每一台主机在加载在内核后都能获得其DNS服务器的IP地址,DNS客户进程便通过IP地址向DNS服务器发送DNS查询报文,要求服务器xxx.com对应的IP地址;

4.DNS服务器进程在收到DNS查询报文后,通过一系列的查询操作(递归查询或迭代查询)获得xxx.com对应的IP地址,将xxx.com的IP地址写入DNS响应报文中发送给DNS客户进程;

5.DNS客户进程将获得xxx.com的IP交付给FTP客户进程;

6.FTP客户进程在收到FTP服务器的IP地址后,就可以访问FTP服务器了。

补充:

* 输入域名后,先查找自己主机对应的域名服务器。

* 域名服务器先查找自己的数据库中的数据,如果没有,就向上级域名服务器进行查找,依次类推。

* 最多回溯到根域名服务器,肯定可以找到这个域名的IP地址。

* 域名服务器自身也会进行一些缓存,把曾经访问过的域名和对应的IP地址缓存起来,可以加速查找过程。

注意:客户进程在与服务器发送数据报之前,必须知道服务进程所在服务器端的IP地址,因为网络进程间通信是通过socket进行的。

DNS查询的两种方式

1.递归查询

这里写图片描述

2.迭代查询

这里写图片描述
通常情况下,主机向本地域名服务器的查询一般都是采用递归查询,本地域名服务器向根域名服务器的查询通常采用迭代查询。

递归查询就是一件事交给别人来做,如果事情没有办完,哪怕已经办的差不多了,都不要将结果告诉给我;迭代查询是交给别人一件事情,能做多上就告诉我做了多少,剩下的我来做完。

猜你喜欢

转载自blog.csdn.net/zwe7616175/article/details/80473982