DNS解析

2019-11-08  本文已影响0人  MikeShine

写在前面

今天我们来看一下计网中关于DNS解析相关部分的知识。


1. 简介

DNS(Domain Name System)是域名系统,直观理解就是“翻译官”。就是把我们输入地址栏的 "www.baidu.com" 翻译成为 IP 地址,从而进行 TCP/IP 协议的使用。


2. DNS服务器分类

从上到下,一般有这么几种DNS服务器:

2.1. 根DNS服务器

最高层次的域名服务器,也是最重要的域名服务器。全球共有 13 个。大陆没有。
不管是哪一个本地DNS服务器,对一个域名进行解析的时候,如果自己无法解析,就要首先求助于根DNS服务器。(所以之前张洪涛说过,如果这个瘫痪了,那就真的没了。)
在收到本地DNS服务器的请求之后,根域名服务器并不直接将域名转换成IP,而是告诉本地域名服务器,下一步应该找哪一个顶级域名服务器去解析。

就是说,根DNS服务器不直接进行解析,而是把锅甩给下面的顶级DNS服务器。

2.2. 顶级DNS服务器

负责管理在该顶级DNS服务器注册的所有二级域名。
这个收到DNS查询请求时,会给出相应的回答(可能是IP解析的结果,也可能是下一步应该找的DNS服务器的地址---如果他也不知道的话)。

2.3. 权威DNS服务器

一个服务器负责一定范围,这里的权威DNS服务器就是 负责一定区域的 域名服务器
如果还不能给出最后的查询回答,就会告诉DNS查询客户,下一步应该找哪一个权威域名服务器。

2.4. 本地DNS服务器

一个主机发出DNS查询请求时,查询请求报文就发送给本地域名服务器(也叫“默认域名服务器”)。


递归查询 和 迭代查询:

1. 主机向本地服务器的查询一般都是采用递归查询。

递归查询是一定要给出准确结果的。因为主机是一定要获得准确结果的。

2. 本地DNS服务器向根DNS服务器查询采用迭代查询。

迭代查询不用给出准确结果。


3. DNS解析过程

解析过程图示

如图,假设域名为 y.xyz.com 的主机想要知道另外一个主机 (域名为 y.abc.com) 的IP地址,解析过程如下:

  1. 主机 m.xyz.com 首先向本地域名服务器 dns.xyz.com 进行递归查询
  2. 本地域名服务器采用迭代查询,先向一个 根域名服务器查询
  3. 根域名服务器告诉本地DNS服务器,下一次应该查询的顶级DNS服务器 dns.com 的ip地址
  4. 本地DNS服务器向顶级DNS服务器 dns.com 进行查询
  5. 顶级DNS服务器dns.com告诉本地DNS服务器,下一次查询的权限DNS服务器 dns.abc.com 的 IP 地址
  6. 本地DNS服务器向权限DNS服务器 dns.abc.com 进行查询
  7. 权限DNS服务器 dns.abc.com 告诉本地域名服务器,其所查询主机的 ip 地址
  8. 本地DNS服务器把查询结果告诉主机。

总结一下,就是
主机-->本地DNS 递归查询。
本地DNS-->根DNS,根给出一个顶级DNS,
本地DNS-->顶级DNS,顶级DNS给出权威DNS,
本地DNS-->权威DNS,权威DNS给出查询结果,
本地DNS--> 主机

再简单来说,现在要查询 www.baidu.com
本地DNS服务器 向 根 DNS服务器查询 .com 的地址,根DNS服务器返回一个顶级DNS服务器地址
本地DNS向 顶级 DNS 查询 baidu.com 地址,顶级DNS返回一个 权威DNS服务器地址
本地DNS 向 权威DNS查询 www.baidu.com 地址,返回正确 IP 地址。

4. DNS缓存

NDS服务器收到应答之后,现在自己这里存一份,再返回。
其实就是一个空间换时间的事情。

这里其实真正查询的时候,首先是 浏览器缓存, 然后是 路由器缓存, 再是 DNS缓存.

5. DNS劫持

通过篡改DNS服务器上的数据,从而返回给用户已一个 fake 的ip,比如说 你访问 baidu,却访问到了一个赌博网站。

6. DNS污染

用户访问一些特定网址,国内服务器(非DNS服务器)监控到用户在访问这些网站,就伪装成 DNS 服务器向用户返回错误地址。现在被 墙的 Youtube 什么的就是这么做的。

上一篇下一篇

猜你喜欢

热点阅读