DNS(一)抽象理解DNS

DNS 是网络上非常重要的一个概念,不仅仅是码农任何上网的人都会接触它,DNS 是非常复杂,这篇文章希望以比较简单的方式去理解它,让非码农也能了解基本概念,从而有效的去运用它。

DNS 是干什么的

当我们在浏览器输入一个网址访问资源的时候,浏览器怎么知道资源在哪儿呢?必须要有一个 IP 地址,浏览器才能和放置资源的服务器连接。而 DNS 的作用其实就是翻译域名,获取这个域名对应的 IP 地址。

那为什么不直接使用 IP 地址访问服务器的资源,原因很简单,IP 地址太难记忆,另外服务器绑定的 IP 可能变化,而浏览器是不知道这个变化的。

对于我们上网的人来说,谁在提供 DNS 服务呢?或者说谁在翻译这个 IP 地址呢?不同的操作系统有不同的方式。

在 Windows 中,可以在控制面板网络连接中配置,一般有两种方式:

  • 自定义配置一个 DNS 服务器
  • 由 ISP 或者局域网 DHCP 协议进行分配。

这种 DNS 服务器称为本地 DNS 服务器,由它来负责 IP 解析工作。

一旦配置好本地 DNS 服务器后,在电脑上任何软件(比如浏览器)想使用 DNS 翻译功能就会向本地 DNS 服务器发出请求。

在 Linux 中,是通过 /etc/resolv.conf 文件配置本地 DNS 服务器。

对于大部分上网的人来说,了解本地 DNS 服务器如何配置就可以了,一般 DNS 服务器会自动分配,比如在家里你通过宽带上网,使用的本地 DNS 服务器一般是这个 ISP 提供的。

DNS 是一个数据库

DNS 首先是一个巨大的数据库,这个数据库是有层级关系的,而且是分布在世界各地的。那么域名是如何映射到这个数据库中的呢?首先来理解几个概念。

(1)域名

一个域名表示你拥有了互联网的一个资源,通过域名也能了解到一个组织的主人是谁,比如 google.com 表示谷歌这个组织拥有的一个互联网资源。

子域名,主要是一个企业为了规范化自己的域名系统和服务,而在一级域名下扩展出来的名称系统。newyingyong.cn 这个域名是我的,每开发一个项目就会新扩展一个子域名,比如 http://www.rss.newyingyong.cn 这个服务的子域名就是 rss.newyingyong.cn

其实对于 .com 域名来说,google.com 就是它的子域名,这体现了域名系统或者说 DNS 系统的层级性。

(2)主机

通过域名,我们能够定义一个主机,比如大部分 WEB 服务,默认的主机名就是 WWW。
google.com 其实隐藏了默认的主机名,实际上等同 www.google.com ,www 是 google.com 这个域名下定义的虚拟主机。

(3)Fully Qualified Domain Name

FQDN 叫做绝对域名名称,由主机名和域名组合而成,注意一个完整的 FQDN 末尾有一个点号。比如 www.google.com. 代表一个 FQDN。

现在来说说 DNS 系统的层级数据库,DNS 最顶层是点号(.),叫做 ROOT 根域名。接下来是 TLDs,表示顶级域名,顶级域名分为两种类型:

  • .com,.org 这样的叫做一般通用顶级域(gTLDs)
  • .cn,.jp 这样的叫做国家顶级域(ccTLDs)。
pic1

层级系统的意思表示在这个数据库中,根域名服务器管理顶级域服务器,而顶级域管理一级域名服务器,最后一个域名服务器管理具体主机的 IP 信息。

实体 DNS 服务器

上面说了 DNS 是一个数据库,那么这个数据库的组成部分就是具体的服务器,这些服务器来维护 DNS 信息。而维护是通过授权方式的,而且是一级授权。

(1)根域名服务器

根域名服务器由 ICANN 来管理,在全球有 13 个根域名服务器,每个根域名服务器由多台机器。分布在全球各地,查询量非常大,所以分布在各地是有原因的。根域名服务器主要负责解析 TLD 服务器。

(2) TLD 服务器

TLD 服务器负责解析 Domain-Level 服务器。

(3)Domain-Level 服务器

这个服务器一般告之某个域名解析出来的 IP 地址,比如 www.google.com ,由负责管理 google.com 域名的服务器解析 IP 地址,这个层级的服务器叫做 Domain-Level 服务器 。

通过上面看出,每个层级的域名服务器负责管理他能管辖的域名,而且他也只管理他下一级的,不会跨级别管理,原因就是授权。这相当于一个公司,CEO 管理总经理,总经理管理经理,经理管理具体的员工,一般不会跨级别管理,因为事情做的太多就没有效率了。

以上的服务器也统称为权威域名服务器。他们来负责维护具体 DNS 的信息。

DNS 是如何具体工作的

客户端会发送一个命令告诉本地 DNS 服务器,告诉我 www.google.com. 这个 FQDN 的 IP 地址(A 记录),然后就等着拿结果,这种查询方式叫做递归查询。注意区分本地域名服务器和权威域名服务器的区别。本地域名服务器理论上只是查询,没有维护 DNS 信息。

本地 DNS 服务器最终会找出具体的 IP 地址,但是这个步骤不是一步到位的,可能有很多步骤,这种查询方式叫做迭代查询。

本地 DNS 服务器也叫做 Hinet 服务器,也叫做 Resolving Name Server。这样的服务器一般由本地 ISP 提供或者由其他组织提供,比如 Google 的 8.8.8.8 域名服务器。

借用《鸟哥私房菜》的图来说明:

pic2
  • 本地 DNS 服务器发现没有 www.google.com 域名对应的 IP 地址,就会向根域名服务器发出查询任务。根域名服务器说,我只知道 .com 这个 TLD 服务器的 DNS 信息,你去问他把,并且返回 .com 服务器的地址。
  • .com 服务器说我不知道,但是知道这个域名由谷歌自己维护(Domain-Level 服务器 )的,你去问他把,并且返回谷歌 NS 服务器的 IP 地址,由它来告诉调用者。
  • 本地 DNS 服务器联系上 Google 的 NS 服务器后,NS 这台机器上的 DNS 软件说,这是我维护的,然后把具体的 IP 地址告诉了本地 DNS 服务器。本地 DNS 服务器会缓存这一结果,然后告诉客户端(比如浏览器)。

这里出现了两个新的名词,Resolving Name Server 负责具体的 DNS 查询工作(也叫本地 DNS 服务器),中国很多 ISP 很不厚道,提供的 DNS 服务器会进行 DNS 污染操作,假如为了安全可以使用一些其他组织的 DNS 服务器,比如 8.8.8.8

另外一个服务器叫做 NS 服务器,这个告诉调用者,具体那台机器维护某个域名的 DNS 信息(比如 A 记录),为了获取某个域名的 IP 地址,需要去向它查询,理解身上有些拗口。

上个例子中根域名服务器或者顶级域名服务器告诉调用者(本地 DNS 服务器)去具体某个 NS 服务器去查询 DNS 信息,而最后到了 Google 的 NS 服务器后,这台 NS 服务器就会直接解析域名对应的 A 记录了。

申请域名后应该干什么

对于个人用户来说,申请域名后(newyingyong.cn)(同时有了个 IP),就要进行域名的解析工作了,比如说我在万网(域名注册机构)买了个域名,阿里云买了个主机,默认就是在万网(域名管理机构)进行域名解析工作的,万网的 NS 服务器名称是 dns1.iidns.com.,在万网(域名管理机构)后台,配置域名(实际上是主机)和 IP 地址即可。

![DNS][2017-dns3]
[2017-dns3]: http://notes.newyingyong.cn/static/image/2017/dns3.png "DNS"

假如你要更改一个域名管理机构(比如 DNSPod)负责域名及诶工作,你的域名注册机构管理后台配置 NS 服务器是 DNSpod 就可以了,由他们负责域名的解析工作。

发现没有,这里体现了 DNS 系统的授权特性,授权域名管理机器去管理这个域名的 DNS 信息。

那么背后发生了什么?一旦由 DNSPod 负责解析工作,它会做两件事情:

  • 告诉它的上一级域名服务器,newyingyong.cn 这个域名的解析工作由我的 NS 服务器来管理,请登记下。
  • 在自己的 DNS 服务器上增加一条记录,记录相应主机的 A 记录(当然还有其他的类型的 DNS 记录,比如 MX 记录)。

假如是一家大型公司,比如有很多一级域名或者很多子域名,可能想自己维护 DNS 信息,那么就要自己搭建一个 DNS 服务器,然后在自己的域名管理机构配置 NS 服务器即可,这个 NS 服务器的地址就是你自己的服务器,负责维护域名的 DNS 信息。比如 sina.com.cn 的域名服务器就是自己维护的,名称是 ns1.sina.com.cn.,这台服务器地址是 202.106.184.166。

那么为什么大型机构希望维护自己的域名信息呢?

  • 方便管理,假如不自己维护域名信息,域名生效时间和缓存时间都是不可控的,而自己搭建可以避免这些问题。
  • 动态管理,比如通过一些软件来更新自己的 DNS 信息更方便,还可以做动态域名解析。

DNS 是个协议

DNS 是个数据库,更是个协议,默认使用 UDP 协议,端口号是 53,很多客户端(比如浏览器和 dig)通过这个协议,查询出了某个域名的 A 记录。

而 DNS 服务器为了管理,一般使用 BIND 这个软件来提供具体的服务(服务器端)。

这篇文章简单讲了下 DNS 的基本概念,有点枯燥,后面会通过 dig 命令能理解 DNS,也会将如何搭建 DNS 服务器。

大家可以思考下,DNS 的缓存是什么概念,DNS 污染是什么,什么是动态 DNS,什么是泛域名,为什么 NS 服务器一般有多台,为什么自己电脑上配置本地的 DNS 服务器有多台。

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

推荐阅读更多精彩内容

  • 1. 概述 在网络环境中一般用户只需要在浏览器中输入url如www.sunny.com就可以到对应服务器获取相应的...
    ghbsunny阅读 2,672评论 0 7
  • 目录: 一些基本概念主机名DNS名称解析DNS 解析的后端存储名称解析总结 大规模域名解析的体系架构DNS 解析需...
    C86guli阅读 12,369评论 3 34
  • 最近,终于要把《WEB请求处理系列》提上日程了,一直答应小伙伴们给分享一套完整的WEB请求处理流程:从浏览器、Ng...
    七寸知架构阅读 29,372评论 27 251
  • DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能...
    一直在努力hard阅读 4,528评论 3 19
  • DNS 是什么 DNS (Domain Name System), 也叫网域名称系统,是互联网的一项服务。它实质上...
    interstellar多米诺阅读 2,719评论 0 6