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

【转】DNS查询过程相关推荐

  1. DNS查询过程及DNS服务器简单搭建

    1.描述DNS查询过程以及DNS服务器类别. DNS查询过程: 一次完整的查询请求经过的流程: Client--> hosts文件 --> DNS Local Cache --> D ...

  2. linux关闭dns迭代查询,DNS查询和响应过程递归和迭代的使用

    需要了解DNS查询过程的递归和迭代的机制,找到了RFC的相关章节, 对这个进行了简单的翻译(水平有限),可以留下来做个参考. RFC 1034 4.3.1. Queries and responses ...

  3. [日常] DNS的迭代查询过程

    DNS是应用层协议,端口号为tcp/53和udp/53 DNS查询过程,比如访问www.test.com 1.客户机查询www.test.com 2.查询首选DNS服务器,Linux下/etc/res ...

  4. dig命令-dns查询

    我相信使用nslookup的同学一定比使用dig的同学多,所以还是有必要花些时间给大家介绍一下dig的. dig,和nslookup作用有些类似,都是DNS查询工具. dig,其实是一个缩写,即Dom ...

  5. 计算机网络:小明在家打开一个网址过程细致版(DNS缓存、DNS查询、TCP/IP协议、ARP协议、HTML渲染)

    文章目录 前言 一.DNS缓存 浏览器缓存 操作系统缓存 路由器缓存 ISP缓存 二.DNS查询 1.发起DNS查询 2.DNS服务器设计结构 3.DNS服务器查询步骤 4.ARP请求 5.封装TCP ...

  6. A记录 CNAME记录是什么 | DNS 查询的过程 | DNS 根服务器是什么 | 配置域名 CNAME 原理

    说说 DNS 查询的过程? (根服务器+迭代查询,ISP 缓存,浏览器.host.DNS,顶级 com 服务器等) 全球共有 13 个根服务器, 然后近到本地 Isp 会配置多个缓存服务器(DHCP分 ...

  7. Windows下模拟dns迭代查询过程

    目录 dns解析过程 迭代与递归 dns解析过程 当在浏览器的搜索栏输入URL(统一资源定位符)时,浏览器的解析过程 完整解析 当在浏览器输入某一IP地址时 (1)浏览器查看查看缓存表里有没有对应的域 ...

  8. DNS解析过程详解【转】

    转自:http://blog.chinaunix.net/uid-28216282-id-3757849.html 先说一下DNS的几个基本概念: 一. 根域 就是所谓的".",其 ...

  9. linux的dns查询工具,一款超强的统计DNS查询的工具--DNSTOP

    一款超强的统计DNS查询的工具--DNSTOP 在维护DNS服务器时,偶们希望知道到底是哪些用户在使用偶们的DNS服务器,同时也希望能对DNS查询做一个统计.一般情况下,偶们可以使用 tcpdump ...

最新文章

  1. sklearn基于make_scorer函数构建自定义损失函数或者评估指标
  2. 《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 三 NSArray
  3. 树莓派连接显示器不亮屏的解决方案
  4. 分析增加站点权重的四大切入点(转载)
  5. Linux php安装fileinfo扩展
  6. python语言是机器语言_Python解释器:源代码--字节码--机器语言
  7. centos 下安装man手册
  8. 软件开发质量的双保险 — 2.业务设计验证与业务用例
  9. 今天的我叫史努比的飞鸽传书
  10. 观点:比特币新一轮突破“即将到来”
  11. Charles安装与入门
  12. SpringBoot之第一个Restfu示例
  13. python编写函数模拟猜数游戏、系统随机产生一个数_C语言编程:编写一个猜数的游戏,系统自动产生一个随机数,你来猜,程序给出提示,直到猜对为止。...
  14. QTreeView 和QTreeWidget
  15. 随机产生大写字母c语言,C语言程序设计 (英文打字练习)
  16. python卖水果_用Python解决一个简单的水果分类问题
  17. pm2和pm2-logrotate 日志管理 初探
  18. 计算机模拟专业委员会,中国化工学会过程模拟及仿真专业委员会成立
  19. 大数据开发之在idea中开发第一个hadoop程序
  20. css input 如何去掉点击后出现的边框

热门文章

  1. tga文件怎么打开_六安软件定制文件打开的时候乱码怎么解决?
  2. python最低薪资_Python最低薪资在北上深是多少你们知道吗?我已经整理好了哦
  3. dword类型和十进制有什么区别_微信小商店有几种类型,有什么区别?
  4. ogg mysql的原理_OGG基础原理了解
  5. 第十三届全国大学生智能汽车竞赛 裁判系统使用说明
  6. 2021年春季学期-信号与系统-第二次作业参考答案
  7. 磁悬浮地球仪底座驱动电路板分析
  8. linux 批量启动服务器,批量部署Linux操作系统systemimager 使用
  9. mfc 儿童算数作业生成器_9岁男孩一写作业就哭,爸妈毅然带孩子跳绳,打骂真的没用...
  10. 深度特征提取方法_基于深度学习的文本数据特征提取方法之Glove和FastText