【DNS】DNS的几个基本概念
一. 根域
就是所谓的“.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯。
根域服务器我们知道有13台,但是这是错误的观点。
根域服务器只是具有13个IP地址,但机器数量却不是13台,因为这些IP地址借助了任播的技术,所以我们可以在全球设立这些IP的镜像站点,你访问到的这个IP并不是唯一的那台主机。
具体的镜像分布可以参考维基百科。这些主机的内容都是一样的
二. 域的划分
有两种划分方式,一种互联网刚兴起时的按照行业性质划分的com.,net.等,一种是按国家划分的如cn.,jp.,等。
具体多少你可以自己去查,我们这里不关心。
每个域都会有域名服务器,也叫权威域名服务器。
Baidu.com就是一个顶级域名,而www.baidu.com却不是顶级域名,他是在baidu.com 这个域里的一叫做www的主机。
一级域之后还有二级域,三级域,只要我买了一个顶级域,并且我搭建了自己BIND服务器(或者其他软件搭建的)注册到互联网中,那么我就可以随意在前面多加几个域了(当然长度是有限制的)。
比如a.www.baidu.com,在这个网址中,www.baidu.com变成了一个二级域而不是一台主机,主机名是a。
三. 域名服务器
能提供域名解析的服务器,上面的记录类型可以是A(address)记录,NS记录(name server),MX(mail),CNAME等。
(详解参见博客:域名解析中A记录、CNAME、MX记录、NS记录的区别和联系)
A记录是什么意思呢,就是记录一个IP地址和一个主机名字,比如我这个域名服务器所在的域test.baidu.com,我们知道这是一个二级的域名,然后我在里面有一条A记录,记录了主机为a的IP,查到了就返回给你了。
如果我现在要想baidu.com这个域名服务器查询a.test.baidu.com,那么这个顶级域名服务器就会发现你请求的这个网址在test.baidu.com这个域中,我这里记录了这个二级域的域名服务器test.baidu.com的NS的IP。我返回给你这个地址你再去查主机为a的主机。
这些域内的域名服务器都称为权威服务器,直接提供DNS查询服务。(这些服务器可不会做递归哦)
四.解析过程
那么我们的DNS是怎么解析一个域名的呢?
1.现在我有一台计算机,通过ISP接入了互联网,那么ISP就会给我分配一个DNS服务器,这个DNS服务器不是权威服务器,而是相当于一个代理的dns解析服务器,他会帮你迭代权威服务器返回的应答,然后把最终查到IP返回给你。
2.现在的我计算机要向这台ISPDNS发起请求查询www.baidu.com这个域名了,(经网友提醒:这里其实准确来说不是ISPDNS,而应该是用户自己电脑网络设置里的DNS,并不一定是ISPDNS。比如也有可能你手工设置了8.8.8.8)
3.ISPDNS拿到请求后,先检查一下自己的缓存中有没有这个地址,有的话就直接返回。这个时候拿到的ip地址,会被标记为非权威服务器的应答。
4.如果缓存中没有的话,ISPDNS会从配置文件里面读取13个根域名服务器的地址(这些地址是不变的,直接在BIND的配置文件中),
5.然后向其中一台发起请求。
6.根服务器拿到这个请求后,知道他是com.这个顶级域名下的,所以就会返回com域中的NS记录,一般来说是13台主机名和IP。
7.然后ISPDNS向其中一台再次发起请求,com域的服务器发现你这请求是baidu.com这个域的,我一查发现了这个域的NS,那我就返回给你,你再去查。(目前百度有4台baidu.com的顶级域名服务器)。
8.ISPDNS不厌其烦的再次向baidu.com这个域的权威服务器发起请求,baidu.com收到之后,查了下有www的这台主机,就把这个IP返回给你了,
9.然后ISPDNS拿到了之后,将其返回给了客户端,并且把这个保存在高速缓存中。
下面我们来用 nslookup 这个工具详细来说一下解析步骤:
从上图我们可以看到:
第一行Server是:DNS服务器的主机名--210.32.32.1
第二行Address是: 它的IP地址--210.32.32.1#53
下面的Name是:解析的URL-- www.jsjzx.com
Address是:解析出来的IP--112.121.162.168
但是也有像百度这样的DNS比较复杂的解析:
你会发现百度有一个cname = www.a.shifen.com 的别名。
这是怎么一个过程呢?
我们用dig工具来跟踪一下把(linux系统自带有)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Dig工具会在本地计算机做迭代,然后记录查询的过程。
第三步,便向com.域的一台服务器192.33.4.12请求,www.baidu.com,他返回了baidu.com域的服务器IP(未显示)和名称,百度有四台顶级域的服务器【此处可以用dig @192.33.4.12 www.baidu.com查看返回的百度顶级域名服务器IP地址】。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
按照一般的逻辑,当dns请求到别名的时候,查询会终止,而是重新发起查询别名的请求,所以此处应该返回的是www.a.shifen.com而已。
但是为什么返回a.shifen.com的这个域的NS呢?
我们可以尝试下面的这个命令:dig +trace shifen.com 看看有什么结果。。。。。。。。
你会发现第三步时shifen.com这个顶级域的域名服务器和baidu.com这个域的域名服务器是同一台主机(即:dns.baidu.com)!
当我拿到www.baidu.com的别名www.a.shifen.com的时候,我本来需要重新到com域查找shifen.com域的NS,但是因为这两个域在同一台NS上,所以直接向本机发起了,
shifen.com域发现请求的www.a.shifen.com是属于a.shifen.com这个域的,
于是就把a.shifen.com的这个NS和IP返回,让我到a.shifen.com这个域的域名服务器上查询www.a.shifen.com。
于是我便从ns X .a.shifen.com中一台拿到了一条A记录,最终的最终也便是www.baidu.com的IP地址了.【此处也可以用dig +trace www.a.shifen.com】跟踪一下
用一个图来说明一下(图中第三步的全世界只有13台是错误的)
以下内容为在虚拟机中搭建local dns服务器得到的实验数据,纠正上述结论
在上面的分析中,我们用dig工具进行了追踪,但是dig没有继续追踪当我们从baidu.com拿到cname和ns2.a.shifen.com的IP之后的事情。
我们就所以然的下结论认为local dns会向ns2.a.shifen.com请求www.a.shifen.com。
其实这个想法是错误,在自己的本地搭建一个local dns,抓取整个解析过程中是所有包,看看就明白拉。
实际的结果是虽然dns.baidu.com返回了a.shifen.com域的服务器地址和IP,
但是local dns并不是直接向上述返回的IP请求www.a.shifen.com,而是再一次去请求com域,得到shifen.com域的服务器(也就是baidu.com的那四台),
然后又请求www.a.shifen.com,返回a.shifen.com的域的服务器,最后才是去请求www.a.shifen.com,
虽然上面已经返回了IP,但是实验的结果就是再走一遍shifen.com域的查询。
上图就是localdns在解析www.baidu.com的抓包全过程。蓝色那条就是在收到cname和响应的a.shifen.com的域名服务器IP地址之后,继续向com域请求shifen.com。
字母
|
IPv4地址
|
IPv6地址
|
自治系统编号(AS-number)
|
旧名称
|
运作单位
|
设置地点
#数量(全球性/地区性)
|
软件
|
---|---|---|---|---|---|---|---|
A
|
198.41.0.4
|
2001:503:ba3e::2:30
|
AS19836
|
ns.internic.net
|
VeriSign
|
以任播技术分散设置于多处
6/0
|
BIND
|
B
|
192.228.79.201
(2004年1月起生效,旧IP地址为128.9.0.107)
|
2001:478:65::53 (not in root zone yet)
|
none
|
ns1.isi.edu
|
南加州大学信息科学研究所
(Information Sciences Institute, University of Southern California)
|
美国加州马里纳戴尔雷伊
(Marina del Rey)
0/1
|
BIND
|
C
|
192.33.4.12
|
2001:500:2::C |
AS2149
|
c.psi.net
|
Cogent Communications
|
以任播技术分散设置于多处
6/0
|
BIND
|
D
|
199.7.91.13(2013年起生效,旧IP地址为128.8.10.90)
|
2001:500:2::D |
AS27
|
terp.umd.edu
|
马里兰大学学院市分校
(University of Maryland, College Park)
|
美国马里兰州大学公园市
(College Park)
1/0
|
BIND
|
E
|
192.203.230.10
|
AS297
|
ns.nasa.gov
|
NASA
|
美国加州山景城
(Mountain View)
1/0
|
BIND
|
|
F
|
192.5.5.241
|
2001:500:2f::f
|
AS3557
|
ns.isc.org
|
互联网系统协会
(Internet Systems Consortium)
|
以任播技术分散设置于多处
2/47
|
BIND
|
G
|
192.112.36.4
|
AS5927
|
ns.nic.ddn.mil
|
美国国防部国防信息系统局
(Defense Information Systems Agency)
|
以任播技术分散设置于多处
6/0
|
BIND
|
|
H
|
128.63.2.53
|
2001:500:1::803f:235
|
AS13
|
aos.arl.army.mil
|
美国国防部陆军研究所
(U.S. Army Research Lab)
|
美国马里兰州阿伯丁(Aberdeen)
1/0
|
NSD
|
I
|
192.36.148.17
|
2001:7fe::53
|
AS29216
|
nic.nordu.net
|
瑞典奥托诺米嘉公司(Autonomica)
|
以任播技术分散设置于多处
36
|
BIND
|
J
|
192.58.128.30
(2002年11月起生效,旧IP地址为198.41.0.10)
|
2001:503:c27::2:30
|
AS26415
|
VeriSign
|
以任播技术分散设置于多处
63/7
|
BIND
|
|
K
|
193.0.14.129
|
2001:7fd::1
|
AS25152
|
荷兰RIPE NCC
|
以任播技术分散设置于多处
5/13
|
NSD
|
|
L
|
199.7.83.42
(2007年11月起生效,旧IP地址为198.32.64.12)
|
2001:500:3::42
|
AS20144
|
ICANN
|
以任播技术分散设置于多处
37/1
|
NSD
|
|
M
|
202.12.27.33
|
2001:dc3::35
|
AS7500
|
日本WIDE Project
|
以任播技术分散设置于多处
5/1
|
BIND
|
【DNS】DNS的几个基本概念的更多相关文章
- Bind+DLZ构建企业智能DNS/DNS
Bind+DLZ构建企业智能DNS 目录:一.简介二.服务规划三.安装BIND及基本环境四.配置Bind-View-DLZ-MYSQL五.添加相关记录并进行测试六.配置从DNS七.补充 一.简介: ...
- DNS配置详解
DNS简介在Linux中,域名服务(DNS)是由柏克莱网间名域(Berkeley Internet Name Domain——BIND)软件实现的.BIND是一个客户/服务系统,它的客户方面称为转换程 ...
- DNS(一)简介
最近学习相关DNS知识,顺便总结下相关内容. 1.什么是DNS DNS(Domain Name System)服务,可以使用域名代替复杂的IP地址来访问网络服务器,使得网络服务的访问更加简单,而且可以 ...
- IP地址、子网掩码、网关、DNS服务器
1. IP地址 IP是英文Internet Protocol的缩写,意思是"网络之间互连的协议",也就是为计算机网络相互连接进行通信而设计的协议.在因特网中,它是能使连接到网上的所 ...
- 百度APP移动端网络深度优化实践分享(一):DNS优化篇
本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<一>DNS优化>,感谢原作者的无私分享. 一.前言 网络优化是客户端几大技术方 ...
- DNS服务器 和CDN
整个网页请求的流程如下: 我们先在浏览器输入域名,然后通过DNS(Domain Name System) 域名解析系统解析出来域名的对应的IP,然后发送请求得到响应返回给客户端,整个流程如下: 我们 ...
- Linux 小知识翻译 - 「DNS服务器」
这次聊聊「DNS服务器」. DNS(Domain Name System)服务器,也被称为域名服务器. 因为使用互联网的时候,必须要指定DNS服务器,所以你一定听过DNS这个名字吧. 那么,这个DNS ...
- 网卡配置文件详解 用户管理与文件权限篇 文件与目录权限 软连接 tar解压命令 killall命令 linux防火墙 dns解析设置 计划任务crond服务 软件包安装 阿里云 yum源 安装
Linux系统基础优化及常用命令 Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ...
- 协议 - DNS
目录 1 DNS 1.1 域名解析的历史:/etc/hosts, DNS, FQDN 1.2 域名解析流程: 域名架构 查询流程, DNS端口 1.3 合法 DNS :申请域查询授权 1.4 主机名交 ...
- 详解DNS,你真的懂吗?
what`s this ? 概念 域名系统(英文:DomainNameSystem,缩写:DNS)是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.D ...
随机推荐
- js实现弹窗一个ip在24小时只弹出一次的代码
function cookieGO(name) { var today = new Date(); var expires = new Date(); expires.setTime(today.ge ...
- css3 子元素的的应用 注意点
已经第二次犯错误,不允许有下次 <ul class="ul"> <li> <a>哈哈</a> </li> <li& ...
- BZOJ1854: [Scoi2010]游戏(二分图匹配)
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...
- 【MYSQL笔记2】复制表,在已有表的基础上设置主键,insert和replace
之前我自己建立好了一个数据库xscj:表xs是已经定义好的 具体的定义数据类型如下: 为了复制表xs,我们新建一个表名为xstext,使用下列语句进行复制xs,或者说是备份都可以: create ta ...
- OA上传和编辑数据
1.VO:value object值对象.通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已.但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要. 2. String[]类型打 ...
- 【PGP公钥】
Fingerprint: 37AF 3814 3ABC 5DFA 97F5 300E 581D A2E3 F4D2 F585 Key ID:0x581DA2E3F4D2F585 -----BEGIN ...
- AngularJS常见面试题
本文引自:https://segmentfault.com/a/1190000005836443 问题来源:如何衡量一个人的 AngularJS 水平? ng-if 跟 ng-show/hide 的区 ...
- 谈一谈你对js线程的理解
js线程:javascript是单线程的,所有任务都需要排队,这些任务分为同步任务和异步任务,单线程上有一个主线程任务.同步任务必须再主线程上排队进行,而异步任务(类似于点击事件)必须在主线程上的任务 ...
- Windows Server 2008 R2 可能会碰到任务计划无法自动运行的解决办法
在做Windows Server 2008R2系统的计划任务时使用到了bat脚本,手动启动没问题,自动执行缺失败,代码:0x2. 将“操作”的“起始于”进行设置了bat脚本的目录即可.
- 17-比赛2 F - Fox And Two Dots (dfs)
Fox And Two Dots CodeForces - 510B ================================================================= ...