DNS:因特网的目录服务

DNS(域名系统)是一个分布式数据库,实现主机名到IP地址的转换,提供便捷的人类记忆方式和路由器处理的IP地址。它包括递归与迭代查询过程,层次结构包括根DNS、顶级域服务器和权威DNS服务器。DNS还负责主机别名、邮件服务器别名和负载分配。DNS记录包含Name、Value、Type和TTL字段,报文包括查询和回答,且DNS服务器有缓存功能以提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4. DNS:因特网的目录服务

  • 人类在日常生活中往往会用一些方式来标识。例如:我们能够通过一个人的身份证号码来标识这个人。另一方面:我们在生活中更乐于用姓名来记住对方,而不是身份证号码。
  • 类比到因特网上的主机一样,可以使用多种方式进行标识。主机的一种标识方式是用它的主机名,如:www.baidu.com、www.google.com 等。但是这样却给路由器带来了难以处理的麻烦。正是由于这些原因,主机也可以使用IP地址来进行标识。
  • IP地址:一个IP地址由4个字节组成,例如:121.7.106.83。每个字节都被句点分隔开来,表示了0~255的十进制数字。IP地址具有层次结构,当我们从左到右扫描它时,会得到越来越具体的关于主机位于因特网何处的信息。正如我们查看邮政地址一样。

4.1 DNS提供的服务

人们喜欢便于记忆的主机名标识方式,而路由器喜欢定长的、有着层次结构的IP地址。所以我们需要一种能进行主机名到IP地址转换的目录服务。这就是域名系统(DNS Domain Name System)
那么它是什么呢?

  • 1.一个由分层的DNS服务器实现的分布式数据库
  • 2.其本身也是一个应用层协议(运行在UDP之上,使用53号端口

另外DNS还提供其他一些重要的服务:主机别名、邮件服务器别名、负载分配。

4.2 DNS工作机理概述

主机名到IP地址转换服务概述

    1. 运行在用户主机上的某些应用程序调用DNS的客户端,并指明需要被转换的主机名
    1. 用户主机上的DNS接受到后,向网络中发送一个DNS查询报文
    1. 用户主机上的DNS接受到一个提供所希望映射的DNS回答报文
    1. 最后映射结果被传递到调用DNS的应用程序。
分布式、层次数据库

为了处理扩展性的问题,DNS使用了大量的DNS服务器,它们以层次方式组织并且分布在全世界范围内。
大致来说,由3类DNS服务器:根DNS服务器、顶级域(Top—level Domain,TLD)服务器、权威DNS服务器。其层次结构如下图所示:
在这里插入图片描述

除了上述三种DNS服务器之外还有一类重要的DNS服务器被称为本地DNS服务器,严格来讲它并不属于该服务器的层次结构。

  • 主机的本地DNS服务器通常“邻近”本主机。
  • 它起着代理的作用,并将该请求转发到DNS服务器层次结构中。
    下面我们将举例来论证:
    假设主机cse.nyu.edu想知道主机gaia.cs.umass.edu的IP地址,同时 cse.nyu.edu 主机的本地DNS服务器为 dns.nyu.edu 如图所示:
    在这里插入图片描述

在实践中查询通常遵循上图中的模式:从请求主机到本地DNS服务器是递归查询,其余的为迭代查询

DNS缓存

假定主机apricot.nyu.edu向dns.nyu.edu查询cnn.com的IP地址。此后,几小时后,纽约大学的另外一台主机kiwi.nyu.edu也向dns.nyu.edu查询相同的主机名。因为有了缓存(通常设置为两天),该本地DNS服务器可以立即返回cnn.com的IP地址,而不必查询任何其他DNS服务器。

4.3 DNS记录和报文

资源记录是一个包含了下列字段的4元组:
(Name,Value,Type,TTL)

TTL是该记录的生存时间,它决定了资源记录应当从缓存中删除的时间。Name和Value的值取决于Type

  • Type=A,则Name是主机名,Value是该主机名对应的IP地址。例如:(relayq.bar.fo.com,145.37.93.126,A)
  • Type=NS,则Name是个域(例如foo.com),而Value是个知道如何获取该域中主机IP地址的权威DNS服务器的主机名。
  • Type=CNAME,则Value是别名为Name的主机对应的规范主机名
  • Type=MX,则Value是个别名为Name的邮件服务器的规范主机名。(例如:foo.com,mail.bar.foo.com,MX)
DNS报文

DNS只有两种报文:查询和回答报文
如图:DNS报文中各字段的语义如下:
在这里插入图片描述

  • 前12字节是首部区域,其中有几个字段。
    第一个字段(标识符)是一个16比特的数,用于标识该查询。
  • 问题区域包含着正在进行的查询信息。该区域包含:1.名字字段:包含正在被查询的主机名字;2.类型字段:指出有关该名字的正被询问的问题类型(A、MX)
  • 回答区域:包含了对最初请求的名字的资源记录。Type、Value、TTL
  • 权威区域:包含了其他权威服务器的记录。
  • 附加区域包含了其他有帮助的记录。
在DNS数据库中插入记录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值