1、基本介绍
DNS(Domain Name System)是域名系统的缩写,也叫做名称解析。在互联网中,主机直接通过IP地址来确定位置,才能进行通讯,而IP地址是32位的二进制位,就算转换成十进制,对于我们而言记忆起来也太过困难,例如60.211.209.143,但我们对域名更加敏感,因此通过DNS,就可以将数字形式的IP地址转换为www.jianshu.com,也就是所谓的网址。

在DNS出现之前,是通过hosts文件来解决这一问题的,在Windows系统下,hosts文件保存在C:\Windows\System32\drivers\etc目录下,由于记事本打开后没有排版,格式会比较乱,因此选择用写字板打开文件:

简单来说,可以在hosts文件内部定义IP地址和主机名或者说域名,以红色方框为例,接下来通过在系统的命令提示符中输入“ping 域名”来查看:

实际上,hosts文件是用来做静态IP和域名对应的,只要在hosts文件内写入域名及对应的IP地址,系统就会认定该域名和IP地址互相对应,而不会再去公网寻找真正的IP地址,若此时解析www.sina.com.cn,则可以ping到真正的新浪IP地址,如下图:

因此,可以认定hosts文件的优先级是高于DNS解析的,DNS解析之所以取代了hosts文件,是因为IP地址的可用数量42亿9千万左右个,这么多的IP地址,先不讨论是否有人会将其一一对应的整理到hosts文件内,假设说这个文件已经存在,那么文件的大小也会接近70、80GB,这么大的文件,几乎就无法进行正常的读取了。即早期hosts文件解析域名效能太低,且维护太过困难,而DNS则具备层次性及分布式的特点而备受推崇。
2、域名空间结构
域名空间结构又称作完全合格域名,完整的域名空间是由三级域加二级域加顶级域所构成,并且该完整域名应是全球唯一的,互联网中的域名是有结构有规划的,之所以目前的域名都是用“.”来进行分割,是为了便于分级管理,在进行域名和IP地址解析时更容易找到:

1.根域名:根域名用“.”表示,在所有域名之上,根域名的服务器在全球只有13台。
2.顶级域:也称作一级域,保存在根域名之内,顶级域由域名分配组织ISO决定,常见的组织一级域如下:
顶级域 | 说明
----|------|----
gov | 政府部门
com | 商业部门
edu | 教育部门
org | 民间团体组织
net | 网络服务机构
mil | 军事部门
常见的国家或地区一级域如下:
顶级域 | 说明
----|------|----
cn | 中国
hk | 中国香港
jp | 日本
uk | 英国
au | 澳大利亚
例如之前列举的“www.sina.com.cn”,最后的“.com.cn”都是一级域,只不过一个是组织一级域,一个是国家一级域,二者并不冲突。
3.二级域:二级域是由组织、企业或个人向域名分配组织申请并购买才可以使用的。
4.主机名:也称作三级域,在申请二级域名成功后,可以自行规定三级域名。
3、DNS服务的工作原理
第一种情况:曾经解析过同一网址
当本地域名服务器解析过一个域名后,会在本地域名服务器内默认保存3天,在保存期内,再次访问该网址会直接返回解析后的IP地址,而不需要再向根服务器反映,具体过程如下:

①每台客户主机都会写清楚DNS服务器地址,如果没有是不能连接互联网的;
②当客户要连接某一网站时,主机会向本地域名服务器发送域名查询请求;
③本地域名服务器查询到该域名对应的IP地址后会告知客户主机;
④此时,客户主机就可以与某网站的Web服务器通信。
第二种情况:需要解析一个新网址
①每台客户主机都会写清楚DNS服务器地址,如果没有是不能连接互联网的;
②当客户要连接某一网站时,主机会向DNS服务器发送域名查询请求;
③本地域名服务器并未储存该域名对应的IP地址,因此向根DNS服务器请求查询,而根DNS服务器只能查询在它之下的一级域名,于是将部分结果反馈至本地域名服务器;
④依据上次的结果,本地域名服务器向顶级域服务器请求查询,再次获得的部分地址;
⑤本地域名服务器再次向顶级域服务器请求查询,获得的部分地址;
⑥最后本地域名服务器向二级域服务器请求查询,最终获得全部地址;
⑦本地域名服务器将查询到的IP地址告知客户主机;
⑧此时,客户主机就可以与某网站的Web服务器通信。
DNS的查询类型
以第二种情况为例:
依据查询方式分来
递归查询——过程②、⑦
递归查询是指要么做出查询成功的响应,要么做出查询失败的响应。一般客户主机和服务器之间属于递归查询,即当客户主机向本地域名服务器发出请求后,若本地域名服务器自身不能解析,则会向另外的DNS服务器发出查询请求,在得到结果后转交给客户主机。迭代查询——过程③、④、⑤、⑥
服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP地址与域名的映射关系,也可以是其他DNS服务器的地址。
依据查询内容分类
- 正向查询:已知域名→查找IP地址(客户端一般都使用正向查询)
- 反向查询:已知IP地址→查找域名(类似邮件服务器会使用反向查询)
ps:端口号相关介绍更新在TCP/IP四层模型的第四部分“传输层”内容中。
版权声明:欢迎转载,欢迎扩散,但转载时请标明作者以及原文出处,谢谢合作! ↓↓↓