1.定义
DNS(Domain Names System),域名系统,是互联网的一项服务,是进行域名和与之对应的IP地址进行转换的服务器。
简单来讲,可以将DNS比喻成一个翻译官,负责将域名翻译成IP地址。
- IP地址:一长串能够唯一标记网络上的计算机的数字。
- 域名:由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识。
DNS协议运行在UDP上,使用53号端口
2. 结构
域名是一个具有层次的结构。从上到下依次为:
- 根DNS服务器(.)
- 顶级域DNS服务器(.com)
- 权威DNS服务器(server.com)
3. 应用层协议使用DNS的过程
- 同一台用户主机上运行着DNS应用的客户端
- 浏览器从URL中抽取主机名,将此主机名传送到DNS应用的客户端
- DNS客户端向DNS服务器发送一个包含主机名的请求
- DNS客户端接收到一个回答报文,回答报文中包含主机名对应的IP地址
- 浏览器接收到IP地址后,向位于此IP地址80端口的HTTP服务器进程发起一个TCP连接
4. DNS查询方式
4.1 递归查询
如果A请求B,那么B一定要给A想要的答案。
4.2 迭代查询
如果A请求B,如果B没有所需要的准确内容,那么B就会告诉A如何去获取这个内容,但是自己并不去向其他人发出请求。
5. DNS缓存
在一个请求链中,当某DNS服务器接收一个DNS回答(例如,包含某主机名到IP地址的映射)时,它能将映射缓存在本地存储器中。
例如,每当本地DNS服务器dns.nyu.edu从某个DNS服务器接收到一个回答,它能够缓存包含在该回答中的任何信息。如果在DNS服务器中缓存了一台主机名/IP地址对,另一个对相同主机名的查询到达该DNS服务器时,该DNS服务器就能够提供所要求的P地址,即使它不是该主机名的权威服务器。由于主机和主机名与IP地址间的映射并不是永久的,DNS服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。
6. DNS记录与报文
DNS记录也称为资源记录(Resource Record)。其格式为一个四元组(name,value,type,TTL),其中TTL为该记录存在时间,Name和value的值取决于Type。
DNS协议为查询和回复,两种格式相同。报文格式如下:
7. 域名解析过程
-
首先搜索浏览器的DNS缓存,缓存中维护一张域名与IP地址的对应表
-
若没有命中,则继续搜索操作系统的DNS缓存
-
若仍没有命中,那么操作系统将域名发送至本地域名服务器,本地域名服务器采用递归查询自己的DNS缓存,查找成功则返回结果
-
若本地域名服务器的DNS缓存没有命中,则本地域名服务器向上级域名服务器进行迭代查询
- 首先本地域名服务器向根域名服务器发起请求,根域名服务器返回顶级域名服务器的地址给本地服务器
- 本地域名服务器拿到这个顶级域名服务器的地址后,就向其发起请求,获取权限域名服务器的地址
- 本地域名服务器根据权限域名服务器的地址向其发起请求,最终得到该域名对应的IP地址
-
本地域名服务器将得到的IP地址返回给操作系统,同时自己将IP地址缓存起来
-
操作系统将IP地址返回给浏览器,同时自己也将IP地址缓存起来
-
至此,浏览器就得到了域名对应的IP地址,并将IP地址缓存起来