DNS的功能

我们上网都是输入www.baidu.com这样的网址而不是180.101.49.11这样,首先肯定是因为我们方便记忆但是网络中肯定还是通过IP来寻找的,这之间的转化就是DNS来实现的。DNS协议运行在UDP上,使用53端口。它是一个分层的分布式数据库。它经常被其他协议使用就像http等,在浏览器想浏览一个www.baidu.com这样的网址时,会经历下面几个步骤。

  1. 浏览器将URL中的主机名发送给同一个本地主机上的DNS客户端
  2. DNS客户端向服务器发送一个包含主机名请求
  3. DNS服务器返回一个IP地址
  4. 浏览器得到IP地址之后通过http来建立TCP链接

    DNS的实现

    数据库

    分布式分层数据库

    DNS的数据库是分层分布式的,也就是DNS分为根服务器,顶级域服务器和权威服务器。它在全世界各地都部署了许多服务器,没有一个DNS是拥有互联网全部的IP的。下面先简单看下它的运行流程,当我们请求www.baidu.com的时候首先就会向 根DNS服务器 请求,找到 顶级域服务器 的IP,这里就会返回com顶级域的服务器IP,然后我们向 顶级域服务器 请求baidu.com的 权威服务器 的IP,然后我们向 权威服务器 请求就能拿到 主机 的IP。这就能体现分层的意思了。

    本地数据库

    在DNS系统里面还有一种很重要的DNS服务器,他就是 本地DNS服务器 ,每一个ISP(运营商)都会有一个本地服务器。当主机和ISP相连时会获得一个IP,这个IP的主机会有一台或者多台本地DNS服务器的IP地址。当我们的主机发送DNS请求的时候会被发送到本地DNS服务器,本地服务器再发送到其他服务器,本地服务器起到了代理的作用。下面找了张图能很好的说明这个过程。
    image.png

这样的优点就是缓存,当请求一个地址的时候本地服务器会记录下地址对应的DNS服务器,就像我们访问过com服务器之后下次访问www.google.com时并不需要再向根服务器去请求com服务器的IP了我们已经缓存了下来。但是同样这也就带来了不安全性。如果本地DNS服务器被劫持,那么我们的请求就会访问到其他的IP中,现在有HTTPDNS来处理这种问题,使用HTTP来代替从主机到本地DNS服务器这一步,通过想阿里,腾讯等公司等服务器来直接使用DNS访问。而且HTTPDNS会加快寻找DNS的时间。