DNS工作原理讲解

我们通常使用域名来访问目标机器,而不是直接使用其IP地址,那么域名与IP地址之间存在什么样子的转化关系呢?想要了解他们之间的转化关系,我们不得不提域名查询服务。域名查询服务具有很多种实现方式,例如:NIS(Network Information Service,网络信息服务)、DNS和本地静态文件等。本次主要讲解DNS。

  1. DNS请求/应答报文详解

DNS是一套分布式的域名服务系统。每个DNS服务器中都存放着大量的域名与IP地址之间的映射,并且是动态更新的。众多网络客户端程序是通过DNS协议去域名服务器中查询目标IP地址的。DNS查询与应答报文格式如下图所示:

0                                                                     15 16                                                                   31

16位标识位(ID) 16位标志位
16位请求记录数目 16位应答记录数目
16位授权记录数目 16位额外记录数目
32位查询记录信息
应答记录信息(长度可变)
授权记录信息(长度可变)
额外记录信息(长度可变)

16位标识字段是用来标记一对查询/应答报文的,通过查询该字段来确定返回的应答报文是由哪一个查询报文发出的。

16位标志字段是用来协商通信方式和返回通信状态的,DNS头部报文标识字段的具体细节如下图所示:

QR opcode AA TC RD RA zero rcode
1位 4位 1位 1位 1位 1位 3位 4位

各个标识符的含义分别是:

  • QR:查询/应答标识,0标识查询,1标识应答。
  • opcode:定义查询和应答的类型。0标识标准查询,1标识反向查询(根据IP地址查询域名),2标识请求服务器状态。
  • AA:授权服务器应答标识。1标识域名服务器是授权服务器。
  • TC:截断标识,仅当DNS报文使用UDP服务时使用。因为UDP数据包有长度限制,当长度过长时会被截断。1标识DNS报文长度超过512字节,并被截断。
  • RD:递归查询标识。1标识执行递归查询,即DNS服务器无法解析某一个主机名,则它向其它DNS服务器继续查询,如此反复,直到它解析到目标主机名并返回给客户端。0标识迭代查询,即DNS服务器无法解析目标主机时,它将查询到的其它DNS服务器的IP地址返回给客户端,供客户端进行参考。
  • RA:允许递归标识。此字段在应答字段中使用,1标识DNS服务器支持递归查询。
  • zero:默认为0,属于保留字段。
  • rcode:4位返回码,标识应答状态。常用值有0(无错误)和3(域名不存在)

    接下来的四个字段分别指出了DNS报文最后四个字段的资源记录数目。对查询报文而言,它一般包含一个查询问题,而应答记录数目、授权记录数目、额外记录数目为0.对于应答报文而言,应答记录数目至少是1,而授权记录数目和额外记录数目可为0或非0.

查询问题格式如下:

0                                                                    15 16                                                                  31

查询名
16位查询类型 16位查询类

查询名以一定的格式封装了要查询的主机域名。16位查询类型表示如何执行查询操作,常见的查询操作如下所示:

  • 类型A:值是1,表示获取目标主机的IP地址。

  • 类型CNAME:值是5,表示获取目标主机的别名。
  • 类型PTR:值是12,表示反向查询。

    16位查询类通常是1,表示获取因特网地址(IP地址)

    应答字段、授权字段、额外字段都采用了资源记录格式。资源记录格式如下所示:

    0                                                                15  16                                                             31

    32位域名
    16位类型 16位类
    32位生存时间
    16位资源记录数据长度 资源数据
    资源数据

    表中的32位域名是该记录中与资源对应的名字,其格式与查询记录中的查询域名所对应的格式一样。16位类型和16位类与DNS中查询记录中对应的字段格式一样。

    32位生存时间表示该查询记录结果可被客户端缓存多久,单位:秒。

    16位资源记录数据长度和资源数据字段的内容取决于类型字段。对于A类型而言,资源数据是32位IPV4地址,而资源记录长度为4(单位:字节)。

至此,我们简要地介绍了DNS协议,接下来我们以具体例子来看DNS协议。

2. Linux下访问DNS服务

我们要访问DNS服务,就必须要先知道DNS服务器的IP地址。Linux使用/etc/resolv.conf文件来存放DNS服务器的IP地址。在Ubuntu上,该文件的内容如下:

第一个IP地址代表DNS服务器地址。

Linux下一个常用的访问DNS服务器的客户端程序是host,比如下面的命令是向着DNS服务器127.0.0.1查询机器www.baidu.com的IP地址:

host命令的输出告诉我们,机器名www.baidu.com是www.a.shifen.com的别名,并且该别名对应着两个IP地址。host命令使用DNS协议和DNS服务器通信,其-t选项告诉DNS协议使用哪种查询类型。我们这里使用的是A类型,即通过机器的域名获取其IP地址(但实际返回资源中还包含着机器的别名)。关于host命令的详细使用方法,请参考man手册。

3.使用TCPDUMP观察DNS通信过程

为了看清楚DNS通信过程,下面我们将从Ubuntu上面运行host命令一查询主机www.baidu.com对应的IP地址,并使用tcpdump抓取这一过程中LAN上传输的以太网帧的数据包,具体操作如下:

这一次执行tcpdump抓包时,我们使用“port domain”来过滤数据包,表示只抓取domain域名服务的数据包,即DNS查询和应答报文,tcpdump的输出如下:

这两个数据包开始的“IP”指出,他们后面描述的内容是IP数据报。tcpdump以“IP地址:端口号”的形式来描述通信的某一端:以“>”表示数据传输方向,“>”前面是源端,后面是目的端。第一个数据包是测试机器Ubuntu(IP地址是192.168.48.2.53)发送的DNS查询报文(目标端口53是DNS服务器使用的端口,这一点我们在前面介绍过),第二个数据包是服务器反馈的DNS应答报文。

原文地址:http://blog.51cto.com/13813797/2156558

时间: 2024-11-10 01:51:35

DNS工作原理讲解的相关文章

TCP/IP协议族——ARP、DNS工作原理及实例详解

 测试网络: 通过VMware创建了两个虚拟机,并利用桥接方式联网以此模拟两台主机连接一台路由器的情况.测试网络图如下: ARP协议工作原理 ARP协议能实现任意网络地址到任意物理地址的转换,这里仅讨论IP地址到以太网地址(MAC地址)的转换.其工作原理是:主机向自己所在网络广播一个ARP请求,该请求包含目标机器的网络地址.此网络上的其他机器都将接收到这个请求,但只有被请求的目标机器会回应一个ARP应答,其中包含自己的物理地址. 以太网ARP请求/应答报文 以太网ARP请求/应答报文格式如下

DNS简介、DNS工作原理、DNS正反向解析的搭建、DNS主从备份、DNS子域创建

一.DNS简介DNS 域名系统(Domain Name System)万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记让人头疼的一大串数字.根服务器:13组服务器负责DNS解析通过域名去查找ip地址的过程叫做域名解析通过ip地址去查找域名的过程叫做反向解析DNS协议运行在UDP协议之上,端口号53通常 Internet 主机域名的一般结构为树状结构:主机名.三级域名.二级域名.顶级域名. 二.DNS工作原理1.dns查询方式可分为递归查询和迭代查询递

DNS工作原理,正反向解析及主从同步

dns基本工作原理,及正反向解析和主从同步一.定义      DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析.      BIND:bekerley internat name daemon, 网络域名管理软件.二.原理 1.DNS 服务器的类型 主DNS服务器 (域内的域名解析,由管理员维护) 从D

MapReduce工作原理讲解

有时候我们在用,但是却不知道为什么.就像苹果砸到我们头上,这或许已经是很自然的事情了,但是牛顿却发现了地球的万有引力.ok了,希望通过了解MapReduce,我们能够写出更好的MapReduce例子.第一部分:MapReduce工作原理<ignore_js_op> <ignore_js_op> MapReduce 角色•Client :作业提交发起者.•JobTracker: 初始化作业,分配作业,与TaskTracker通信,协调整个作业.•TaskTracker:保持JobTr

OAuth 授权过程工作原理讲解

转自:http://www.imooc.com/article/10931 在一个单位中,可能是存在多个不同的应用,比如学校会有财务的系统会有学生工作的系统,还有图书馆的系统等等,如果每个系统都用独立的账号认证体系,会给用户带来很大困扰,也给管理带来很大不便.所以需要设计一种统一登录的解决方案.比如我登陆了百度账号,进贴吧时发现已经登录了,进糯米发现也自动登录了.常见的有两种情况,一种是SSO(单点登录)效果是一次输入密码多个网站可以识别在线状态:还有一种是多平台登录,效果是可以用一个账号(比如

DNS工作原理

DNS分为Client和Server,Client扮演发问的角色,也就是问Server一个Domain Name,而Server必须要回答此Domain Name的真正IP地址.而当地的DNS先会查自己的资料库.如果自己的资料库没有,则会往该DNS上所设的DNS服务器询问,依此得到答案之后,将收到的答案存起来,并回答客户.DNS服务器会根据不同的授权区(Zone),记录所属该网域下的各名称资料,这个资料包括网域下的次网域名称及主机名称.

lvs,dhcp,dns,lnmp,lamp,zabbix,nagios,hadoop,openstack,rsync等工作原理

一.客户端获取DHCP的过程 1.客服端通过广播发送    DHCPdiscovery包,寻找DHCP服务器数据包 源IP:0.0.0.0    目的地址:255.255.255.0 无响应:等待1秒,发送第二次.等待9秒,发送第三次.13.16. 有相应: 2.服务器提供地址信息    DHCPoffer包 用客户端MAC地址回应 数据包中包含IP地址.租约信息等 3.客户端接受并广播 发送    DHCPrequest广播包,告知网络中所有DHCP主机 发送arp包,检查IP是否可用,若被占

DNS工作流程及原理 域名、IP与DNS的关系

转自:http://blog.csdn.net/maminyao/article/details/7390208 一.DNS服务概述 DNS是Domain Name System的缩写,即域名系统.其实,DNS是internet的一项服务,一般叫域名服务或者域名解析服务,主要提供网站域名与IP地址的相互转换的服务.域名解析分文争相解析与反向解析,正向解析是将主机名转换成IP地址的过程,域名的反向解析是将IP地址转换成主机名的过程.通常我们很少需要将IP地址转换成主机名.其中,反向解析经常被一些后

【详解】DNS服务工作原理、正反向解析和主从同步

目录: 一.理论部分 二.实验部分 ******************************理论部分*************************************** 正文: 一.什么是DNS服务. DNS服务是互联网的基础性服务之一.全称为Domain Name System(域名系统).DNS是因特网上作为域名和IP地址相互映射的一个分布式数据库,提供将域名转换成对应IP地址的信息条目,能够使用户更方便的通过域名(如baidu.com)去访问互联网,而不用去记住能够被机器直接