1.什么是DNS
DNS
是Domain Name System
的简称,即域名系统,是一个记录域名和IP
地址相互映射的系统,主要作用是为了解决域名与IP之间的相互转换。DNS
是一个网络服务,其端口为53
号端口。通常DNS
在查询时是以UDP
协议来进行查询,一旦无法查询到完整信息时,再以TCP
协议进行重新查询。因此,DNS
服务启动时会同时开启UDP
和TCP
协议的53
号端口。
DNS的基本作用:把域名转换成IP地址。
DNS工作在应用层。
2.DNS域名结构
域名具有一定的层次结构,从上到下依次为:根域名、顶级域名(top level domain,TLD)、二级域名SLD、三级域名、四级域名等。根域名后面有一个小圆点。其树型结构如下:
3.DNS的工作过程
下图描述一次完整的DNS
请求过程:
1)用户在Web
浏览器中键入http://www.baidu.com
,查询传输到Internet
中,并被DNS递归解析器
接收。
2)解析器查询DNS
根域名服务器(Root Server)
。
3)根域名服务器把存储其域信息的顶级域(top-level domain,TLD)
DNS服务器的地址返回该解析器。在搜索http://www.baidu.com
时,根域名服务器返回.com TLD
。
4)解析器向.com TLD
发出请求。
5)TLD
服务器把存储该域(http://www.baidu.com)
的域名服务器的IP
地址返回给DNS
解析器。
6)递归解析器把查询发送到存储该域(http://www.baidu.com)
的域名服务器。
7)http://www.baidu.com
的IP地址
而后从域名服务器返回解析器。
8)DNS解析器
把最初请求的域(http://www.baidu.com)
的IP地址返回给Web
浏览器。
9)浏览器向该IP地址
发出HTTP
请求。
10)位于该IP的服务器返回将在浏览器中呈现的网页。
4.DNS的查询过程
递归查询:域名服务器帮助用户进行名字解析,并返回最后的结果。【老好人】
迭代查询:域名服务器进迭代访问,反复多次,直到最后找到结果。【踢皮球】
DNS缓存的目的是将数据临时存储在某个位置,从而提高数据请求的性能和可靠性。
DNS
高速缓存将数据存储在更靠近请求客户端的位置,以便能够更早的解析DNS
查询,并且能够避免在DNS
查找链中进一步向下的额外查询,从而缩短加载时间并减少带宽/CPU的消耗。DNS
数据可缓存到各种不同的位置上,每个位置均将存储DNS
记录并保存由生存时间(TTL)
决定的一段限制。
-
浏览器缓存:浏览器在获取网站域名的实际
IP地址
后会对其进行缓存,减少网络请求的损耗。 -
操作系统缓存:操作系统的缓存是用户自己配置的
hosts
文件
所以上面提到的DNS
查询过程中,当客户端提交一个域名请求时,先查询浏览器的DNS
缓存信息,如果没有,再找操作系统的DNS
缓存信息,如果还没有,则开始从本地DNS
查起。
5. 利用wireshark进行DNS
协议抓包
下面在浏览器中输入https://www.baidu.com,进行访问,然后同时利用wireshark进行抓包,抓包后,通过显示过滤器显示DNS
协议: