DNS解析原理

举报
沧海沧海 发表于 2017/11/30 20:57:11 2017/11/30
【摘要】 我们要上网都要用到DNS,你知道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是很少变化的,都是直接预置在操作系统里,这样整个解析流程就连起来了。

    

    说了这么多文字不太好理解,直接上图,网上摘抄的:

    public.PNG

    当然,如果看图还是不好理解,可以手工去测试下解析流程,这样会更深刻,建议使用dig +trace命令:

    dig.PNG

    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/ 这里有记录根服务器镜像分布情况。中国也有引进了好几个根服务器镜像。

    

    

    


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。