DNS协议详解
DNS协议定义
DNS(Domain Name System)域名系统
DNS协议:
是一个处理IP地址与域名之间映射的网络协议,做用于应用层
DNS域名结构
因为用户访问别的主机时,如果一直用IP地址访问就不方便记忆,因此域名就相当于是主机的一个别名,而域名是跟主机的唯一标识IP地址是对应的。由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。
根域:DNS域名使用中规定由尾部句点'.'来指定名称位于根或者更高层次的域层次结构。
顶级域:用来指示某个国家、地区或者组织。采用三个字符,如com -> 商业公司,edu -> 教育机构,net -> 网络公司,gov -> 非军事政府机构等等。
二级域:个人或者组织在Internet使用的注册名称。采用两个字符,如:cn -> 代表中国,jp -> 日本,uk -> 英国,hk -> 香港等等。
DNS域名服务器
由于域名的命名结构是层次树状结构,如果针对每一个节点都采用一个域名服务器,就可以快速进行域名到IP地址的映射,但是这样会严重降低域名服务器的运行效率。因此DNS服务器也是采用分布式划区的方式来架构。因特网上的DNS服务器也是按照层次安排的。每一个域名服务器只对域名体系中的一部分进行管辖。根据域名服务器所起的作用,可以把域名服务器划分为下面四种不同的类型。域名服务主要是基于UDP实现的,服务器的端口号为53。
根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。在很多情况下,根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。
顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。
权限域名服务器:负责一个“区”的域名服务器。
本地域名服务器:位于本机上的域名服务器。
DNS工作流程
示例分析
主机想要查询www.qq.com的IP地址
- 在浏览器中输入www . qq .com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
- 如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
- 如果hosts与本地DNS解析器中都没有相应的网址映射关系,则会使用本地DNS服务器进行查询。这里使用的是递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。
- 本地服务器向根服务器的查询,则为迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。
(注意:本地DNS解析器和本地DNS服务器都会设置高速缓存,从而提高查询效率)
DNS报文的具体信息
具体细节可参照:DNS报文详解
拓展细节:13台DNS根服务器都存放在哪里?
参考资料:DNS原理总结
标签:本地,IP地址,查询,计算机网络,域名,DNS,服务器,原理 From: https://www.cnblogs.com/robyn2022/p/16955526.html