而连接的最初的动作是DNS解释,在第一篇中,描述DNS的状况是:
域名换ip。这一步看似简单却充满陷阱,10分钟的DNS的Cache过期时间,200~2000ms不等的DNS耗时,坑了无数应用。
解决无非有三个策略:
-
ip直连
-
域名重用(收敛)
-
HttpDNS
不过仅仅用一段话来描述DNS的疼点还是比较生硬的,所以在学习ip直连和HttpDNS之前,我需要先弄懂DNS出现问题的具体原因。
========================================================================
在网络世界中,我们如果想要访问某一个服务器的东西,我们需要知道它的ip地址是多少,这样才能去连接走Http。
但是 ip地址32位二进制的数字,它的常用格式: XXX.XXX.XXX.XXX
显然,我就是为了访问一个服务器,你让我记住这么一长串的数字,这不是在为难人吗?我每天都要访问数十个网站,一秒钟几亿上下,每个网站的ip都要记在小本子上,而且一个服务器可能还有好几个ip,然后在访问时还要很细心一个个敲在输入框中…

所以为了解决这种体验问题,DNS(Domain Name System)就这么出现了。服务器可以申请得到域名,比如说我们熟知的百度的域名就是 : www.baidu.com
。这样我们在浏览器的输入框只要输入这个域名,就能访问百度的服务器了。
那我们看到DNS出现,不用去记那么一长串的ip地址了,只用记住域名就可以了,域名一般来说都是英文加数字格式,很方便人类进行记忆。
那我们已经很清楚DNS的作用了,我们告诉DNS域名,DNS帮我们找到ip地址,即 域名换ip,来看下下图:
这样人类就可以很哈批的去访问各种网站了。
注:DNS大部分都是基于UDP的,所以DNS本身具有UDP连接的不可靠性
每天都有成万上亿的人在互联网冲浪,这说明DNS没有一刻不在被使用,所以DNS服务器一定要保证高可用、高并发和分布式服务器。所以有必要了解DNS的结构。
我们先来看下域名的空间结构:
像 com、net、cn这些代表的就是顶级域名(也叫根域名),顶级域名前面的就是二级域名,二级域名前面的是三级域名。
比如 www.baidu.com
, .com
就是根域名, .baidu
就是二级域名, www
就是三级域名。根据这个我们再来看看DNS的结构。
从理论上说,任何形式的标准域名要想被实现解析,按照技术流程,都必须经过全球“层级式”域名解析体系的工作,才能完成。所以DNS的服务器结构是根据官方的层级式来分类的,有下面四类:
-
根域名服务器(Root Name Server)
-
顶级域名服务器(Top-level Name Server)
-
权威域名服务器(Authoritative Name Server)
-
本地 DNS 服务器(Local D