关闭

DNS

1198人阅读 评论(0) 收藏 举报
分类:

DNS(Domain Name System)域名系统是因特网使用的命名系统。用户在使用网络服务时是通过使用域名来进行对指定网站的访问的,可是机器确是通过IP地址来处理的。为什么机器不用域名来处理呢?因为IP地址的长度是固定的32位,而域名的长度并不是固定的,机器处理起来比较困难。所以就需要将域名解析为IP地址。

DNS就是用来进行域名解析的服务器。DNS系统被设计成为一个联机分布式数据库,采用客户-服务器方式。DNS使大多数名字都在本地进行解析,仅少量解析需要在因特网上通信,因此DNS系统的效率挺高。

当某一个应用程序需要把主机名解析为IP地址时,该应用程序就调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器(使用UDP是为了减小开销)。本地域名服务器在查找域名后,将对应的IP地址放在回答报文中返回。应用程序获得目的主机的IP地址后既可进行通信。


域名服务器

在介绍DNS的工作原理之前,我们需要将DNS服务器分个类:根域名服务器顶级域名服务器权限域名服务器本地域名服务器

 

根域名服务器: 最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。根域名服务器是最重要的服务器,若要对因特网上任何一个域名解析,只要自己无法解析,就首先要求助根域名服务器。如果所有的根域名服务器都瘫痪了,整个DNS就无法工作了。在很多时候,根域名服务器并不直接将查询到的域名转为IP地址,而是告诉本地服务器下一步应该找哪一个顶级域名服务器进行查询。

 

顶级域名服务器 : 这些域名服务器负责管理在该顶级域名器注册的所有二级域名。当收到DNS查询时,就给出最后答案,答案可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址。

 

权限域名服务器 : 负责一个区的域名服务器。当一个权限域名服务器不能查询到最终结果的话,就会告诉用户下一步需要查找哪个权限域名服务器。

 

本地域名服务器 : 当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文,而不是让该主机自己进行下一步查询。

本地域名服务器向根域名服务器的查询一般都是采用迭代查询。所谓迭代查询就是当根域名服务器收到本地域名服务器发出的查询请求报文后,要么告诉本地域名服务器下一步应该查询哪一个域名服务器,然后本地服务器自己进行后续的查询。(而不是替代本地服务器进行后续查询)。

各域名服务器关系图如下:


工作原理及过程

 

接下来我们通过一个完整的流程来了解DNS的完整工作流程。

 

假定域名为 m.xyz.com的主机想知道另一个主机(域名为y.abc.com)的IP地址。加入,主机m.xyz.com打算发送邮件给主机y.abc.com。这时就必须知道主机y.abc.com的IP地址。步骤如下:

1.      主机m.xyz.com 先向其本地域名服务器dns.xyz.com进行递归查询;

2.      本地域名服务器采用迭代查询,它先向一个根域名服务器查询;

3.      根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器dns.com的IP地址;

4.      本地域名服务器向顶级域名服务器dns.com进行查询;

5.      顶级域名服务器dns.com告诉本地域名服务器,下一次应查询的权限域名服务器dns.abc.com的IP地址;

6.      本地域名服务器向权限域名服务器dns.abc.com进行查询;

7.      权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机y.abc.com的IP地址;

8.      本地域名服务器最后把查询结果告诉主机m.xyz.com。

以上八个步骤总共要使用八个UDP用户数据报的报文。本地域名服务器经过三次迭代查询后,从权限域名服务器dns.abc.com得到了主机y.abc.com的IP地址,最后把结果返回给发起查询的主机m.xyz.com。

为了提高DNS查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。






2
0
查看评论

深入理解DNS报文格式

(一)DNS报文格式 (1)公共报文头格式其中header报文头是必须有的,其他的有没有在报文头里有定义: 标识ID: 请求客户端设置的16位标示,服务器给出应答的时候会带相同的标示字段回来,这样请求客户端就可以区分不同的请求应答了。标志: QR 1个比特位用来区分是请求(...
  • liao152
  • liao152
  • 2015-04-24 22:24
  • 5988

DNS协议详解及报文格式分析

DNS协议详解及报文格式分析 Posted on 2017-06-18 by Jocent — No Comments ↓ 目录 一. DNS协议理论知识 1.1. 域名结构1.2. 域名服务器1.3. 域名解析过程 二. DNS协议报文格式 2.1 头部...
  • tianyeming
  • tianyeming
  • 2017-07-10 14:38
  • 7035

国内DNS劫持与污染状况分析

在G+上碰到了出现DNS相关问题的网友,于是今天又测试了一下DNS的现状。整个过程很简单,只需一个命令即可:nslookup 在Windows的命令提示符下测试,基本的格式为: 1nslookup DOMAIN DNS_IP而国内的DNS问题基本分两种:一、DNS记录劫持DNS记录劫...
  • charleslei
  • charleslei
  • 2015-11-30 19:51
  • 14339

如何查看树莓派的DNS

树莓派的DNS存放在如下文件: /etc/resolv.conf 文件的格式如下: nameserver  192.168.111.9 nameserver  192.168.100.8
  • huayucong
  • huayucong
  • 2015-07-26 10:11
  • 10248

小米开源的基于twisted实现的智能dns系统:Smartdns

https://github.com/xiaomi-sa/smartdns 使用场景:    全局负载均衡 smartdns是python语言编写,基于twisted框架实现的dns server,能够支持针对不同的dns请求根据配置返回不同的解析结果...
  • blade2001
  • blade2001
  • 2016-03-08 19:12
  • 1709

dns工作过程及原理 (linux dns及android dan的实现差异)

dns原理、dns工作过程、dns的实现、linux dns配置原因、android dns的实现框图。 前言本文分析dns工作过程及原理,给一个简单的dns实现代码流程,并针对linux及android
  • zjli321
  • zjli321
  • 2017-01-10 18:38
  • 1902

结合Wireshark分析DNS 协议

摘要:     本文简单介绍了DNS协议理论知识,给出URL解析步骤,详细讲述了DNS报文各个字段含义,并从Wireshark俘获分组中选取DNS相关报文进行分析。 一、概述 1.1 DNS     识别主机有两种方式:...
  • hunanchenxingyu
  • hunanchenxingyu
  • 2014-03-18 23:55
  • 29788

DNS基础知识体系和DNS架构

任何两个主机真正实现通信是底层网线,通过客户端和服务端的端口进行通信,客户端通过端口号请求服务器上的端口,对于服务器来说这个端口号是与IP地址结合实现的,也就是套接字 IP是逻辑地址,SIP目标地址,CIP源地址 数据传送本身靠的是数据帧(以太网),统称协议数据单元(PDU) 帧通过网卡调制为数字信...
  • LAINCLAK
  • LAINCLAK
  • 2016-11-28 21:10
  • 1002

DNS学习总结

1.DNS的定义 DNS是域名系统(DomainNameSystem)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,在Internet上域名与IP地址之间是一一对应的,DNS就是进行域名解析的服务器。DNS命名...
  • chen_jianjian
  • chen_jianjian
  • 2015-03-31 16:34
  • 1038

DNS 报文格式

一、域名和资源记录的定义 1、Name space definitions 2、资源记录定义(RR definitions)     2.1 格式          后面分析报文...
  • chenfei_5201213
  • chenfei_5201213
  • 2012-05-14 19:23
  • 7590
    个人资料
    • 访问:313371次
    • 积分:4635
    • 等级:
    • 排名:第7501名
    • 原创:146篇
    • 转载:0篇
    • 译文:0篇
    • 评论:86条
    博客专栏