前言:
我们在在浏览器中输入一个 URL,请求一个域名或者 IP 地址,就可以返回一个页面和一些数据,那你知道这其中经经历了什么吗?本篇我们来分享一下 DNS 相关的知识。
计算机网络往期文章
什么是 UDP 协议?UDP 协议和 TCP 协议的区别是什么?
IPv4 地址、IPv6 地址、Mac 地址、端口号各自是什么?
DNS
DNS 的全称是 Domain Name System,翻译过来是域名解析系统,是一个将 IP 和域名进行映射的分布式数据库,目的为了帮助人们更方便、快捷的访问互联网,DNS 最主要的作用就是根据域名去寻找 IP 地址。
DNS 构成
DNS 自身是一个分布式结构,DNS 的存储结构大致如下:
- 根 DNS 服务器:最顶级的存储的是顶级域名的目录,称之根 DNS 服务器。
- 顶级域 DNS 服务器:第二级存储的是二级域名的目录,称之顶级域 DNS 服务器。
- 权威 DNS 服务器:叶子节点存储的是具体的 DNS 记录,称之权威 DNS 服务器。
据 2016 年的统计数据,全世界目前有 13 台 IPv4 根服务器,根 DNS 服务器存储的不是域名和 IP 的映射关系,而是一个目录。
需要知道的是这13台根服务器中,有10台位于美国本土,其余3台分布在英国、瑞典和日本,而中国境内一台都没有,这和中国的互联网起步较晚有一定的关系,不过中国已经建立了自己的域名系统(CNNIC),并且拥有自己的顶级域名(.cn、.中国等),可以在国内进行域名解析,而不需要通过外部根服务器,在一定程度上避免了根 DNS 服务器的关闭对中国的影响。
DNS 解析的过程
当用户在浏览器输入一个地址后,就会触发 DNS 解析,整个解析过程中除了上面的三个层级,还会增加本地 DNS 服务器层级,DNS 域名解析过程的简图如下:
结合简图我们具体分析一下 DNS 域名解析过程:
- 用户在 web 浏览器输入想要访问的域名地址。
- web 浏览器根据域名查询本地 DNS 服务器,如果在本地 DNS 服务器找到了目标 IP 地址,就会直接到步骤返回域名对应的 IP 地址。
- 本地 DNS 服务器没有找到域名对应的 IP 地址,继续到 DNS 根服务器查询域名。
- DNS 根服务器返回顶级域名服务器地址。
- 继续根据域名去返回的 DNS 顶级域名服务器查询权威 DNS 服务器地址。
- DNS 域名解析器返回 权威 DNS 服务器地址。
- 根据域名和权威 DNS 服务器地址查询对应的 IP 地址。
- 根据权威 DNS 服务器返回的 IP 地址,缓存到本地 DNS 服务器。
- 本地 DNS 服务器将域名对应的 IP 地址返回给 web 浏览器。
- web 浏览器请求对应的网站,返回对应的网页。
什么是 DNS 污染?
DNS 是指刻意制造一些域名服务器数据包,把域名指向不正确的服务器 IP 的行为,因为 DNS 的查询一般来说是没有任何认证机制的,而且 DNS 的查询是基于 UDP 协议,因此 DNS 的查询很容易被篡改,通过 UDP 的 53 端口上的 DNS 查询进行入侵检测,一旦发现与关键字相匹配的域名的时候,就伪装成域名解析器,给 DNS 查询者返回虚假结果,通俗易懂的说就是把自己伪装成 DNS 服务器,在匹配搭配用户访问某些网站时候,直接返回自己想要给用户看的 IP 地址。
什么是 DNS 劫持?
DNS 劫持又叫做域名劫持,是指在网络请求中拦截域名解析请求,根据匹配到的域名请求放行,对于之外的域名直接返回假的 IP 地址或者直接不响应,结果就是用户无法访问或者访问到一个假的地址,其结果和 DNS 污染差不多,都是返回错误的 IP 地址给到用户。
如有不正确的地方欢迎各位指出纠正。