DNS解析过程

引言:DNS解析过程;更新:补充了DNS的一个搜索环节

DNS解析过程

前置概念

1、 什么是DNS?

DNS,全称为Domain Name Server,作用就是将域名解析为IP地址

DNS依赖的传输层是UDP协议,无需建立连接,十分快速。

默认端口号为53

2、域名的组成

比如:www.yesmylord.cn

  • www是三级域名,像本网站的图片域名就是img.yesmylord.cn
  • yesmylord是二级域名,在域名网站购买的多是二级域名
  • cn是顶级域名,代表中国,常见的还有com、en、us等等
  • cn后面其实还有一个.代表根域名,不需要输入

3、 域名服务器都有哪些?

  • 本地域名服务器:最先接收我们主机的DNS查询,是当地的域名服务器

    • 比如说一个大学就有一个域名服务器、一个ISP也有一个本地域名服务器
  • 根域名服务器:最高层次的域名服务器

    • 上面的例子的xxx.cn.,最后面的点就是根域名,一般不需要写
    • 根域名服务器管理所有的顶级域名
  • 顶级域名服务器:顶级域名服务器管理在该服务器注册的所有二级域名

    • .cn
    • 顶级域名服务器管理注册在此的二级域名
  • 权限域名服务器:负责管理一个区(区的范围小于等于域,是DNS服务器的管理单位)

    • 当一个权威域名服务器还不能够给出最后的额查询回答时,就会告知发出查询请求的DNS客户,下一步应当找哪一个权威域名服务器

4、DNS的递归查询与迭代查询

如图所示:

DNS的查询过程

  • 递归查询:图中的1和10

    • 主机访问本地DNS服务器并且没有查到IP时,本地服务器就会代替我们访问其他域名服务器。
    • 递归查询的特点是:本地DNS服务器代替我们查询,直到找到答案或确定答案不存在
  • 迭代查询:图中2~9

    • 本地DNS服务器向较高级别的DNS服务器(如根DNS服务器、顶级域DNS服务器、权威DNS服务器等)发起查询时,它执行的是迭代查询。
    • 迭代查询的特点是:DNS服务器之间相互协作,每个DNS服务器都只提供有限的信息,而不负责完成整个查询过程

5、DNS域名服务器只使用UDP协议吗?

在域名查询时使用UDP协议,但在区域传送(即主域名服务器向辅助域名服务器同步数据时)会使用TCP

6、访问一个HTTPs网址有几个大过程?

  1. 首先会进行DNS查询
  2. 得到IP后,才能进行TCP三次握手
  3. 握手成功后,进行TLS握手,才能建立安全通信

一个域名的解析之路

当我们输入一个网址,比如www.yesmylord.cn(我的博客),DNS都做了什么?

你在浏览器地址栏输入了www.yesmylord.cn

  1. 查询浏览器缓存(浏览器缓存会缓存最近浏览过的网页的域名与IP地址)
  2. 如果没有,查询系统缓存(即hosts文件)
  3. 如果没有,去路由器缓存查找
  4. 如果没有,去本地DNS服务器
  5. 本地DNS服务器会代替我们,向根域名服务器发送请求(这里叫递归查询:因为DNS是代替我们进行的查询,而不是我们主机发起的查询)
    1. 本地DNS服务器访问根域名服务器,根域名服务器返回顶级域名服务器IP地址(解析出顶级域名.cn的地址)
    2. 本地DNS服务器访问.cn顶级域名服务器的地址,返回其管理的权威域名服务器IP地址(解析出.yesmylord
    3. 权威域名服务器A不知道IP是什么,他告诉我们访问权威域名服务器B
    4. 权限域名服务器B返回真正的IP地址(解析出www
  6. 本地DNS服务器查到结果后,得到了www.yesmylord.cn的地址,告知我们
  7. 得到IP就可以进行TCP握手了
  8. TCP建立连接后,如果是HTTPS协议,还需要TLS握手
  9. 此后就可以进行HTTP通信了

值得注意的是,DNS查到的可能是CDN服务器的地址

CDN服务器可以缓存一个网站的静态资源达到快速响应的目的

注意:

  • 缓存的是静态资源,动态资源不能缓存

总结

查询过程:

  1. 浏览器缓存
  2. 系统hosts文件
  3. 路由器缓存
  4. 本地DNS服务器缓存
  5. 根域名服务器
  6. 顶级域名服务器
  7. 权限域名服务器(有的也叫权威域名服务器)