dns查询:DNS 学习笔记的2-DNS客户端的查询

  DNS客户端完整DNS查询过程如下:

  1、首先检查自己本地DNS名字缓存Cache

  当DNS客户端需要解析某个FQDN时先检查自己本地DNS名字缓存Cache本地DNS名字缓存Cache由两部分构成:

  Hosts文件中主机名到IP地址映射定义;

  前次DNS查询得到结果并且此结果还处于有效期;

  如果DNS客户端从本地缓存Cache中获得相应结果则DNS解析完成

  如何清除缓存Cache:   ipconfig /flushdns

  当出现“successfully flushed the dns resolver cache”提示时就介绍说明当前计算机缓存Cache信息已经被成功清除

  2、联系自己DNS服务器

  如果DNS客户端没有在自己本地缓存Cache中找到对应记录则联系自己DNS服务器你必须预先配置DNS客户端所使用DNS服务器

  如何查看自己是否配置DNS服务器:  ipconfig /all



  图片看不清楚?请点击这里查看原图(大图)

  当DNS服务器接收到DNS客户端解析请求后它先检查自己是否能够权威答复此解析请求即它是否管理此请求记录所对应DNS区域;如果DNS服务器管理对应DNS区域则DNS服务器对此DNS区域具有权威此时如果本地区域中相应资源记录匹配客户解析请求则DNS服务器权威使用此资源记录答复客户解析请求(权威答复); 如果没有相应资源记录则DNS服务器权威答复客户无对应资源记录(否定答复)

  如果没有区域匹配DNS客户端发起解析请求则DNS服务器检查自己本地缓存Cache如果具有对应匹配结果无论是正向答复还是否定答复DNS服务器非权威答复客户解析请求此时DNS解析完成

  如果DNS服务器在自己本地缓存Cache中还是没有找到匹配结果此时根据配置区别DNS服务器执行请求查询方式也区别:

  A. 默认情况下DNS服务器使用递归方式来解析名字递归方式含义就是DNS服务器作为DNS客户端向其他DNS服务器查询此解析请求直到获得解析结果在此过程中原DNS客户端则等待DNS服务器回复

  B. 如果你禁止DNS服务器使用递归方式则DNS服务器工作在迭代方式即向原DNS客户端返回个参考答复其中包含有利于客户端解析请求信息(例如根提示信息等)而不再进行其他操作;原DNS客户端根据DNS服务器返回参考信息再决定处理方式但是在实际网络环境中禁用DNS服务器递归查询往往会让DNS服务器对无法进行本地解析客户端请求返回个服务器失败参考答复此时客户端则会认为解析失败

  递归方式和迭代方式区别的处就是当DNS服务器没有在本地完成客户端请求解析时由谁扮演DNS客户端角色向其他DNS服务器发起解析请求通常情况下应使用递归方式这样有利于网络管理和安全性控制只是递归方式比迭代方式更消耗DNS服务器性能不过在通常情况下这点性能消耗无关紧要

  根提示信息是Internet命名空间中根DNS服务器IP地址为了正常执行递归解析DNS服务器必须知道从哪儿开始搜索DNS域名而根提示信息则用于实现这 需求全世界范围内根DNS服务器总共有13个它们名字和IP地址信息保存在%systemroot%system32dnscache.dns文件中每次DNS服务器启动时从cache.dns文件中读取



  般情况下不需要对此文件进行修改;如果你DNS服务器是在内部网络中部署并且不需要使用Internet根DNS服务器则可以根据需要进行修改将其指向到某个内部根域DNS服务器

  查询响应类型

  DNS服务器对于客户请求答复具有多种类型常见有以下 4种:

  权威答复:权威答复是返回给客户正向答复并且设置了DNS消息中权威位此答复代表从具有权威DNS服务器处发出;

  正向答复:正向答复包含了匹配客户端解析请求资源记录;

  参考答复:参考答复只在DNS服务器工作在迭代模式下使用包含了其他有助于客户端解析请求信息例如当DNS服务器不能为客户端发起解析请求找到某个匹配值时则向DNS客户端发送参考回复告诉它有助于解析请求信息;

  否定答复:否定答复指出权威服务器在解析客户端请求时可能遇到了以下两种情况的:

  ·         权威DNS服务器报告客户端查询名字不存在;

  ·         权威DNS服务器报告存在对应名字但是不存在指定类型资源记录

  无论正向答复还是否定答复DNS客户端都将结果保存在自己本地缓存Cache中

  理解缓存Cache工作方式

  DNS客户端和DNS服务器都会缓存Cache获得解析结果这样可以提高DNS服务性能和减少DNS相关网络流量

  DNS客户端缓存Cache

  当DNS客户端服务启动时会读取Hosts文件中所有主机名和IP地址映射并且保存在缓存Cache中Hosts存放在%systemroot%system32driverc目录当你修改Hosts 文件后DNS客户端会立即读取Hosts文件并且对本地缓存Cache进行更新

  另外DNS客户端会缓存Cache过去查询结果当DNS客户端服务停止时将清空本地缓存Cache

  DNS服务器缓存Cache

  DNS服务器像DNS客户端样缓存Cache名字解析结果并且可以使用缓存Cache中信息来答复其他客户端请求你可以在DNS服务器管理控制台或者使用DNSCMD命令行工具手动清空 缓存Cache另外当DNS服务器停止时同样会清空DNS服务器缓存Cache

  资源记录生存时间(TTL)指定了资源记录可以缓存Cache时间长短而无论是DNS客户端缓存Cache还是DNS服务器缓存Cache;默认情况下TTL是3600秒(1小时)需要注意 由于缓存Cache作用DNS服务器上对于资源记录修改可能不能立即生效并且对于Internet域名来说资源记录修改可能会需要超过24小时时间才能在所有DNS服务器上完 成更新也就是说你向ISP申请域名需要24小时才可以生效



  DNS协议采用UDP/TCP 53端口进行通讯:DNS服务器侦听UDP/TCP 53端口DNS客户端通过向服务器这两个端口发起连接进行DNS协议通讯其中UDP 53端口主要用于答复DNS客户端解析请求而TCP 53端口用于区域复制

  因此我们只需要检查53端口是否出现就可以判断DNS是否安装完成

  在命令提示符下输入:netstat –an | find “53”

  如下图所示



  图片看不清楚?请点击这里查看原图(大图) 

Tags:  如何查询dns dns服务器地址查询 dns地址查询 dns查询

延伸阅读

最新评论

发表评论