DNS客户端完整
![](/icons/33834de.gif)
DNS查询过程如下:
1、首先检查自己
![](/icons/33834de.gif)
本地DNS名字缓存Cache
当DNS客户端需要解析某个FQDN时
![](/icons/33834dou.gif)
先检查自己
![](/icons/33834de.gif)
本地DNS名字缓存Cache
![](/icons/33834dou2.gif)
本地
![](/icons/33834de.gif)
DNS名字缓存Cache由两部分构成:
Hosts文件中
![](/icons/33834de.gif)
主机名到IP地址映射定义;
前
![](/icons/33834yi.gif)
次DNS查询得到
![](/icons/33834de.gif)
结果
![](/icons/33834dou.gif)
并且此结果还处于有效期;
如果DNS客户端从本地缓存Cache中获得相应结果
![](/icons/33834dou.gif)
则DNS解析完成
如何清除缓存Cache: ipconfig /flushdns
当出现“successfully flushed the dns resolver cache”
![](/icons/33834de.gif)
提示时就介绍说明当前计算机
![](/icons/33834de.gif)
缓存Cache信息已经被成功清除
![](/icons/33834dou2.gif)
2、联系自己
![](/icons/33834de.gif)
DNS服务器
如果DNS客户端没有在自己
![](/icons/33834de.gif)
本地缓存Cache中找到对应
![](/icons/33834de.gif)
记录
![](/icons/33834dou.gif)
则联系自己
![](/icons/33834de.gif)
DNS服务器
![](/icons/33834dou.gif)
你必须预先配置DNS客户端所使用
![](/icons/33834de.gif)
DNS服务器
![](/icons/33834dou2.gif)
如何查看自己是否配置DNS服务器: ipconfig /all
![](http://www.crazycoder.cn/WebFiles/200910/b0cb7dc6-ad5c-4baa-9a88-35b32200d168.jpeg)
图片看不清楚?请点击这里查看原图(大图)
![](/icons/33834dou2.gif)
当DNS服务器接收到DNS客户端
![](/icons/33834de.gif)
解析请求后
![](/icons/33834dou.gif)
它先检查自己是否能够权威
![](/icons/33834de.gif)
答复此解析请求
![](/icons/33834dou.gif)
即它是否管理此请求记录所对应
![](/icons/33834de.gif)
DNS区域;如果DNS服务器管理对应
![](/icons/33834de.gif)
DNS区域
![](/icons/33834dou.gif)
则DNS服务器对此DNS区域具有权威
![](/icons/33834dou2.gif)
此时
![](/icons/33834dou.gif)
如果本地区域中
![](/icons/33834de.gif)
相应资源记录匹配客户
![](/icons/33834de.gif)
解析请求
![](/icons/33834dou.gif)
则DNS服务器权威
![](/icons/33834de.gif)
使用此资源记录答复客户
![](/icons/33834de.gif)
解析请求(权威答复); 如果没有相应
![](/icons/33834de.gif)
资源记录
![](/icons/33834dou.gif)
则DNS服务器权威
![](/icons/33834de.gif)
答复客户无对应
![](/icons/33834de.gif)
资源记录(否定答复)
![](/icons/33834dou2.gif)
如果没有区域匹配DNS客户端发起
![](/icons/33834de.gif)
解析请求
![](/icons/33834dou.gif)
则DNS服务器检查自己
![](/icons/33834de.gif)
本地缓存Cache
![](/icons/33834dou2.gif)
如果具有对应
![](/icons/33834de.gif)
匹配结果
![](/icons/33834dou.gif)
无论是正向答复还是否定答复
![](/icons/33834dou.gif)
DNS服务器非权威
![](/icons/33834de.gif)
答复客户
![](/icons/33834de.gif)
解析请求
![](/icons/33834dou2.gif)
此时
![](/icons/33834dou.gif)
DNS解析完成
![](/icons/33834dou2.gif)
如果DNS服务器在自己
![](/icons/33834de.gif)
本地缓存Cache中还是没有找到匹配
![](/icons/33834de.gif)
结果
![](/icons/33834dou.gif)
此时
![](/icons/33834dou.gif)
根据配置
![](/icons/33834de.gif)
区别
![](/icons/33834dou.gif)
DNS服务器执行请求查询
![](/icons/33834de.gif)
方式也区别:
A. 默认情况下
![](/icons/33834dou.gif)
DNS服务器使用递归方式来解析名字
![](/icons/33834dou2.gif)
递归方式
![](/icons/33834de.gif)
含义就是DNS服务器作为DNS客户端向其他DNS服务器查询此解析请求
![](/icons/33834dou.gif)
直到获得解析结果
![](/icons/33834dou.gif)
在此过程中
![](/icons/33834dou.gif)
原DNS客户端则等待DNS服务器
![](/icons/33834de.gif)
回复
B. 如果你禁止DNS服务器使用递归方式
![](/icons/33834dou.gif)
则DNS服务器工作在迭代方式
![](/icons/33834dou.gif)
即向原DNS客户端返回
![](/icons/33834yi.gif)
个参考答复
![](/icons/33834dou.gif)
其中包含有利于客户端解析请求
![](/icons/33834de.gif)
信息(例如根提示信息等)
![](/icons/33834dou.gif)
而不再进行其他操作;原DNS客户端根据DNS服务器返回
![](/icons/33834de.gif)
参考信息再决定处理方式
![](/icons/33834dou2.gif)
但是在实际网络环境中
![](/icons/33834dou.gif)
禁用DNS服务器
![](/icons/33834de.gif)
递归查询往往会让DNS服务器对无法进行本地解析
![](/icons/33834de.gif)
客户端请求返回
![](/icons/33834yi.gif)
个服务器失败
![](/icons/33834de.gif)
参考答复
![](/icons/33834dou.gif)
此时
![](/icons/33834dou.gif)
客户端则会认为解析失败
![](/icons/33834dou2.gif)
递归方式和迭代方式
![](/icons/33834de.gif)
区别的处就是当DNS服务器没有在本地完成客户端
![](/icons/33834de.gif)
请求解析时
![](/icons/33834dou.gif)
由谁扮演DNS客户端
![](/icons/33834de.gif)
角色向其他DNS服务器发起解析请求
![](/icons/33834dou2.gif)
通常情况下应使用递归方式
![](/icons/33834dou.gif)
这样有利于网络管理和安全性控制
![](/icons/33834dou.gif)
只是递归方式比迭代方式更消耗DNS服务器
![](/icons/33834de.gif)
性能
![](/icons/33834dou.gif)
不过在通常
![](/icons/33834de.gif)
情况下
![](/icons/33834dou.gif)
这点性能
![](/icons/33834de.gif)
消耗无关紧要
![](/icons/33834dou2.gif)
根提示信息是Internet命名空间中
![](/icons/33834de.gif)
根DNS服务器
![](/icons/33834de.gif)
IP地址
![](/icons/33834dou2.gif)
为了正常
![](/icons/33834de.gif)
执行递归解析
![](/icons/33834dou.gif)
DNS服务器必须知道从哪儿开始搜索DNS域名
![](/icons/33834dou.gif)
而根提示信息则用于实现这
![](/icons/33834yi.gif)
需求
![](/icons/33834dou2.gif)
全世界范围内
![](/icons/33834de.gif)
根DNS服务器总共有13个
![](/icons/33834dou.gif)
它们
![](/icons/33834de.gif)
名字和IP地址信息保存在%systemroot%system32dnscache.dns文件中
![](/icons/33834dou.gif)
每次DNS服务器启动时从cache.dns文件中读取
![](/icons/33834dou2.gif)
![](/icons/33834yi.gif)
般情况下
![](/icons/33834dou.gif)
不需要对此文件进行修改;如果你
![](/icons/33834de.gif)
DNS服务器是在内部网络中部署并且不需要使用Internet
![](/icons/33834de.gif)
根DNS服务器
![](/icons/33834dou.gif)
则可以根据需要进行修改
![](/icons/33834dou.gif)
将其指向到某个内部根域DNS服务器
![](/icons/33834dou2.gif)
查询响应类型
DNS服务器对于客户请求
![](/icons/33834de.gif)
答复具有多种类型
![](/icons/33834dou.gif)
常见
![](/icons/33834de.gif)
有以下 4种:
权威答复:权威答复是返回给客户
![](/icons/33834de.gif)
正向答复
![](/icons/33834dou.gif)
并且设置了DNS消息中
![](/icons/33834de.gif)
权威位
![](/icons/33834dou2.gif)
此答复代表从具有权威
![](/icons/33834de.gif)
DNS服务器处发出;
正向答复:正向答复包含了匹配客户端解析请求
![](/icons/33834de.gif)
资源记录;
参考答复:参考答复只在DNS服务器工作在迭代模式下使用
![](/icons/33834dou.gif)
包含了其他有助于客户端解析请求
![](/icons/33834de.gif)
信息
![](/icons/33834dou2.gif)
例如
![](/icons/33834dou.gif)
当DNS服务器不能为客户端发起
![](/icons/33834de.gif)
解析请求找到某个匹配值时
![](/icons/33834dou.gif)
则向DNS客户端发送参考回复
![](/icons/33834dou.gif)
告诉它有助于解析请求
![](/icons/33834de.gif)
信息;
否定答复:否定答复指出权威服务器在解析客户端
![](/icons/33834de.gif)
请求时可能遇到了以下两种情况的
![](/icons/33834yi.gif)
:
· 权威DNS服务器报告客户端查询
![](/icons/33834de.gif)
名字不存在;
· 权威DNS服务器报告存在对应
![](/icons/33834de.gif)
名字但是不存在指定类型
![](/icons/33834de.gif)
资源记录
![](/icons/33834dou2.gif)
无论正向答复还是否定答复
![](/icons/33834dou.gif)
DNS客户端都将结果保存在自己
![](/icons/33834de.gif)
本地缓存Cache中
![](/icons/33834dou2.gif)
理解缓存Cache
![](/icons/33834de.gif)
工作方式
DNS客户端和DNS服务器都会缓存Cache获得
![](/icons/33834de.gif)
解析结果
![](/icons/33834dou.gif)
这样可以提高DNS服务性能和减少DNS相关
![](/icons/33834de.gif)
网络流量
![](/icons/33834dou2.gif)
DNS客户端缓存Cache
当DNS客户端服务启动时
![](/icons/33834dou.gif)
会读取Hosts文件中
![](/icons/33834de.gif)
所有主机名和IP地址
![](/icons/33834de.gif)
映射
![](/icons/33834dou.gif)
并且保存在缓存Cache中
![](/icons/33834dou2.gif)
Hosts存放在%systemroot%system32driver
![](/icons/33834set.gif)
c目录
![](/icons/33834dou.gif)
当你修改Hosts 文件后
![](/icons/33834dou.gif)
DNS客户端会立即读取Hosts文件并且对本地缓存Cache进行更新
![](/icons/33834dou2.gif)
另外
![](/icons/33834dou.gif)
DNS客户端会缓存Cache过去
![](/icons/33834de.gif)
查询结果
![](/icons/33834dou.gif)
当DNS客户端服务停止时
![](/icons/33834dou.gif)
将清空本地缓存Cache
![](/icons/33834dou2.gif)
DNS服务器缓存Cache
DNS服务器像DNS客户端
![](/icons/33834yi.gif)
样缓存Cache名字解析结果
![](/icons/33834dou.gif)
并且可以使用缓存Cache中
![](/icons/33834de.gif)
信息来答复其他客户端
![](/icons/33834de.gif)
请求
![](/icons/33834dou2.gif)
你可以在DNS服务器管理控制台或者使用DNSCMD命令行工具手动清空 缓存Cache
![](/icons/33834dou.gif)
另外当DNS服务器停止时
![](/icons/33834dou.gif)
同样会清空DNS服务器缓存Cache
![](/icons/33834dou2.gif)
资源记录
![](/icons/33834de.gif)
生存时间(TTL)指定了资源记录可以缓存Cache
![](/icons/33834de.gif)
时间
![](/icons/33834de.gif)
长短
![](/icons/33834dou.gif)
而无论是DNS客户端缓存Cache还是DNS服务器缓存Cache;默认情况下
![](/icons/33834dou.gif)
TTL是3600秒(1小时)
![](/icons/33834dou2.gif)
需要注意
![](/icons/33834de.gif)
是
![](/icons/33834dou.gif)
由于缓存Cache
![](/icons/33834de.gif)
作用
![](/icons/33834dou.gif)
DNS服务器上对于资源记录
![](/icons/33834de.gif)
修改可能不能立即生效
![](/icons/33834dou2.gif)
并且对于Internet域名来说
![](/icons/33834dou.gif)
资源记录
![](/icons/33834de.gif)
修改可能会需要超过24小时
![](/icons/33834de.gif)
时间才能在所有DNS服务器上完 成更新
![](/icons/33834dou2.gif)
也就是说你向ISP申请域名
![](/icons/33834dou.gif)
需要24小时才可以生效
![](/icons/33834dou2.gif)
![](http://www.crazycoder.cn/WebFiles/200910/55ed28fe-db5e-4ea9-b63f-96c03d071902.jpeg)
DNS协议采用UDP/TCP 53端口进行通讯:DNS服务器侦听UDP/TCP 53端口
![](/icons/33834dou.gif)
DNS客户端通过向服务器
![](/icons/33834de.gif)
这两个端口发起连接进行DNS协议通讯
![](/icons/33834dou2.gif)
其中UDP 53端口主要用于答复DNS客户端
![](/icons/33834de.gif)
解析请求
![](/icons/33834dou.gif)
而TCP 53端口用于区域复制
![](/icons/33834dou2.gif)
因此我们只需要检查53端口是否出现就可以判断DNS是否安装完成
![](/icons/33834dou2.gif)
在命令提示符下输入:netstat –an | find “53”
如下图所示
![](http://www.crazycoder.cn/WebFiles/200910/f26ab4e9-9ca0-461c-bccb-a1b031a17291.jpeg)
图片看不清楚?请点击这里查看原图(大图)
延伸阅读
最新评论