DNS解析原理
提到DNS,不得不提到ICANN,DNS解析中的域名和IP都是由这个机构统一管理分配的,知道ICANN的管理流程,DNS的大概解析流程就知道了。
ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构是一个非营利性的国际组织,负责全球范围内互联网协议(IP)地址的空间分配、协议标识符的指派、通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理。
提起域名,大家印象最深的都是com域名,比如huawei.com,google.com,baidu.com等等,这个com后缀是一种顶级域,也是当前最流行的顶级域,全球目前存在上千种顶级域,按用途分成两大类,通用顶级域(比如com,net,org等),国家顶级域(比如cn,us,uk,jp)。
当前全球域名数量已经超过3亿,这么多域名,解析数据是怎么保存?怎么保证解析效率?答案是分类管理。就好比一个学校可能有成千上万人,但是却只有一个校长,让校长去管所有学生肯定管不过来,所以学校会根据年龄,知识积累等等把学生分成不同年级,每个年级设立级主任;每个年级再拆分成不同班级管理,每个班级设置班主任,这样校长只用管理级主任,级主任管理班主任,每个班主任管理几十个学生,整个学校就可以系统的运行流转起来。
互联网域名也是这样管理,不同后缀域名都由自己顶级域统一管理,顶级域下有不同权威DNS服务器负责特定的域名解析。比如华为云DNS,腾讯DNS,阿里云DNS,AWS的Route53等等。你在域名服务商处购买一个域名example.com,假如域名的DNS改成华为云DNS,实际上就是向com顶级域通知您的域名解析数据托管在华为云DNS服务器上,这样假如有客户端向com顶级域咨询您的域名解析结果,com顶级域会告诉客户端华为云DNS的地址,这时候客户端就会去问华为云DNS域名的解析结果。
那么问题又来了,全球一千多种顶级域,怎么知道每个顶级域的地址呢?顶级域有没有谁管理呢?有的,整个互联网解析其实是在13个根服务器控制中的,1个为主根服务器在美国,其余12个均为辅根服务器,其中9个在美国,欧洲2个,位于英国和瑞典,亚洲1个位于日本。我们在互联网上的每次解析请求都是去找这13个根服务器,根服务器会判断不同后缀域名返回不同顶级域的地址,13个根服务器的IP是很少变化的,都是直接预置在操作系统里,这样整个解析流程就连起来了。
说了这么多文字不太好理解,直接上图,网上摘抄的:
当然,如果看图还是不好理解,可以手工去测试下解析流程,这样会更深刻,建议使用dig +trace命令:
dig客户端可以百度搜索下载一个,安装到window电脑上。一般Linux系统都会自带dig命令,如果没有可以网上搜索安装文档。
当然,如果你很懒,不想安装dig客户端,勤奋的我给你推荐几个网址也是可以做trace检测的。
1 http://simpledns.com/lookup-dg.aspx
2 http://www.digwebinterface.com/
这两个地址可是我费九牛二虎之力找到的,一般人我是不告诉他的。至于怎么用我就不说了,看下就懂的!
至此,域名解析流程算是大概疏通了,根服务器,顶级域大概知道是干嘛的了。当然你可能还会有些疑问,全球只有13个根服务器怎么扛得住这么大流量的访问呢?我们看到的13个根服务器IP,实际上每个IP后面都是一个很大的分布式集群,在很多国家都有部署根服务器镜像,这些集群使用BGP Anycast技术对外输出的是一个IP。http://www.root-servers.org/ 这里有记录根服务器镜像分布情况。中国也有引进了好几个根服务器镜像。
- 点赞
- 收藏
- 关注作者
评论(0)