DNS——域名系统

DNS


Domain Name System,域名系统,因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。

每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。

DNS工作流程


下面我从一个故事的角度讲述一下在我们访问网站的过程中DNS是怎样起作用的,为了文章的通俗性可能严谨性不很足:

  1. 有一天,隔壁老王打开电脑想要登陆百度,他在地址栏输入了 www . baidu . com ,这时电脑犯了难,电脑对本地的DNS客户端程序说:“我不知道这一串字符对应什么信息啊,我只认得数字IP,我只会根据IP找对应的服务器电脑,去读取他的数据,给我一串字符这可怎么办啊。”。DNS客户端程序拍着胸脯对电脑说:“你放心吧,交给我了,我一会给你 www . baidu . com对应的IP,让你能够读取信息,你先休息去吧。”。
  2. 说完之后,DNS客户端程序蹬蹬蹬敲开了本地hosts文件的家门,进门就是一顿乱翻,看hosts文件家里有没有本地缓存记录这个域名对应的IP(如果找到了就返回给电脑,全剧终)
  3. 翻了半天发现没有,DNS客户端程序又去找了本地DNS解析器缓存同样在解析器家里找啊找(如果找到了就返回给电脑,全剧终)
  4. 翻了半天又没有,DNS客户端程序这个气啊,于是他去找本地DNS服务器,别小看本地DNS服务器,他可是在电脑的TCP/IP参数中设置的首选DNS服务器啊。本地DNS服务器比其他的各大服务器好在哪?当然是近啊,先查近的,查得到就省的电脑一直等着了。于是根据参数的设置,DNS客户端程序去查本地DNS服务器中是否能够解析这个域名。(如果能解析,就把IP返回给电脑,我们称本地DNS服务器解析具有权威性
  5. 本地DNS服务器看了半天,发现他自己也解析不了这个域名,但是他对DNS客户端程序说:“你先别走,我这里还有本地DNS服务器缓存的网址映射关系,我去那里看看有没有你要的IP”。(如果本地DNS服务器缓存的网址映射关系命中,同样将结果返回给电脑,我们称这种缓存命中的方法不具有权威性
  6. 如果本地DNS服务器在缓存中也没有找到,本地DNS服务器就会找到电脑里设置的DNS服务器参数,按照参数上记载的服务器IP找到那个DNS服务器,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级——管理baidu.com的DNS服务器给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找http://baidu.com域服务器,重复上面的动作,进行查询,直至找到www . baidu .com主机。最后一定会得到域名的IP,将其返还给电脑。
  7. 电脑很高兴,得到了域名对应的IP,访问这个IP的80端口的内容,老王成功上网啦。

听完故事之后,我们需要明确几件事情:
1. 通常,宽带运营商会为我们分配一个DNS服务器。这个DNS通常是最快的,距离最近的服务器。当然有必要的时候我们仍可以手动设置DNS。
2. DNS是应用层协议,客户端(一般指浏览器)构建DNS查询请求,依次被传输层,网络层,数据链路层等封装传送到达DNS服务器端,最终客户端接收到DNS响应消息。
3. DNS主要基于UDP运输层协议,使用UDP而不是使用TCP为DNS请求节省了很多时间,一次UDP名字服务器交换可以短到两个包:一个查询包、一个响应包。一次TCP交换则至少包含9个包:三次握手初始化TCP会话、一个查询包、一个响应包以及四次分手的包交换。不需要两边交换信息只是查询,理所当然UDP。

一个IP可以对应多个DNS

这里的DNS就代指域名了。一个IP可以绑定多个域名。如需要实现多个域名访问同一个网站,只需就不同域名添加 A 记录指向同一个IP即可。如需要实现多个域名访问同一虚拟服务器上不同网站,也需要就不同域名添加 A 记录指向 IP,然后在主机提供商完成域名绑定设置,或利用主机头设置、端口号方式实现访问。

DNS级别


.com、.net、.cn、.gov.cn 等为顶级域。

abc.com、example.cn、beijing.gov.cn 等为一级域名。

www.abc.com、news.example.cn、www.beijing.gov.cn等为二级域名,即一级域名的子域名,该子域名为二级子域名。

以此类推,子域名级别定义如下:

3 级子域名为:a.abc.com , a.beijing.cn;

4 级子域名为:b.a.abc.com , b.a.beijing.cn;

5 级子域名为:c.b.a.abc.com , c.b.a.beijing.cn;

……

通常我们花钱去注册的是二级域名,因此除非再额外花钱,否则我们暂定只有一个二级域名可用。这个二级域名能用来解析一个网站。一个二级域名当然只能对应一个网站,因为每一个独立的网站都需要至少一个物理地址才能存在于互联网上供人访问。但是当你拥有一个能完全掌控的二级域名时,你可以建立不限数目的三级域名,当然它们的二级域名部分是一样的

三级域名也可以用来解析物理 IP 地址,所以你可以将它使用在和二级域名完全不同的网站上。
因此,你的确可以只购买一个二级域名,但是却可以建立无数个网站,它们分别使用不同的三级域名。
三级域名不是终点,还有四级,五级,……更多级可用。然而每一级域名到底能设置多少个,理论上没有限制,但实际上域名的提供商是可以做限制的,这一点在购买域名的时候要留心。一般的,理论上服务提供商最多能够支持你生成五级域名。

DNS资源记录类型分析

一般情况下解析支持 A、CNAME、NS、MX、TXT、SRV、AAAA、CAA、URL 等解析类型。

  1. A (Address) 记录:域名指向一个 IPv4 地址(如10.10.10.10),如需要指向一个 IPv4 地址,则需要增加 A 记录;
  2. CNAME记录:如果将域名指向一个域名,实现与被指向域名相同的访问效果,则需要增加 CNAME 记录;
  3. MX记录:建立电子邮箱服务,将指向邮件服务器地址,需要设置 MX 记录;
  4. NS记录:域名解析服务器记录,即把子域名指定某个域名服务器来解析,就需要设置 NS 记录;
  5. TXT记录:用来做 SPF 记录,反垃圾邮件使用;
  6. SRV记录:用来记录某台服务器提供的服务情况;
  7. AAAA记录:域名指向一个 IPv6 地址记录;
  8. CAA记录:证书颁发机构授权,是一种保护域名免受钓鱼的安全措施,网站运营商可以通过该措施来保护域名免于错误发布;
  9. URL记录:希望访问 A 域名时访问到 B 域名的内容,这时您就可以通过 URL 转发来实现,可以将 A 域名转发到 B 域名或 B 域名某一个目录下.

其中URL记录会导致转发,而转发又分为隐式和现式两种
显性 URL 转发:
例如: http: // b. com / 指向 http: // a. com / example/ (任意目录);当在浏览器地址栏中敲入 http: // b. com/ 后回车,IE 浏览器的地址栏里显示的地址会由原来您敲入的 http: // b. com/ 自动变为显示真正的目标地址 http: // a. com/example/ ;

隐性URL 转发:
例如:http: // b. com/ 指向 http: // a. com/example/ (任意目录);当在浏览器地址栏中敲入 http: // b. com/ 后回车,IE 浏览器的地址栏里显示的地址保持不变,仍是 http: // b. com/ ,但实际访问到的是 http: // a. com/xxx/ 的内容。

TTL值

TTL(Time-To-Live),就是一条域名解析记录在DNS服务器中的存留时间。当各地的DNS服务器接受到解析请求时,就会向域名指定的DNS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在 DNS 服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向NS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在 DNS 服务器上保留的时间,就是 TTL 值。

二、TTL 值设置的应用:

1、增大 TTL 值,以节约域名解析时间,给网站访问加速。

一般情况下,域名的各种记录是极少更改的,很可能几个月、几年内都不会有什么变化。我们完全可以增大域名记录的 TTL 值让记录在各地 DNS 服务器中缓存的时间加长,这样在更长的一段时间内,我们访问这个网站时,本地 ISP 的 DNS 服务器就不需要向域名的 NS 服务器发出解析请求,而直接从缓存中返回域名解析记录。

2、减小 TTL 值,以减少更换空间时的不可访问时间。

更换空间 99.9% 会有 DNS 记录更改的问题,因为缓存的问题,新的域名记录在有的地方可能生效了,但在有的地方可能等上一两天甚至更久才生效。结果就是有的人可能访问到了新服务器,有的人访问到了旧服务器。仅仅是访问的话,这也不是什么大问题,但如果涉及到了邮件发送,这个就有点麻烦了,说不定哪封重要信件就被发送到了那已经停掉的旧服务器上。

国内几家DNS供应商

114DNS(https://www.114dns.com/)老牌的DNS解析服务了,以前经常用,电信联通移动,全国通用DNS,分的种类也较多,根据需要选择。

阿里DNS(http://www.alidns.com/)阿里DNS是阿里巴巴集团推出的DNS递归解析系统,面向互联网用户提供快速、稳定、智能的免费DNS递归解析服务,现在我也经常使用。

SDNS(http://www.sdns.cn/)SDNS是由中国互联网络信息中心(CNNIC)与国内外电信运营商合作推出的免费公共云解析服务(SecureDNS,简称SDNS),旨在为用户提供高速、安全、智能的上网接入解析服务。这两周使用114和阿里DNS都碰到了广告挟持的问题,换成SDNS后解决,正在使用

OneDNS(http://www.onedns.net/)创立于2013年的DNS服务,比较新,没使用过,不过他们的口号挺吸引人:OneDNS是一个安全、快速、免费的小众DNS服务

DNS派(http://www.dnspai.com/)360的合作伙伴,效果据测试是比较垫底的。

你可能感兴趣的:(networks,一周一篇Java概念)