浅谈DNS基本原理以及实现方法(一)

DNS(Domain Name System,域名系统),是目前互联网上最不可或缺的服务器之一,我们在互联网从访问一个网站,到发送一封电子邮件,再到定位域中的域控制器,无时无刻不再使用着DNS为我们提供的服务,那为什么我们会需要这样一个服务那?带着这样一个疑问让我们先来认识一下什么是DNS吧

 DNS最核心的工作就是域名解析,也就是把计算机名翻译成IP地址,这样我们就可以按照自己容易理解的方式来为一台主机或者一个网站取一个名字,其他人也就可以通过这个名字来访问我们的主机或者网站了,而不必去记住那些枯燥晦涩的IP地址,只有计算机才会才更容易理解那些地址,其实早在1969年互联网就诞生了,虽然早期的互联网的规模比较小,到70年代互联网也只有几百台主机而已,这样每台主机之间相互访问的就有一个比较简单的办法,就是每台主机利用一个hosts文件就可以把互联网上所有的主机都解析出来,hosts文件也计较简单,就是每一行记录一个主机对应的IP地址,在当时,这样一个解决方案是可以满足需要的,但是随着互联网规模的迅速膨胀,这样一个仅仅靠hosts文件来识别网络中主机的方案,显然是不合适的,就按保守的算互联网中有1亿台主机,什么的hosts文件能存放1亿条记录那?而且每时每刻这些记录都有可能变化,这也就是为什么现在会有需要的DNS服务的原因了。

早期互联网利用host文件来定位其他主机位置的方法其实就是完全分散的解析方案,每台主机都自己负责名称解析,而DNS的出现就仿佛在告诉世人,域名解析这个事由我一个人来解决,你们只要给我发请求我就回答这个域名的地址是什么,我们都知道,如果真有这样的一个DNS服务器的话,这个DNS服务器将会面临多大的流量压力,这个DNS服务器里面的解析条目会不会有极限,如何及时的更新这些解析条目,每一个问题都将使这台DNS服务器的陷入绝境,那DNS的设计者们是怎么样处理这些问题的那?

首先DNS采用的是分布式解决方案,具体是这样的,互联网管理委员会规定,域名的解释权都归根服务器所有,而根服务器通过委派,把com结尾的域名解析权委派给其他的DNS服务器,以后所有以com结尾的域名根服务器就都不负责解析了,而是由被委派的服务器负责解析,而且根服务器还把以net、org、edu、gov等等结尾的域名都一一进行进行了了委派,每个顶级域名都有预设的用途,例如com域名用于商业公司,edu域名用于教育机构,gov域名用于政府机关等等,这种顶级域名也被称为顶级机构域名。根服务器还针对不同国家进行了域名委派,例如把所有以cn结尾的域名委派给中国互联网管理中心,以jp结尾的域名委派给日本互联网管理中心,cn、jp这些顶级域名被称为顶级地理域名。每个被委派的DNS服务器同样使用委派的方式向下发展,例如新浪公司想申请使用sina.com域名,这时新浪公司就要向负责.com域名的DNS服务器提出申请,只要sina.com还没有被其他公司或个人使用,而且申请者按时足额缴纳了费用,负责.com域名的服务器就会把sina.com域名委派到新浪公司自己的DNS服务器,这时候你就知道一个域名对一家互联网公司来讲有多重要了吧,

让我们来看下面这张图,我想学过linux的同学就会觉得很熟悉,这不就是linux系统的目录结构吗,同时在公司待过一段时间的小伙伴也一样会觉得很熟悉,这不就是一家现代公司的组织架构吗,总经理就好比最上层的根,其他的部门经理就好比以com、net、org结尾的域名解析服务器一样,根域名服务器和总经理一样不负责任何一个具体的事务,只是把解析权授权给其他的域名服务器,


        有了上面的认识以后,对于我们来了解一个域名具体的解析过程有着很大的帮助,一次DNS的工作过程是怎么样的那,首先DNS的查询类型分为递归查询和迭代查询;

递归查询:一次查询就得到最终的结果,通常是客户端与本地DNS服务器之间会使用递归查询。

    迭代查询:有可能发生多次请求,且每次得到的结果有可能只是参考答案,通常是DNS服务器直接会使用迭代查询。

 1)首先客户端怎样发起一个DNS查询请求,例如此时你在浏览器地址栏输入www.163.com敲回车之后,那么浏览器并没有发起DNS请求,而是先查询本机的DNS缓存中是否有该域名对应的地址,有的话直接访问该地址,没有的话查询本机的hosts文件,如果刚好你本机的hosts文件中有该域名对应的地址,那么此刻客户端是不会发起dns请求的,但是通常情况下本地的host文件是空的,所以就有了第二步

 2)经历是前面两次本机内部的查询之后发现并没有该域名对应的IP地址,于是客户端正式向本地的DNS服务器发起DNS查询请求。

 3)本地的DNS服务器收到这个查询请求后,会查询自己的缓存中以及自己的资源记录中是否有该域名对应的IP地址,如果在自己的缓存中以及本机的资源记录中依然找不到该对应的IP地址,此时本地DNS服务器会把请求发送给大名鼎鼎的13台根服务器中的一台,

 4)其中一台根服务器收到这个请求后,会发送一个回复说,.com的域名解析服务我已经委派给.com这台域名服务器了,给你这个.com这台域服务器的地址,你去哪里查询吧,此时本地DNS服务器就进入了迭代查询。

 5)本地DNS服务器收到这个参考答案后,就会将它收到来自客户端的DNS请求再次发往.com域名服务器。

 6)负责.com域名解析服务器收到这个请求后,会回复说163.com的主区域服务器应该会知道答案,给你163.com主区域服务器的地址,你去它那里查询吧。

 7)本地DNS服务器收到这个参考答案后,就会将它收到来自客户端的DNS请求再次发往163.com主区域服务器,当163.com这个主区域服务器收到这个DNS请求后,查询自己的缓存以及自己的资源记录,终于找到本区域内有一个www的主机。于是将www.163.com对应的ip地址回复给本地DNS服务器。

 8)此时本地DNS服务器收到这个回复后,会将这条记录回复给客户端,同时将该记录写入到自己的缓存中,以便备查。

以上只是简单的介绍了一个DNS请求的大致过程,当然实际的过程中要比这复杂的多,同时除了正向解析:FQDNàIP的解析之外,还包括反响解析:IPàFQDN。欢迎来一起讨论,

从上面DNS请求的过程可以了解到,客户端发送一个请求后,本地的DNS服务器就需要对不断的迭代查询客户端发起的这个请求到底是哪个地址,直到找到这个域名所对应的IP地址是什么为止,那这台DNS服务器具体是怎么工作的那?以及这台DNS服务器都有哪些部分组成那?接下来,让我们先来认识一下DNS服务器都有哪些类型,

1)主DNS服务器:维护所负责解析的域内解析库服务器,有管理员维护

2)辅DNS服务器:从主DNS服务器或者其他DNS服务器哪里复制(也叫区域传送)一份解析库,从服务器通过每次检测解析库的版本号,没到一次刷新时间间隔就会通过全局传送或者区域传送从主服务器上面更新解析库。

3)缓存DNS服务器:通常就是用来存储网络上用户需要的网页和内容的网络服务器。而DNS缓存服务器即是存在DNS信息,它可以将它收到的DNS信息存储下来,并再将其提供给其它的用户进行查询,直到这些信息过期

4)转发器:只做转发

从上面DNS服务器的类型上可以看出,主DNS服务器承担着重要的工作,那究竟我们的主DNS服务器如何工作的那?其实DNS服务器是通过由众多资源记录(Resource Record)这个区域解析库来完成解析,任何一台主DNS服务器都是如此,无论是windows平台上面使用的域控制器,还是linux平台的bind都是通过这些资源记录来完成解析过程。以下就是这些资源记录的类型以及语法格式,每条资源记录的语法都遵循

 name        [TTL]         IN    rr_type   value

SOA记录:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,而必须为解析库的第一条记录;

name: 当前区域的名字,例如“sina.com.”;

value: 有多部分组成

         (1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字。

         (2) 录前区域管理员的邮箱地址;但地址中不能使用@符号,一般用“.”替换。

         (3) 主从服务协调属性的定义以及否定的答案的统一的TTL。

A记录:internet Address,作用,FQDN(完全格式域名) –> IP

         name: 某主机的FQDN(完全格式域名);

   value: 主机名对应主机的IPv4地址;

AAAA记录: FQDN(完全格式域名)–> IPv6

name: 某主机的FQDN(完全格式域名);

         value: 主机名对应主机的IPv6地址;

PTR记录: PoinTeR,IP –> FQDN(完全格式域名),用于反向解析

    name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀

in-addr.arpa.,所以完整写法为:4.3.2.1.in-addra.arpa.;

value: FQDN(完全格式域名);

NS记录: Name Server,专用于标明当前区域的DNS服务器

   name: 当前区域的名字;

value: 当前区域的某DNS服务器的名字;

                   注意:一个区域可以有多个NS记录;

CNAME记录:Canonical Name,别名记录

   name: 别名的FQDN(完全格式域名);

value: 正式名字的FQDN(完全格式域名);

MX:记录Mail exchanger,邮件交换器,用于定位该区域中的邮件服务器

name: 当前区域的名字;

         value: 当前区域的某邮件服务器(smtp服务器)的主机名;

                   注意:一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高;

       以上的这些基础认识,对于我们配置windows下的DNS服务器,还是linux平台下bind都是必须要理解的,在下一篇博文中我会详细介绍linux平台下bind的正反向解析、主从同步、子域授权以及bind view,预知后事如何,且听下回分解。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • 1. 概述 在网络环境中一般用户只需要在浏览器中输入url如www.sunny.com就可以到对应服务器获取相应的...
    ghbsunny阅读 2,865评论 0 7
  • 目录: 一些基本概念主机名DNS名称解析DNS 解析的后端存储名称解析总结 大规模域名解析的体系架构DNS 解析需...
    C86guli阅读 12,475评论 3 34
  • 为什么需要DNS解析域名为IP地址? 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算...
    後来的後来hugh阅读 834评论 1 1
  • DNS简介DNS解析关键概念BIND 一、DNS简介: (一)DNS服务 DNS:Domain Name Serv...
    哈喽别样阅读 1,784评论 0 2
  • 1、前言 在当下互联网时代,我们日常生活和工作基本都离开不域名和 DNS ,如通过一个网址打开一个网站进行购物、使...
    cinder_lv阅读 3,529评论 1 27