DNS解析过程

DNS(Domain name server):域名系统,我们通常有两种方式来识别主机,域名(面向用户)和IP地址(面向计算机),使用域名是为了便于我们记忆(32位二进制数字组成的IP很难记住),但机器需要通过IP地址来识别,这时候就需要一整套从域名映射到IP的系统(DNS)

域名结构

DNS采用分布式的解析方案,整个DNS架构是一种层次树状结构,这种结构称为DNS域名空间

域名服务器的层次结构

域名具有层次结构,域名需要服务器进行管理,也有相应的层次结构,上一级域名服务器知道下一级域名服务器的IP地址

分类(由高到低) 作用
根域名服务器 最高层次的域名服务器,本地域名服务解析不了会向其求助
顶级域名服务器 负责管理该顶级域名服务器下注册的二级域名
权限域名服务器 负责一个区(管理权限的范围)的域名解析工作
本地域名服务器 当一个主机发出DNS查询请求时,会首先发给本地域名服务器

DNS解析过程

以用户在浏览器中输入www.baidu.com为例,讲一下DNS解析的流程:

  1. 浏览器检查自身缓存是否解析过此域名的IP地址,如果存在则解析结束
  2. 当浏览器缓存中没有,会检查操作系统缓存中是否解析过此域名,即系统的hosts文件,如果用户在此文件中配置了域名-IP的映射关系,则解析结束
  3. 当系统hosts文件中没有,则会去请求本地域名服务器(递归查询)解析此域名,如果存在则解析结束(大部分DNS解析在此完成)
  4. 如果本地域名服务器没有,本地域名服务器会向根域名服务器发起请求(迭代查询),根域名服务器会告诉本地域名服务器,下一步应该查询的顶级域名服务器的IP地址
  5. 本地域名服务器得到IP地址后,向对应IP的顶级域名服务器发起请求进行查询,顶级域名服务器会告诉本地域名服务器,下一步应该查询的权限域名服务器的IP地址
  6. 本地域名服务器得到IP地址后,相对应IP的权限域名服务器发起请求进行查询,权限服务器告诉本地域名服务器所查询的主机的IP地址
  7. 本地域名服务器得到主机IP地址后,把查询结果反馈给主机

linux系统可以使用dig命令对DNS解析进行追踪

递归查询与迭代查询

主机查询本地域名服务器采用递归查询,本地域名服务器查询其他域名服务器采用迭代查询

  • 递归查询:主机向本地域名服务器发起请求,等待返回结果,如果本地域名服务器没有解析,会以DNS客户机身份向其他域名服务器进行查询,此时主机只需要等待结果,中间查询过程并不关心
  • 迭代查询:本地域名服务器向根域名服务器发起查询请求,根据根域名服务器告知的顶级域名服务器IP去进行查询,每次都是自身去查询

DNS的传输层协议

DNS使用了TCP与UDP两种协议

当客户端向DNS服务器发起域名解析请求时,一般返回的内容不会超过UDP报文的最大长度,并且UDP传输不需要经过TCP三次握手过程,大大提高了响应速度,因此采用UDP作为DNS的传输层协议。

当进行区域传送会使用TCP,辅域名服务器会定时向主域名服务器进行查询,检查是否有数据变动,如有变动则会执行一次区域传送,进行数据同步,由于数据同步的数据量比一次请求和应答的数据量要大的多,使用TCP更加可靠。

linux系统中的配置文件

resolv.conf

该文件是DNS域名解析配置文件,文件路径:/etc/resolv.conf

配置参数
nameserver : 定义DNS服务器的IP地址
domain :定义本地域名
search :定义域名的搜索列表
sortlist :对返回的域名进行排序

比如虚拟机的配置文件,DNS服务器的IP地址对应路由器的IP

hosts

用于保存常用的网址域名与其IP的映射关系,文件路径:/etc/hosts

配置参数
IP 域名
例如:
修改hosts文件
127.0.0.1 www.a.com
使用ping命令的结果
[root@localhost ~]# ping www.a.com
PING www.a.com (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.021 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.088 ms

windows系统也有hosts文件在C:\Windows\System32\drivers\etc\hosts路径下

主要目的是加快域名解析(主机可以直接从hosts找到对应IP,无需向本地域名服务器请求查询)

参考网址

https://blog.csdn.net/weixin_57023347/article/details/120819772

https://blog.csdn.net/weixin_50426379/article/details/124346735

原文地址:http://www.cnblogs.com/shenStudy/p/16927594.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性