什么是DNS?

crystal_19790103 2007-07-07 05:53:37
一、什么是DNS?
DNS的中文意思是:域名服务。域名服务是提供[主机名]到[IP地址]转换的一段计算机程序。

二、为什么用DNS?
人的大脑记住一组资源的名字比较容易,而记住这组资源的地址很难,但实际上我们又必须使用地址来访问资源,所以必须有一个系统来提供名字到地址的翻译服

务。

下面的例子,当您要访问昆明湖、玉兰堂等景观,您首先会想到两个景点都属于 颐和园,而不会想到 颐和园的经纬度,而事实上我们是通过经纬度来访问一组资

源的。当您来到一个陌生的城市,向离您最进的片警A问路的时候,片警A就提供了DNS:
1、您问道:“您能告诉我颐和园怎么走么?”。
2、片警A说:“我不知道,但我知道颐和园隶属于四环,负责四环的是片警B,片警B的经纬度是117.2/30.2”。
3、您到了北四还,根据经纬度到片警B问:“您能告诉我颐和园怎么走么?”。
4、片警B说:“我不知道,但我知道颐和园属于海殿区,负责海淀的是片警C,片警C的经纬度是117.3/30.3”。
5、您到了海殿区,根据经纬度找到片警C问:“您能告诉我颐和园怎么走么?”
6、片警C说:“颐和园在经度117.03333、纬度30.51666”
7、知道了颐和园的坐标,您就可以到颐和园参观了。

注意:以上过程,在DNS查询中有个专业术语,叫做跌代查询。也许您还听说过递归查询
1、就是当您向片警A问路的时候,您希望片警A给您一个确切的回答:“您可以告诉我颐和园怎么走么?我这是递归查询,也就是说,您不要再让我跑腿问别人了

,您帮我问。”
2、交警A如果也发出的是递归查询问交警B:“您可以告诉我颐和园怎么走么?我这是递归查询,也就是说,您不要再让我跑腿问别人了,您帮我问。”
3、交警B如果也发出的是递归查询问交警C:“您可以告诉我颐和园怎么走么?我这是递归查询,也就是说,您不要再让我跑腿问别人了,您帮我问。”
4、交警C对交警B说:“颐和园就在经度117.03333、纬度30.51666”
5、交警B对交警A说:“颐和园就在经度117.03333、纬度30.51666”
6、交警A对您说:“颐和园就在经度117.03333、纬度30.51666”

我可以冒充片警C吗?除非您把片警C

kill掉,否则即使您穿着片警C的衣服,打扮的和片警C一模一样,也不会有人找您问路。因为片警C始终都在经纬度是117.3/30.3的地方蹲点,问路的人只会根据

片警B找经纬度是117.3/30.3的片警C。冒充片警B呢?一个道理,问路的人只会根据片警A找到经纬度是117.2/30.2的片警B。那冒充片警A呢?您要自问一下,片警

A的经纬度是谁告诉您的,告诉您的人可信不可信。一般我们通过ADSL拨号上网的家庭用户,电信接入端给我们提供片警A既DNS服务器的经纬度既IP地址都是真实

的。


也许您感觉很烦琐,为什么不成立一个问路系统,比如114查号,114系统问路系统存储了世界上所有名字到经纬度的对应关系。如果114系统由于查询量过大

而瘫痪呢?或者中毒而无法提供服务呢?等等,对会延误世界人民查询名字到地址的对应关系。您可能会说,那在世界上建立1000个问路系统,比如电话号从1000

到1999都提供名字到经纬度翻译服务,这样当一个号码打不通,客户可以打另一个。但您应该想到,这样的系统维护起来太麻烦了,比如您自立门户了,买了处房

子,房子的经纬度是122.2/122.3,名字叫‘上海、汤臣、56弄、crysta家’,那世界上所有1000个问路系统都要添加这样的对应关系。同样的问题,如果crystal

把房子卖给了csdn,那房子名就叫‘上海、汤臣、56弄、csdn家’,世界上所有1000个问路系统同样要更新。为了解决这个问题,就采用了最处片警的例子,每个

片警只负责他自己的一片区域。


具体看一个名字到地址的解析过程(上面的例子仅是为了引发您的思维,而不能与实际的DNS查询过程一一对应,不要生搬硬套)
当您在浏览器中输入(www.csdn.net.),我们的电脑是如何得到IP地址的:
1、浏览器发现是一个名字,于是调用我们机器内部的DNS Client软件,这个软件会把我们的请求发送到网卡Tcp/IP设置中的默认DNS服务器IP地址(上海电信提供

DNS的服务器有3台,其中一台IP是202.96.209.5)
:“您可以告诉我www.csdn.net.的IP地址吗?我这是一个递归查询”
2、202.96.209.5的DNS服务器会检查自己的DNS缓存,如果缓存里有,就直接返回给客户,如果没有,202.96.209.5就会向自己系统内部配置中负责.域的DNS服务

器的IP地址(负责.域的那台DNS服务器位于美国,共13台,系统会随机选一台,这里比如是61.1.1.1)发出请求:“您能告诉我www.csdn.net.的IP地址吗?我这是

一个跌代查询”
3、.域DNS服务器61.1.1.1中包含负责net.域解析的IP地址,把查询结果返回给202.96.209.5:“负责net.域的DNS服务器地址是54.4.4.4”
4、202.96.209.5收到上面的查询结果后,于是询问负责net.域的DNS服务器54.4.4.4 :“您能告诉我负责www.csdn.net.的IP地址吗?我这是一个跌代查询。”
5、负责net.域的DNS服务器54.4.4.4把查询后的结果返回给202.96.209.5:“负责csdn.net.域的dns服务器的ip地址是 211.152.17.58”
6、202.96.209.5收到上面的查询结果够,于是询问负责csdn.net.域的DNS服务器211.152.17.58:“您能告诉我www.csdn.net.所对应的IP地址吗?”
7、211.152.17.58把查询后的结果返回给202.96.209.5:“www.csdn.net.对应的IP地址是211.100.26.123”
8、202.96.209.5把最终结果放到自己的DNS缓存里,这样以后就不用再进行上面的跌代查询了。
9、202.96.209.5把最终结果返回给最出发起请求的客户机。
10、客户机的dns client软件把最终结果返回给浏览器。
11、浏览器把目的IP地址连同http数据传递给网络层。
12、网络层根据目标地址判断路由,发现目标IP地址211.152.17.58与本机不在同一个网段(判断是否是同一个网段使用子网掩码与目的IP地址做与运算),于是决

定把次包发给网关。
13、检查本地arp缓存表获得本地网关的MAC地址。
.....
........

三、DNS在哪里?
提供DNS的是计算机,是安装了DNS服务器端软件的计算机。服务器端软件即可以是基于类Unix操作系统,也可以是基于Windows操作系统的。装好DNS服务器软件后

,您就可以在您指定的位置创建区域文件了,所谓区域文件就是包含了此域中名字到IP地址解析记录的一个文件(如文件名可能是csdn.net.这个文件的内容是这

样的:
primary name server = dns2.100ok.com (主服务器的主机名是 dns2.100ok.com)
serial = 2007042913 (当前序列号是2007042913。这个序列号的作用是当辅域名服务器来copy时候这个文件时,如果号码增加了就copy)
refresh = 10800 (3 hours) (辅域名服务器每隔3小时查询一个主服务器)
retry = 3600 (1 hour) (当辅域名服务试图在主服务器上查询更时,而连接失败了,辅域名服务器每隔1小时访问主域名服务器)
expire = 604800 (7 days) (辅域名服务器在向主服务更新失败后,7天后删除csdn.net.中的记录。)
default TTL = 3600 (1 hour) (缓存服务器保存记录的时间是1小时。也就是告诉202.96.209.5保存csdn.net.域的解析记录为1小时)

www.csdn.net Addresses: 211.100.26.124, 211.100.26.121, 211.100.26.122, 211.100.26.123 (www.csdn.net对应的ip地址有4个。起到冗于的作用)

csdn.net MX preference = 10, mail exchanger = mail.csdn.net (csdn.net域中两台mail服务器实现冗于.不同的IP/web界面,相同的web数据库)
csdn.net MX preference = 20, mail exchanger = mail2.csdn.net


csdn.net nameserver = dns2.100ok.com (两台DNS服务器实现冗于)
csdn.net nameserver = dns5.100ok.com
)。

四、怎样实现DNS?

无论您是通过linux还是windows搭建dns服务器,原理都是一致的。

您可以把DNS服务器配置成以下3类之一:
1、主DNS服务器。
2、辅DNS服务器。
3、缓存DNS服务器。


1、在例子中,我们提到的211.152.17.58就是主DNS服务器,这台服务器负责csdn.net.域的名字到IP解析。
2、在例子中,csdn.net.域还有台辅dns服务器,名字是dns2.100ok.com,ip地址是 211.157.101.174。辅DNS的存在的意思是:当主DNS瘫痪由辅dns提供服务。
3、在例子中,202.96.209.5就是缓存DNS服务器。这样的DNS服务器不负责任何域的最终解析,只缓存解析记录,这样用户下次请求相同的解析记录时直接从缓存

中的名字到IP的对应关系返回给用户,而不需要再递归或者跌代查询了。
...全文
1285 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaooqiang 2008-03-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 weigm 的回复:]
mark   DNS   详解
[/Quote]
hychina613 2008-03-21
  • 打赏
  • 举报
回复
好帖,对DNS又有了进一步了解。
tonywam1036 2008-03-21
  • 打赏
  • 举报
回复
好强大的帖子,本人归纳一下:

默认 DNS客户端 使用递归查询请求
默认 DNS服务器 使用迭代查询请求

应该是这样吧
cs356258 2007-08-05
  • 打赏
  • 举报
回复
```不是很懂。。。。
weigm 2007-07-26
  • 打赏
  • 举报
回复
mark DNS 详解
myangelonline 2007-07-09
  • 打赏
  • 举报
回复

強人呀..
phoenixYiYou 2007-07-07
  • 打赏
  • 举报
回复
d!顶一下!
乌镇程序员 2007-07-07
  • 打赏
  • 举报
回复
好帖,顶了!

6,849

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧