DNS工作原理
一、简述dns
DNS(domain name system)域名系统或者(domain named system)区域名称服务,分为正向与反向域名解析,适用C/S,端口路53/udp,53/tcp,属于应用层协议;
作用:人得记忆有限,如果没有dns得记下多少IP地址;从网络来说由于tcp/ip协议族是基于ip地址,所以需要一个翻译器即DNS;可以1对多也可以多对1,那么正向解析即域名解析为ip地址,反向解析即ip地址解析为域名。有人说DNS就是一个本大得电话本,说的挺贴切。
正反向解析事两个不同得名称空间,是两颗不同得解析树;
正向:ip---》主机名
反向:主机名---》ip
当今得业界标准BIND(berkeley internet name domain)dns软件
二、DNS域名
1)DNS是一个倒挂树结构示意图如下
2)按照功能命名得五个类别介绍
根域:DNS域名中使用时,规定由尾部据点(.)来指定名称位于根域或更高级别得域层次结构,(.)
顶级域:TDL(TOP LEVEL DOMAIN)用来只是某个国家地区或组织使用得类型,例如(.com)
二级域:个人或组织在internet上使用得注册名称,例如163.com
子域:已经注册二级域名派生得域名,就是网站名,例如www.163.com
主机名:通常情况下,DNS域名得最左侧得标签表示网络上得特定计算机,如www,mail,zhidao
名称服务器:域内负责解析本域内的名称的主机
根服务器:13组服务器
3)dns和internet域
互联网域名系统有名称注册机构负载维护分配有组织和国家/地区得顶级域在internet上进行管理。国际标准3166。
常见得DNS域名
com,商业公司
edu,教育机构
net,网络公司
gov,非军事政府机构
mil,军事政府机构
cn,代表中国
三、DNS服务器类型
主DNS服务器
从DNS服务器 (可以是多个提供容错)
缓存DNS服务器(转发器)
主DNS服务器:管理和维护所负责解析的域内解析库的服务器
从DNS服务器:从主服务器或从服务器“复制”(区域传输)解析库副本
1)复制操作的方式
序列号serial:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔refresh:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔retry:从服务器请求同步失败时,再次尝试时间间隔
过期时长expire:从服务器始终联系不到服务器时,多久后放弃从服务器角度,停止提供服务
否定答案的缓存时长;minimum
”通知“机制:主服务器解析库发送变化时,会主动通知从服务
2)区域传送
完全传输axfr:传送整个解析库
增量传输lxfr:传递解析库变化的那部分内容
3)区域(zone)和域(domain)
Domain:FQDN
正向:FQDN->IP
反向:IP->FQDN
各需要一个解析库来分别负责本地域名的的正向和反向解析库
正向区域
反向区域
FQDN:fullqualified domain name 完全限定域名
如:www.baidu.com.
四、DNS查询解析
我们在浏览器访问www.baidu.com这个域名,dns怎么查询到这台主机那?
1、在浏览器中输入www.baidu.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个ip地址映射,完成域名解析。
2、如果hosts里没有这个域名的映射,则会查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析记过给客户端,完成域名解析,此解析具有权威性。
4、如果要查询域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(baidu.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找baidu.com域服务器,重复上面的动作,进行查询,直至找到www.baidu.com主机。
6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把请求转至上上级,以此循环。不管是本地DNS服务器用是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
从上图可以知道,客户端到本地DNS服务器是属于递归查询,而DNS服务器之间的交互查询就是迭代查询
递归查询与迭代查询
递归,只发送一次请求,得到一次准确结果(消耗资源)
迭代,发送多次请求,得到参考结果
一次完整得查询请求经过得流程
client-->hosts文件-->DNS service
local cache -->DNS server(recursion递归)-->server cache -->iteration(迭代)
解析答案
肯定答案
否定答案:请求的条目不存在等原因导致无法返回结果
权威答案:aa 表示是自身知道的结果,不是问来的
非权威答案
五、资源记录(resoursr record,简写RR)
1、简单介绍资源记录
资源记录事组成DNS各域记录,这些记录类型有:A,AAAA,PTR,SOA,NS,CNAME,Mx等
SOA 起始授权记录,(start of authority),一个区域解析库有且仅能有要给SOA记录,而必须为解析库的第一条记录;
NS(nameserver)得缩写,专用于表明当前区域的DNS服务器
A (address),后面记录得对应ipv4地址;FQDN-->IP
AAAA 对应得ipv6地址;FQDN-->IPV6
PTR (pointTER)指针,后面记录得数据就是反解到得主机名;IP-->FQDN
CNAME 别名,一个主机名可以有多个别名,但ip地址事一样得;
MX 邮件服务器;
资源记录定义的格式:
语法格式:
name[TTL] IN rr_type(资源记录类型) value(可以是多个)
rr_type:替换为指定的资源记录类型;
ttl可以省略从全局继承 internet
注意:
1)TTL就是time to live,可以从全局继承,默认秒为单位;
2)@可以用于应用当前区域得名字比如baidu.com;
3)同一个名字可以通过多条记录定义多个不同得值,此时DNS服务器会以轮询方式响应,可以分流做负载均衡;
4)同一个值也可能有多个不同得定义名字;通过多个不同得名字指向同一个值进行定义;仅表示通过多个名字可以找到同一个主机而已;
2、SOA:一个区域中有且只能有一个soa
name:当前区域的名字,例如“zhangxingeng.com.”;最后记得有各点
value:有多个部分组成
1)当前区域的主DNS服务器的FQDN,也可以适用但却区域的名字;
2)当前区域管理员的邮箱地址;但地址中不能使用@服务,一般用.替换,zxg.zhangxingeng.com
3) 主从服务区域传输相关定义以及否定的答案的统一的TTL
[root@node5 ~]# cat /var/named/zhangxingeng.com.zone
$TTL 1D
3 @ IN SOA @ web1.zhangxingeng.com.admin.zhangxingeng.com (
; serial #序列号-最后不要超过10位数
1D ; refresh #刷新时间1天
1H ; retry #重试时间
1W ; expire #过期时间,一周
3H ) ; minimum #否定答案的ttl值,3个小时
NS web1
web1 A 192.168.216.199
dns1 A 192.168.216.198
3、NS记录格式
name:当前区域的名字
value:当前区域的某个DNS服务器的名字,例如web1.zhangxingeng.com
注意:一个区域可以由有多个NS记录
例如:
zhangxingeng.com. IN NS web1.zhangxingeng.com
zhangxingeng.com. IN NS web2.zhangxingeng.com
注意:
1)相邻的两个资源记录的name相同时,后续的可省略
2)对NS记录而言,任何一个ns记录后面的服务器名字,都应该再后续有一个A记录
4、MX记录定义格式
name:当前区域的名字
value:当前区域的某邮件服务器(smtp服务器)的主机名;
一个区域内,MX记录可有多个;但每个记录的value之前以你更改有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高;
例如:
zhangxingeng.com. IN MX 10 mx1.zhangxingeng.com.
IN MX 20 mx2.zhangxingeng.com.
注意:
1)对MX记录而言,任何一个MX记录后面的服务器名字,都应该再后续有一个A记录;
5、A记录定义格式
name:某主机的FQDN,例如web1.zhangxingeng.com
value:主机名对应主机的ip地址;
例如
web1.zhangxingeng.com. IN A 192.168.216.199
web2.zhangxingeng.com. IN A 192.168.216.202
注意:
*.zhangxingeng.com. IN A 192.168.216.199
zhangxingeng.com. IN A 192.168.216.199
避免用户写作名称时给错误答案,可以通过泛域名解析进行解析至特定地址;
6、PTR记录定义格式
name:IP,有特定格式,把IP地址反过来写,199.216.168.192;而有特定后缀:in-addr.arpa.,所以完整写法为:199.216.168.192.in.addra.arpa.
value:FQDN
例如:
199.216.168.192.in.addra.arpa. IN PTR web1.zhangxingeng.com.
简写
199 IN PTR web1.zhangxingeng.com.
注意:网络地址及后缀可省略;主机地址依然需要反这写
7、CNAME记录定义格式
name:别名的FQDN
value:正规名字的FQDN;
例如:
web1.zhangxingeng.com. IN CNAME www.zhangxingeng.com
部分概念参考http://blog.51cto.com/369369/812889,并用里面的拓扑图重新画了一下,谢谢。
转载请注明出处:https://www.cnblogs.com/zhangxingeng/p/9970733.html
DNS工作原理的更多相关文章
- DNS 工作原理是什么,域名劫持、域名欺骗、域名污染又是什么
DNS 工作原理是什么,域名劫持.域名欺骗.域名污染又是什么 2014年11月27日 10:05:40 阅读数:6726 标签: dns网络互联网顶级域名递归 更多 个人分类: 网络学习 一.DN ...
- Windows客户端DNS工作原理
通常大家对Windows客户端DNS的配置存在多个误区. 误区一,配置1个内网DNS,1个外网DNS.解析内网的时候用内网DNS,解析外网的时候用外网. 电脑怎么知道哪个是内网?哪个是外网?我们内部的 ...
- 1-趣味解读DNS工作原理——转载疯猫网络科技
因为只要我们输入百度.腾讯.淘宝的名字,无论它们的服务器在哪里,历经多少轮查询,我们都能找到并访问之.这就是计算机网络中著名的域名系统DNS(Domain Name System),它能实现把一个网站 ...
- 简单谈谈DNS的工作原理及实践
DNS协议简介 dns(Domain Name System)是一个全球化的分布式数据库系统,用于存储域名和互联网IP地址的映射关系.dns协议是计算机协议栈应用层中,应用最广泛的协议之一.用户每一次 ...
- DNS工作流程及原理 域名、IP与DNS的关系
转自:http://blog.csdn.net/maminyao/article/details/7390208 一.DNS服务概述 DNS是Domain Name System的缩写,即域名系统.其 ...
- DNS域名系统,简述工作原理
DNS工作原理: 当DNS客户端需要在程序中使用名称时,它会查询DNS服务器来解析该名称.客户端发送的每条查询信息包括三条信息:指定的DNS域名,指定的查询类型,DNS域名的指定类别.基于UDP服务, ...
- DNS查询的工作原理
二.DNS查询的工作原理 1.DNS查询过程按两部分进行 1.名称查询从客户端计算机开始, 并传送给本机的DNS客户服务程序进行解析 2.如果不能再本机解析查询, 可根据设定的查询DN ...
- DNS的工作原理及解析
DNS协议是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识. 一.什么是DNS? DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次 ...
- HTTPS工作原理
HTTPS是什么 HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer,及以安全为目标的HTTP通道,简单说就是HTTP的安全版本. ...
随机推荐
- influence maximization
Robust Influence Maximization 首先简要介绍一下这个问题:在一个社交网络图中寻找固定数量的节点,使得这些节点对所有节点的影响值尽可能的大.这个问题由于在病毒式营销,谣言监控 ...
- 用clock()函数计时的坑
程序中经常用time()函数来返回当前系统时间的秒数,来计时或计算时间差.如果需要用到更高精度的时间,就会自然想到用clock()函数.想当然的认为它返回从程序开始tick数,用clock()/CLO ...
- MVC概述
学习MVC模式 一.MVC简介 MVC是Model-View-Controller的简称,即模型-视图-控制器.MVC是一种设计模式,它把应用程序分成三个核心模块:模型.视图.控制器,它们各自处理 ...
- javascript中数组总结
数组是所有高级语言都会有的东西,数组是JS中使用最多的类型之一,所以掌握JS中数组的用法相当有帮助: 由于JS是一门弱类型的语言,所以数组里面可以放各种不同的数据类型,比如 var a = [1993 ...
- spring-data-redis和jedis版本对应收集总结
基于spring主版本为4.3.13.RELEASE的项目,测试以下对应版本可用. spring-data-redis版本 jedis版本 备注 1.5.2.RELEASE 2.7.3 1.6.0 ...
- Java虚拟机:内存分配策略
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! Java中提倡的自动内存管理机制最终可以归结为自动化的解决两个问题:给对象分配内存和回收分配给对象的内存.在之前的博客中已经详细讲解了内存 ...
- 深入分析.NET应用程序SQL注入【危害】
前言: 前面我们已经简单的剖析了一下.NET应用程序SQL注入.没有看过的朋友移步:http://bbs.ichunqiu.com/thread-7636-1-1.html,在上一篇文章我们已经了 ...
- java数据结构面试问题—快慢指针问题
上次我们学习了环形链表的数据结构,那么接下来我们来一起看看下面的问题, 判断一个单向链表是否是环形链表? 看到这个问题,有人就提出了进行遍历链表,记住第一元素,当我们遍历后元素再次出现则是说明是环形链 ...
- centos安装discuz论坛
wget http://download.comsenz.com/DiscuzX/3.3/Discuz_X3.3_SC_UTF8.zip #下载最新版Discuzunzip Dis......zip ...
- vi命令详解(转)
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...