什么是DNS域名解析

我们首先要了解域名和IP地址的区别。IP地址是互联网上计算机唯一的逻辑地址,通过IP地址实现不同计算机之间的相互通信,每台联网计算机都需要通过IP地址来互相联系和分别。

但由于IP地址是由一串容易混淆的数字串构成,人们很难记忆所有计算机的IP地址,这样对于我们日常工作生活访问不同网站是很困难的。基于这种背景,人们在IP地址的基础上又发展出了一种更易识别的符号化标识,这种标识由人们自行选择的字母和数字构成,相比IP地址更易被识别和记忆,逐渐代替IP地址成为互联网用户进行访问互联的主要入口。这种符号化标识就是域名。

域名虽然更易被用户所接受和使用,但计算机只能识别纯数字构成的IP地址,不能直接读取域名。因此要想达到访问效果,就需要将域名翻译成IP地址。而DNS域名解析承担的就是这种翻译效果。

DNS域名解析过程

当我们在浏览器地址栏中输入www.baidu.com时,DNS解析将会有将近10个步骤,这个过程大体大体由一张图可以表示:

整个过程大体描述如下,其中前两个步骤是在本地电脑内完成的,后8个步骤涉及到真正的域名解析服务器:

第一步

本地电脑会检查浏览器缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过TTL属性来设置。这个缓存时间太长和太短都不太好,如果时间太长,一旦域名被解析到的IP有变化,会导致被客户端缓存的域名无法解析到变化后的IP地址,以致该域名不能正常解析,这段时间内有一部分用户无法访问网站。如果设置时间太短,会导致用户每次访问网站都要重新解析一次域名。

第二步

如果浏览器缓存中没有数据,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果。其实操作系统也有一个域名解析的过程,在Linux中可以通过/etc/hosts文件来设置,而在windows中可以通过配置C:\Windows\System32\drivers\etc\hosts文件来设置,用户可以将任何域名解析到任何能够访问的IP地址。例如,我们在测试时可以将一个域名解析到一台测试服务器上,这样不用修改任何代码就能测试到单独服务器上的代码的业务逻辑是否正确。正是因为有这种本地DNS解析的规程,所以有黑客就可能通过修改用户的域名来把特定的域名解析到他指定的IP地址上,导致这些域名被劫持。

第三步

前两个过程无法解析时,就要用到我们网络配置中的"DNS服务器地址"了。操作系统会把这个域名发送给这个本地DNS服务器。每个完整的内网通常都会配置本地DNS服务器,例如用户是在学校或工作单位接入互联网,那么用户的本地DNS服务器肯定在学校或工作单位里面。它们一般都会缓存域名解析结果,当然缓存时间是受到域名的失效时间控制的。大约80%的域名解析到这里就结束了,后续的DNS迭代和递归也是由本地DNS服务器负责。

windows在这配置:控制面板-》网络和共享中心-》更改适配器设置-》选中目标适配器右键选择属性-》Internet协议版本4(TCP/IPv4)-》配置DNS地址。

Linux在这设置:/etc/resolv.conf

第四步

如果本地DNS服务器仍然没有命中,就直接到根DNS服务器请求解析。

第五步

根DNS服务器返回给本地DNS域名服务器一个顶级DNS服务器地址,它是国际顶级域名服务器,如.com、.cn、.org等,全球只有13台左右。

第六步

本地DNS服务器再向上一步获得的顶级DNS服务器发送解析请求。

第七步

接受请求的顶级DNS服务器查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server服务器就是我要访问的网站域名提供商的服务器,其实该域名的解析任务就是由域名提供商的服务器来完成。   比如我要访问www.baidu.com,而这个域名是从A公司注册获得的,那么A公司上的服务器就会有www.baidu.com的相关信息。

第八步

Name Server服务器会查询存储的域名和IP的映射关系表,再把查询出来的域名和IP地址等等信息,连同一个TTL值返回给本地DNS服务器。

第九步

返回该域名对应的IP和TTL值,本地DNS服务器会缓存这个域名和IP的对应关系,缓存时间由TTL值控制。

第十步

把解析的结果返回给本地电脑,本地电脑根据TTL值缓存在本地系统缓存中,域名解析过程结束在实际的DNS解析过程中,可能还不止这10步,如Name Server可能有很多级,或者有一个GTM来负载均衡控制,这都有可能会影响域名解析过程。

递归查询和迭代查询的区别

DNS客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代。
DNS递归名称解析: 在DNS递归名称解析中,当所配置的本地名称服务器解析不了时,后面的查询工作是由本地名称服务器替代DNS客户端进行的(以“本地名称服务器”为中心),只需要本地名称服务器向DNS客户端返回最终的查询结果即可。

DNS迭代名称解析:(或者叫“迭代查询”)的所有查询工作全部是DNS客户端自己进行(以“DNS客户端”自己为中心)。在条件之一满足时就会采用迭代名称解析方式:

  • 在查询本地名称服务器时,如果客户端的请求报文中没有申请使用递归查询,即在DNS请求报头部的RD字段没有置1。相当于说“你都没有主动要求我为你进行递归查询,我当然不会为你工作了”。

  • 客户端在DNS请求报文中申请使用的是递归查询(也就是RD字段置1了),但在所配置的本地名称服务器上是禁用递归查询(DNS服务器一般默认支持递归查询的),即在应答DNS报文头部的RA字段置0。

域名解析记录

主要分为A记录、MX记录、CNAME记录、NS记录和TXT记录:

1、A记录

A代表Address,用来指定域名对应的IP地址,如将item.taobao.com指定到115.238.23.xxx,将switch.taobao.com指定到121.14.24.xxx。A记录可以将多个域名解析到一个IP地址,但是不能将一个域名解析到多个IP地址

2、MX记录

Mail Exchange,就是可以将某个域名下的邮件服务器指向自己的Mail Server,如taobao.com域名的A记录IP地址是115.238.25.xxx,如果将MX记录设置为115.238.25.xxx,即xxx@taobao.com的邮件路由,DNS会将邮件发送到115.238.25.xxx所在的服务器,而正常通过Web请求的话仍然解析到A记录的IP地址

3、CNAME记录

Canonical Name,即别名解析。所谓别名解析就是可以为一个域名设置一个或者多个别名,如将aaa.com解析到bbb.net、将ccc.com也解析到bbb.net,其中bbb.net分别是aaa.com和ccc.com的别名

4、NS记录

为某个域名指定DNS解析服务器,也就是这个域名由指定的IP地址的DNS服务器取解析

5、TXT记录

为某个主机名或域名设置说明,如可以为ddd.net设置TXT记录为"这是XXX的博客"这样的说明

DNS域名详细解析过程(最全面,看这一篇就够)相关推荐

  1. DNS域名详细解析过程

    最近需要搭建一个网站,需要域名解析和备案了,租了一个很便宜的服务器,而且服务超级好,有兴趣私聊我. 什么是DNS域名解析 我们首先要了解域名和IP地址的区别.IP地址是互联网上计算机唯一的逻辑地址,通 ...

  2. DNS的详细解析过程

    DNS解析又称域名解析.目的是将域名解析成对应的ip地址,去相对应的ip地址服务器上获取请求资源. 从输入网址到看到界面的整个流程: 1.浏览器中输入网址 ==> 2.域名解析(DNS),找到I ...

  3. 【万字长文】SQL注入全流程解析,零基础看这一篇就够了

    一.SQL形成的原因 当Web应用向后台数据库传递SQL语句进行数据库操作时.如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库进行执行,获取或修改数据库 ...

  4. DNS原理及其解析过程 精彩剖析

    DNS原理及其解析过程 精彩剖析 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如"202.96.134.133"之类的I ...

  5. DNS原理和解析过程

    1.DNS系统的简介: DNS是一套从域名到IP的映射系统. TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序,但是IP地址不方便记忆.于是人们发明了一种叫主机名的东西是一个字符串, ...

  6. 如何追踪域名的解析过程?帮你搞懂域名解析是如何工作的

    给定一个域名,我们如果想知道它是怎么被解析的呢?有时候,我们想找到域名解析过程中的故障,该怎么做呢? 方法1:使用 https://simpledns.plus/lookup-dg 使用 https: ...

  7. 计算机网络之交换机的工作原理---超详细解析,谁都看得懂!!

    在了解交换机的工作原理之前,我们先要了解几个概念. 一.相关概念  1.OSI七层模型是哪七层? 自上而下分别是: 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 交换机工作在数据链路层, ...

  8. Linux家常便饭——DNS域名的解析

    Linux家常便饭--DNS域名的解析 一.了解DNS DNS域名解析方式 DNS服务器类型 二.构建DNS域名解析服务步骤 安装BIND软件 配置正向解析 配置反向解析 一.了解DNS 定义:将域名 ...

  9. python详细安装教程-超详细Python与PyCharm安装教程,看这一篇就够了

    原标题:超详细Python与PyCharm安装教程,看这一篇就够了 学习了三天的python, 之前测试一直用课程自带的网页版玩玩, 为了学习 然后就下载了一个python和pycharm 现在分享下 ...

  10. 23上教资开始注册!详细报名流程看这一篇就够了!(建议收藏)

    注意!2023年1月12日部分省份如:河北.上海.浙江.湖北.湖南.海南.云南.四川.重庆已经可以注册教资笔试了!注册网址:中国教育考试网,选择对应省份进入即可查看是否可以注册! 提示:注册未开启的将 ...

最新文章

  1. cocos2dx event call stack
  2. linux boot空间分多少,/boot分区空间不足,清理老内核所占空间
  3. 《系统集成项目管理工程师》必背100个知识点-90信息系统安全属性
  4. 【转】Xcelsius2008 水晶易表问题 部分汇总
  5. 转hdmi_即插即用轻松双屏,毕亚兹 VGA转HDMI转换器评测
  6. 解决okhttp的java.lang.IllegalStateException: closed错误
  7. echarts环形图加边框
  8. IEEE Access投稿(Latex模板)——参考文献的生成
  9. moodle php代码解读_Moodle插件moodle 二次开发基础知识一
  10. fw325r虚拟服务器,fw325r无线路由器设置
  11. 感觉现在的技术圈越来越像娱乐圈了
  12. 关于thinkpad和thinkpad x230更换固态硬盘后蓝屏0x000000f4或0x0000007a错误
  13. 用python画多啦a梦源码_python 画多啦A梦
  14. [ 数据集 ] COCO 数据集介绍
  15. 126邮箱注册测试用例
  16. 真三国无双3 己方士气提升
  17. Linux那点事儿——运维工程师百科书-持更
  18. Inno setup 安装卸载前校验工作
  19. PID与MPC的理解小技巧
  20. PHP implode()函数

热门文章

  1. 电脑重装系统如何远程控制电脑操作
  2. java 面向对象三个特征_[Java] 面向对象的三个特征与含义
  3. Pr剪辑上分攻略---电子相册制作
  4. id-mapping 理解和实现
  5. Redis5.0新特性-集群管理器由redis-trib.rb迁移到redis-cli
  6. 揭作家身体健康堪忧内幕 玩命写作自觉还是自虐
  7. 云台山风景区,感受人生最美的风景
  8. 地铁FAS设备组成及系统结构
  9. html 和 css 代码 总结
  10. Java解析X509证书代码