当咱们谈网络时,咱们谈些什么(2)--DNS的工做原理

博客新址,这里更有趣web

来作个小实验吧

  • 打开你的终端或者DOS命令运行窗口,输入ping www.baidu.com看看发生了什么浏览器

  • 若是你的网络正常链接的话,应该能够看到这样的结果
    ping结果缓存

  • 把其中的111.13.100.92(你的显示的可能不同,不用担忧,放心复制)复制到浏览器,而后访问后你是否是看到了百度首页了呐。服务器

域名与IP地址

  • 咱们将www.baidu.com这样的能定位到某个网站的字符串叫作域名网络

  • 111.13.100.92这样一样的定位到某个网站(更准确的说是定位到某台主机)的字符串叫作IP地址分布式

经过上面的例子能够看出相对于IP地址,域名对于用户而言更容易记忆,更加友好。而对于路由器等网络设备却不是这样的。路由器能够根据IP地址更快的定位主机位置。而域名这种长度不定的字符串对于路由器来讲简直是没法理解的。网站

DNS的使命

  • DNS(Domain Name System),中文叫作域名系统。spa

DNS的就是为了同时保留域名和IP地址的优点的产物。人们能够经过域名简单的记住要访问的web站点,而路由器等网络设备却能够使用IP地址快速定位到相关主机。DNS要作的就是当用户输入域名后,先到DNS服务器查询IP地址,而后再经过IP地址来访问web站点。计算机网络

DNS服务器的层次结构

  • 实现DNS服务器最简单的一种方案就是在一台远程主机上配置好DNS的映射表,全部的域名转换都会经过这台主机。但是这样的方案简单却不可靠。主要的缺点有:代理

    1. 当这台主机出现故障时,整个互联网将会瘫痪。只有那些不依赖DNS服务的软件才能够正常工做

    2. 单个DNS服务器不得不处理整个互联网的全部DNS解析,这样的对带宽的要求是很高的

    3. 这种单点非分布式的方案,会形成巨大的延迟。加入这台服务器放在美利坚,当你在我大天朝访问大天朝的百度的时候,你的域名解析的报文不得不先到达地球另外一面的服务器所在地,而后返回。一次请求,报文往返路程就绕地球一圈了。而互联网的使用者的直观感觉就是:慢

    4. 映射表的维护成本更加昂贵,当你须要添加或者更新DNS记录的时候,对于这样大量的数据维护成本极高,效率极低

    因此,DNS服务器应该是分布式的。

  • DNS服务器的层次结构:

    • 根DNS服务器 :用来返回TLD服务器的IP地址

    • 顶级域(TLD)域名服务器:返回权威服务器的IP地址

    • 权威DNS服务器 :返回相应主机的IP地址

  • 还有一种本地DNS服务器,他并不属于以上的层次机构,却很重要,一般咱们电脑和路由器自动得到到的DNS服务器地址就是本地服务器。每一个ISP都有本地DNS服务器,当主机发出DNS请求时,请求被发往本地服务器,它起着代理做用,将该请求转发到DNS服务器层次中。

图解访问百度DNS解析过程

DNS服务器交互

  1. 你在浏览器输入了网址,而后浏览器经过UDP协议向本地服务器的53号端口发送了DNS解析请求(1号过程)。

  2. 若是本地DNS服务器缓存了百度的DNS记录(关于DNS缓存在下一节会详细讲),若是没有该记录就回向根服务器请求(2号路径),而后根服务器收到请求后,会返回给本地服务器相应的顶级域名DNS服务器地址。以www.baidu.com为例,就回返回解析com顶级域名的服务器(3号路径)。

  3. 而后本地服务器知道TLD DNS服务器的地址后就会向该服务器发送解析请求(4号请求),而后TLD服务器返回给本地DNS服务器百度的权威服务器的IP地址(5号路径)。

  4. 同上,本地DNS服务器向百度的权威DNS服务器发起查询请求(6号路径)。就回获得百度权威DNS服务器返回给本地服务器的百度服务器的IP地址(7号路径)。

  5. 最后,本地DNS服务器会把百度服务器的IP地址返回给你的电脑(8号路径),同时将这条记录缓存在本地DNS服务器。

  • 注意:以上这种方式称为“先递归,再轮询”的查询方式,计算机网络中还存在其余的查询方式如仅仅的”递归“,但是上面这种查询方式时最经常使用的。

DNS缓存

  • 若是每次DNS解析都要走完上一节整个的流程,那样对于网络带宽的消耗和延时对于用户和DNS解析系统都是不友好的。因此当本地DNS服务器在一次查询后缓存到本地。从而加快DNS的解析速度。实际上,你的访问的解析大多数都是在本地服务器上完成的。

DNS的额外服务

  • 之因此称这节为DNS的额外服务是指出了主机名到IP地址转换的其余的一些服务

  1. 主机别名(host aliasing):有着复杂主机名的主机能同时拥有一个或者多个别名。例如:relay1.hangzhou.enterprise.com可能有一个别名叫作enterpries.com 咱们称前者为规范主机名。主机别名更容易记忆。DNS能够根据主机别名来返回主机名的规范主机名,和主机的IP地址

  2. 邮件服务器别名(mail server aliasing):与第一项相似,只不过是针对邮件服务器提供别名服务

  3. 负载分配(load distribution):并非每一个域名对应一个IP地址,可能对应多台。这是DNS以轮流的方式来返回主机IP地址。

DNS资源记录(DNS存了什么?)

RR

DNS资源记录(resource record,RR)就是上图描述的四种类型的纪录(其实还有其余类型,这里咱们再也不说明)。其中生存时间TTL决定了该条记录在缓存中删除的时间。(单位为秒)
下面分别举个例子帮助理解

  1. (relay1.bar.foo.com, 145.37.93.126, A)

  2. (foo.com, dns.foo.com, NS)

  3. (foo.com, relay.bar.foo.com, CNAME)

  4. (foo.com, mail.bar.foo.com, MX)

下一篇更新对获取百度首页的过程当中从网络层到链路层的一个变化。

相关文章
相关标签/搜索