本文首发于公众号【一个老码农】
-
什么是DNS解析
DNS全称domain name system,中文名为“域名系统”。那么DNS解析又被称为域名解析。
前面的文章中我们说过,在互联网中,我们访问一台计算机最终都是通过ip来访问。域名和ip之间有一个映射关系,通过域名访问网站最终也会转化成ip来进行访问。从域名解析出ip的整个过程,我们就称之为DNS解析。而DNS的资源信息都是存储在DNS服务器上。
-
根域名服务器
全球有13台根域名服务器,包括一台主根服务器和12台辅根服务器。其中一台主根服务器加9台辅根服务器在美国;其它三台辅根服务器,其中欧洲两台分别在英国和瑞典;亚洲一台在日本。
13个根域名服务器,并不是13台实体服务器。每一个根域名服务器背后都有很多台实体服务器在运行。每个根服务器都有若干个镜像根服务器分布在全球各地。
-
DNS解析过程
在讲DNS解析过程之前,我们先了解一下域名的组成。
域名是由两个或两个以上部分组成,各部分之间用”.”分割。最后一个点我们称之为顶级域名,顶级域名的子域名我们称之为二级域名。二级域名的子域名我们称之为三级域名。
如:域名www.xxxx.com,其中.com就是我们所说的顶级域名;而xxxx.com为.com的子域名,即二级域名;www.xxxx.com为二级域名的子域名,其中www为主机名。
DNS解析分为迭代查询和递归查询两种。
迭代查询
迭代查询是通过逐级获取子域名的权威DNS服务器地址,并通过权威服务器地址最终拿到域名ip地址。流程如下:
1.客户端向本地DNS服务器发起请求查询www.xxxx.com的ip地址(本地DNS是电脑设置的DNS,一般默认为运营商的DNS,如电信为114.114.114.114)
2.本地DNS服务器收到请求后,向根域名服务器发起解析请求查询www.xxxx.com的ip地址
3.根域名服务器向本地DNS服务器返回.com顶级域名服务器地址
4.本地DNS服务器收到响应后,向顶级域名服务器发起解析请求
5.顶级域名服务器收到请求后,返回.xxxx.com权威域名服务器地址
6.本地DNS服务器收到响应后,向.xxxx.com权威域名服务器发起解析请求
7 .xxxx.com权威域名服务器收到请求后,返回www.xxxx.com对应的域名ip给本地DNS服务器
8.本地DNS收到域名ip后返回给客户端,并进行缓存
迭代查询流程图:
迭代查询递归查询
递归查询是通过递归的访问各级域名服务器,查询到ip地址后递归的返回给客户端,流程如下:
1.客户端向本地DNS服务器发起请求查询www.xxxx.com的ip地址
2.本地DNS服务器向根DNS服务器发起解析请求
3.根DNS服务器收到请求后,向.com顶级DNS服务器发起查询请求
4..com顶级DNS服务器收到请求后,向.xxxx.com权威服务器发起查询请求
5..xxxx.com返回www.xxxx.com所对应的ip地址给.com顶级DNS服务器
6.顶级DNS服务器返回ip地址给根DNS服务器
7.根DNS服务器返回ip给本地DNS服务器
8.本地DNS服务器把ip进行缓存,并返回给客户端
流程图:
递归查询
-
DNS资源记录
DNS服务器的资源记录常见的几种有:A记录、NS记录、CNAME记录
1.A记录
A记录是指记录域名和其对应的ip,也正是因为A记录,才能由域名到ip解析成功。如果为ipv6地址,则需要添加AAAA记录。
2.NS记录
NS记录我们称之为域名解析服务器记录,用来指定子域名解析的域名解析服务器
3.CNAME记录
CNAME记录我们称之为别名记录,一般用来指定域名的别名。如www.baidu.com便有一个别名为www.a.shifen.com。
-
传统DNS存在的问题
1.DNS劫持
由于传统DNS是通过UDP明文传输的,我们知道UDP数据传输本身是不可靠的,这就可能会被钓鱼DNS服务器劫持,从而解析出错误的ip地址。
2.域名转发
如A运营商为了节约成本,将解析请求转发至B运营商,从而返回了域名在B运营商对应的ip地址,造成跨运营商访问,进而影响访问速度。
3.解析延迟
因为DNS查询过程,无论递归和迭代都需要请求多个DNS服务器才能最终获取ip,这就可能会造成一定的解析延时,而如果DNS服务器距离客户端较远,解析延时则更为明显。
-
HttpDNS
为解决传统DNS的诸多问题,人们推出了HttpDNS的域名解析方案,HttpDNS不走传统的DNS解析,而是通过http请求直连的方式获取域名所对应的ip,这样就可以解决传统DNS可能被劫持的问题。由于客户端请求的是HttpDNS服务器,不走运营商本地DNS,所以也就不存在域名转发的问题
而其DNS服务器集群分布在多个地点多个运营商,它可以根据客户端的国家、省市、运营商等信息选择最佳的服务节点进行解析,这样也从一定程度上解决DNS解析延迟问题。
如今腾讯、阿里、谷歌等都有自己的HttpDNS服务,我也在项目中使用了阿里的HttpDNS服务,从而极大的提升了国外用户的访问速度。大家可根据实际情况选择适合自己的HttpDNS服务。
关注公众号【一个老码农】,更多优质技术内容等你来
原文地址
网友评论