DNS查询过程

DNS的查询过程是指在客户端通过DNS服务器将一个IP地址转换为一个FQDN(Fully Qualified Domain Name,完全合格的域名),或将一个FQDN转化为一个IP地址,或查询一个区域的邮件服务器的过程。

DNS查询分类

1)按查询方式:

(1)递归查询。 当DNS服务器接收到查询请求时,不论成功或失败,都会做出对应的响应。(发生在DNS客户端与DNS服务器之间)

(2)迭代查询。 DNS服务器根据自己的高速缓存或区域的数据,以最佳结果响应。如果DNS服务器无法解析,它可能返回一个指针。指针指向下级域名的DNS服务器,继续该过程,直到找到拥有所查询名字的DNS服务器,或知道出错、超时为止。(发生在DNS服务器之间)

2)按内容分类

(1)正向查询: 由域名查找IP地址。

(2)反向查询: 有IP地址查找域名。

DNS查询过程实例

1)客户端将www.redhat.com的查询提交给本地DNS服务器(递归查询)。

2)本地DNS服务器检查区域数据库,由于该服务器没有redhat.com的授权,它将查询传递到根服务器(“.”DNS服务器),请求解析主机名称。根名称服务器把“com”DNS服务器IP地址返回给本地DNS服务器(迭代查询)。

3)本地DNS服务器将请求发给“com”DNS服务器,该服务器根据请求将“redhat.com”DNS服务器IP地址返回给本地DNS服务器(迭代查询)。

4)本地DNS服务器向“redhat.com”DNS服务器发送请求,由于该服务器具有“www.redhat.com”记录,它将www.redhat.com的IP地址返回给本地DNS服务器。

5)本地DNS服务器将www.redhat.com的IP地址发送给客户端。

3. TCP or UDP

DNS名字服务器使用的端口无论对UDP还是TCP都是53。使用tcpdump观察的所有例子都是采用UDP协议的,这说明在一般情况下,DNS协议采用的UDP协议。只有当名字解析器发出一个查询请求,并且返回响应中的TC(删减标志)比特被设置为1时,它就意味着响应长度超过了512个字节(DNS协议使用UDP协议时的最大包长度),而仅返回前512字节。在遇到这种情况时,名字解析服务器通常使用TCP重发原来的查询请求,它将允许返回的响应超过512个字节。既然TCP能将用户的数据流分为一些报文段,它就能用多个报文段来传送任意长度的用户数据。

此外,当一个域的辅助名字服务器在启动时,将从该域的主名字服务器执行区域传送。辅助服务器将定时(通常是3小时)向主服务器进行查询以便了解主服务器数据是否发生变动。如果有变动,将执行一次区域传送。区域传送将使用TCP,因为这里传送的数据远比一个查询或响应多得多。

DNS使用UDP,名字解析器和名字服务器都要自己处理超时和重传。加之DNS查询和响应通常经过广域网,分组丢失率和往返时间的不确定性在广域网上比局域网上更大。这样对于DNS客户程序,一个好的等一会和超时程序就显得更重要了。

——————————————-

以上摘自《Linux服务器配置全程实录》一书

转自:http://www.jinlie.net/?p=638

最新文章

  1. iOS代码规范(OC和Swift)
  2. sourcesafe.light 开源项目启动
  3. hdu 4026 2011上海赛区网络赛F TSP ****
  4. 用Hibernate Tools生成Hibernate Mapping映射文件
  5. YUM软件管理
  6. eclipse 中忽略jsp, xml文件中的报错信息
  7. 数据中心基础设施自动化运维之puppet专项
  8. 【巧妙的模拟】【UVA 10881】 - Piotr's Ants/Piotr的蚂蚁
  9. 实战3--项目开始--准备:::资源分类, 日志系统, 写BaseDao
  10. 1593: [Usaco2008 Feb]Hotel 旅馆
  11. 基于Gulp + Browserify构建es6环境下的自动化前端项目
  12. [Error]Can't install RMagick 2.13.4. You must have ImageMagick 6.4.9 or later.
  13. shell判断进程是否存在
  14. 使用nginx代理kibana并配置登录验证
  15. java 类的初始化顺序
  16. FASTREPORT COM/ActiveX报表如何保存到C++项目中?
  17. Delphi和OutputDebugString
  18. 对比深度学习十大框架:TensorFlow 并非最好?
  19. c# dapper mysql like 参数化
  20. sql 字符串操作

热门文章

  1. redis_NoSql入门概述
  2. luoguP4366 [Code+#4]最短路 最短路
  3. 【8.28校内测试】【区间DP】
  4. nginx hello模块代码
  5. [转] 关于Struts-JSON配置(详解带实例struts2的json数据支持)
  6. PID控制原理和算法
  7. 如何监控ActiveMQ
  8. mogodb优化
  9. ionic开发环境搭建之ios
  10. 电脑硬件天梯图—CPU、显卡、主板