博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅析DNS解析过程
阅读量:6294 次
发布时间:2019-06-22

本文共 1201 字,大约阅读时间需要 4 分钟。

前言

为了了解DNS解析的整个过程,但是我查看了一些博文,但都不是我想要的结果,要么讲的很浅显,要么就是那种专门做计算机网络才能看得懂得文章,因此为了避免以后自己忘掉,把这次的理解总结一下。

迭代查询和递归查询

DNS大致解析过程如下:

首先我先说一下我对DNS递归查询以及迭代查询的理解:DNS的解析过程默认是采用递归查询,也就是一层一层的传递下去,但是如果遇到某个服务器的RA字段(表示是否支持递归查询)为0,或者DNS域名查询请求中RD字段(表示是否期望使用递归查询)为0时,此时将会采用迭代查询,迭代查询就是每次查询到的结果不是由你递交请求的服务器代你继续查询,而是将查询结果返回给当前发出请求的机器。上图客户端将域名查询请求交给本地DNS服务器之后是由本地DNS服务器代替客户端继续查询,而不是将根域名服务器的地址返回给客户端,再让客户端请求,因此该阶段就是递归查询;本地DNS服务器后面的过程就是迭代查询过程。

从一个域名到一个IP地址到底发生了什么

当客户端需要通过一个域名请求资源时,必须知道该域名对应的IP地址是什么;为什么一定要知道请求目的地的IP才能发送请求?因为我们现有的网络几乎都是基于TCP/IP协议的,而TCP/IP协议是基于IP地址的进行通讯的。假设现在客户端要访问www.google.com,发生的DNS解析过程大致如下:

  1. 客户端首先查询自己的缓存中是否有该域名的访问记录,如果有的话直接访问对应的IP地址,否则进行下一步。
  2. 在缓存没有查询到要访问域名的记录,则去查询主机下面的host文件(记录一些常用网址域名对应的ip地址的一个文件)是否有记录,如果有的话直接访问对应的IP地址,否则进行下一步。
  3. host文件中也未找到,则像本地配置的DNS服务器进行查询(这里只以首选DNS服务器为例,备用DNS服务的过程基本相同),本地DNS服务器接收到域名解析请求之后查询自己的缓存是否有该域名的记录,如果有直接返回域名对应的IP地址;如果没有,则去查询根域名服务器(这里本地DNS域名服务器采用迭代查询,递归查询的过程更简单一层一层查到底直至返回结果)。
  4. 根域名服务器收到该域名解析请求后,查询该域名对应的顶级域名服务器,将顶级域名服务的IP地址返回给本地DNS服务器。
  5. 本地DNS服务器将结果缓存,同时向该域名的顶级域名服务器发出请求;顶级域名服务器收到请求后,首先查看自己的缓存是否有该域名的记录,如果有则直接返回,否则将查询该域名的二级域名服务器,并将IP地址返回给本地DNS域名服务器。
  6. 后面的查询过程都类似于第五步直至返回最终结果,将结果缓存并将IP地址返回给客户端。
  7. 客户端访问IP地址并将查询结果进行缓存。

以上仅个人理解,如果有错,欢迎各位大佬指出。

转载于:https://juejin.im/post/5ccb870a6fb9a031e9752d44

你可能感兴趣的文章
java中包容易出现的错误及权限问题
查看>>
AngularJS之初级Route【一】(六)
查看>>
服务器硬件问题整理的一点总结
查看>>
SAP S/4HANA Cloud: Revolutionizing the Next Generation of Cloud ERP
查看>>
Mellanox公司计划利用系统芯片提升存储产品速度
查看>>
白帽子守护网络安全,高薪酬成大学生就业首选!
查看>>
ARM想将芯片装进人类大脑 降低能耗是一大挑战
查看>>
Oracle数据库的备份方法
查看>>
Selenium 自动登录考勤系统
查看>>
关于如何以编程的方式执行TestNG
查看>>
智能照明造福千家万户 家居智能不再是梦
查看>>
物联网如何跳出“看起来很美”?
查看>>
浅谈MySQL 数据库性能优化
查看>>
《UNIX/Linux 系统管理技术手册(第四版)》——1.10 其他的权威文档
查看>>
灵动空间 创享生活
查看>>
《UNIX网络编程 卷1:套接字联网API(第3版)》——8.6 UDP回射客户程序:dg_cli函数...
查看>>
不要将时间浪费到编写完美代码上
查看>>
《算法基础:打开算法之门》一3.4 归并排序
查看>>
高德开放平台开放源代码 鼓励开发者创新
查看>>
《高并发Oracle数据库系统的架构与设计》一2.5 索引维护
查看>>