美文网首页计算机网络
《计算机网络——自顶向下方法》应用层——DNS

《计算机网络——自顶向下方法》应用层——DNS

作者: YAN_DAOJIANG | 来源:发表于2020-02-11 19:53 被阅读0次

DNS:因特网的目录服务

因特网上的主机和人类一样,可以使用多种方式进行标识。主机的一种标识方法是用它的主机名(如cnn.com),然而,主机名几乎没有提供主机在因特网中的位置信息,由于这些原因主机也可以使用所谓的IP地址进行标识。IP地址由4个字节组成,并且有着严格的层次结构。其中每个字节都被句点隔开,表示了0~255的十进制数字,具有层次结构是因为从左到右扫描IP地址时,我们能够得到越来越具体的关于主机位于因特网何处的信息。

DNS提供的服务

域名系统(DNS)提供了主机名到IP地址转换的目录服务。
DNS是:

  • 一个由分层的DNS服务器实现的分布式数据库;
  • 一个使得主机能够查询分布式数据库的应用层协议。
    DNS协议运行在UDP之上,使用53号端口。
    DNS通常是其他应用层协议所使用的,包括HTTP,SMTP和FTP,将用户提供的主机名解析为IP地址。下面是应用浏览器请求URL时的一个转换过程:
  • 同一台用户主机上运行着DNS应用的客户端;
  • 浏览器从上述URL中抽出主机名,并将主机名传给DNS应用的客户端;
  • DNS客户想DNS服务器发送一个包含主机名的请求;
  • DNS客户最终会受到一份回答报文,其中包含有对应于该主机名的IP地址;
  • 一旦浏览器接收到来自DNS的该IP地址,它能够向位于该IP地址80端口的HTTP服务器发起一个TCP连接。
    通过上面的这个过程我们也能够看到DNS给使用它的因特网应用带来了额外的时延。
    除了主机名到IP地址的转换外,DNS还提供了一些重要的服务:
  • 主机别名
  • 邮件服务器别名
  • 负载分配

DNS工作机理概述

如果运行在用户主机上的某些应用程序需要将主机名转换为IP地址,这些应用程序将调用DNS的客户端,并指明需要被转换的主机名(在很多基于UNIX的机器上,进行这种转换需要调用函数gethostname())。用户主机上的DNS接收到后,向网络红发送一个DNS查询报文。所有的DNS请求和回答报文使用UDP数据报经端口53发送。
为什么DNS不采用集中式数据库?主要是因为这种设计包含以下问题:

  • 单点故障
  • 局部流量过大
  • 远距离延迟
  • 维护
    因此DNS采用的分布式的设计方案:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


    image

分布式、层次数据库

大致来说,有三种类型的DNS服务器:根DNS服务器、顶级DNS服务器和权威DNS服务器。
还有另外一类重要的DNS,称为本地DNS服务器,每个ISP都有一台本地DNS服务器。当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将请求转发到DNS层次服务器中。
域名解析是通过迭代加递归的方式进行的。
[站外图片上传中...(image-f2a15e-1581422010159)]

DNS缓存

DNS缓存是DNS系统一个非常重要的特色,是为了改善实验性能并减少在因特网上到处传输DNS报文而采用的技术。

DNS记录与报文

共同实现DNS分布式数据库的所有服务器存储了资源记录(RR),RR提供了主机名到IP地址的映射。每个DNS回答报文包含了一套或者多条资源记录。
资源记录是一个包含了下列字段的4元组:
(Name, Value, Type, TTL)
TTL是该记录的生存时间,他决定了资源记录应当从缓存中删除的时间。Name和Value的值取决于Type:

  • Type = A , 则Name是主机名,Value是主机名对应的IP地址;因此,一条类型为A的资源记录提供了标准的主机名到IP地址的映射;
  • Type = NS,则Name是个域,Value是个知道如何获得该域中主机IP地址的权威DNS服务器主机名;
  • Type = CNAME,则Value是别名为Name的主机名对应的规范主机名;
  • Type = MX,Value是个别名为Name的邮件服务器的规范主机名。

相关文章

网友评论

    本文标题:《计算机网络——自顶向下方法》应用层——DNS

    本文链接:https://www.haomeiwen.com/subject/eqcffhtx.html