详解DNS域名解析全过程

2023-11-12

关于dns域名解析的大致过程很多人都知道,但有些细枝末节的东西容易遗忘,今天有空整理一下,作为以后复习用偷笑,如有不对的地方,还望指正。解析大致过程如图(不喜欢看图的可以直接跳过大笑):



当一个用户在地址栏输入www.taobao.com时,DNS解析有大致十个过程惊恐,如下:


1. 浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来设置。


2. 如果浏览器缓存中没有(专业点叫还没命中),浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。在windows中可通过c盘里一个叫hosts的文件来设置,如果你在这里指定了一个域名对应的ip地址,那浏览器会首先使用这个ip地址。




但是这种操作系统级别的域名解析规程也被很多黑客利用,通过修改你的hosts文件里的内容把特定的域名解析到他指定的ip地址上,造成所谓的域名劫持。所以在windows7中将hosts文件设置成了readonly,防止被恶意篡改。


3.  如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。


4. 如果LDNS仍然没有命中,就直接跳到Root Server 域名服务器请求解析


5. 根域名服务器返回给LDNS一个所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如.com .cn .org等)地址


6. 此时LDNS再发送请求给上一步返回的gTLD


7. 接受请求的gTLD查找并返回这个域名对应的Name Server的地址,这个Name Server就是网站注册的域名服务器


8. Name Server根据映射关系表找到目标ip,返回给LDNS


9. LDNS缓存这个域名和对应的ip


10. LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束


写完了,真的累啊!大哭





























本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

详解DNS域名解析全过程 的相关文章

  • 满足我需求的强制门户

    我正在为我的组织寻找强制门户 我看到很多这样的应用程序将允许用户在 a 输入凭据或 b 付款后通过 我正在寻找的东西有点不同 让我介绍一些有关我的系统的基础知识 我正在使用活动目录和内部 DNS 运行基于 Windows 的网络 我有一个内
  • 将 MVC 站点上传到服务器

    我已经使用 C 构建了一个 NET MVC4 网站 现在我想将其上传到互联网 我从未上传过任何网站 所以我真的不知道我需要做什么步骤 使用什么样的服务器有关系吗 因为当我通过VS2012运行网站时 我可以看到它运行在IIS Express上
  • 没有 ID 字段或具有部分 NULL 复合字段的 Grails 域类

    根据对上一个问题的回答 此处回答 Grails 中的 SQL 数据库视图 https stackoverflow com questions 425294 sql database views in grails 427691 我尝试使用域
  • DNS 与 GKE 内部负载均衡器

    我在 GKE 上有两个 kubernetes 集群 一个公共集群处理与外界的交互 另一个私有集群仅供内部使用 公共集群需要访问私有集群上的一些服务 我已通过以下方式将这些服务暴露给公共集群的 Pod内部负载均衡器 https cloud g
  • 不同端口上的 Route 53 记录集

    我是一名 ruby 开发者 刚刚开始学习一些 Node js 我正在运行一个实例AWS主持我的rails带有乘客 nginx 监听的应用程序port 80 现在我想举办一个node js同一实例 t1 micro 上的应用程序并将其监听端口
  • 如何使用 Python 3.x 获取网站的 IP 地址?

    我有一个代表域名的字符串 如何使用Python 3 x获取对应的IP地址 像这样的东西 gt gt gt get ip http www stackoverflow com 64 34 119 12 gt gt gt import sock
  • 将多个域指向 Nginx 中的一台虚拟主机

    基本上 我想将每个域名重定向到一个虚拟主机 即文档 http nginx org en docs http server names html看起来很清楚 server listen 80 server name domain1 com w
  • PHP邮件、DNS请求超时、FQDN

    我要实现mail 我的 PHP 工作Windows Server 2012 R2 为此 我首先安装了SMTP依照指示这一页 http www vsysad com 2014 09 setup and configure smtp serve
  • 如何使用移动设备访问 Apache 虚拟主机?

    设置主机名为 server1 和 server2 的 Apache 虚拟主机后 由于无法修改 iOS 或 Android 中的 etc hosts 文件 我将如何使用 iPhone 或任何移动设备 访问它们 我的理解是 您必须按名称引用虚拟
  • Go中从IP地址获取域名

    我正在尝试从 IP 地址解析主机名 这显然比我想象的更具挑战性 我尝试过使用几个函数 包括net LookupHost方法 但它们似乎都只是返回我输入的IP地址 这是我正在使用的代码 package main import fmt net
  • 更改 Cookie 域

    我使用 apache 作为我的应用程序 Web 服务器的代理 并希望即时更改与 sessionid cookie 关联的域名 该cookie有一个与之关联的 company com域 我想使用apache mod rewrite 或一些类似
  • 从具有动态外部 IP 的计算机连接到 Azure SQL Server

    我正在尝试将具有动态外部 IP 的本地笔记本电脑连接到我们的 Azure SQL Server 为此 我创建了一个虚拟网络网关并将笔记本电脑连接到该网关 此外 我还向 SQL Server 添加了一个专用端点 之后 我可以使用telnet成
  • .htaccess 将子域重写到目录

    是否可以使用 htaccess将子域重写为目录 Example http sub domain example 显示内容 http domain example subdomains sub 尝试将其放入您的 htaccess file R
  • 每个用户的子域

    我拥有一个网站 为每个注册用户提供一个专用空间 如下所示 www mywebpage com user1 www mywebpage com user2 www mywebpage com user3在这条路径中 用户有他的迷你网站 我想为
  • 域名通过“dig”存在

    是否可以通过检查 dig 的输出来检查域名是否存在 在绑定源中我发现了这些常量 0 DNS R NOEROR 1 DNS R FORMERR 2 DNS R SERVFAIL 3 DNS R NXDOMAIN 4 DNS R NOTIMP
  • 在 JavaScript 中确定域名?

    使用有什么区别 if document domain toLowerCase indexOf domainName 1 and if window location href match 1 toLowerCase indexOf doma
  • 可以分配给一个 Heroku 应用程序的最大域名数量?

    我正在与一位客户讨论一个项目 该客户希望他的用户可以通过自己的域名访问该应用程序 如果他们选择的话 可以分配给一个 Heroku 应用程序的自定义域数量是否有限制 The Heroku 文档 https devcenter heroku c
  • Docker DNS 设置

    我尝试使用自定义网络和 dos 设置创建 docker 容器 docker网络创建 driver bridge opt com docker network bridge enable ip masquerade true opt com
  • MongoDB:连接到 MongoDB 的 resolv.conf 的 DNS 问题

    我想从 MongoDB Atlas 导出一些数据 如果我执行下面的命令 它会尝试连接localhost并导出数据 mongoexport uri mongodb srv
  • 跨多个域的 ASP.NET 会话

    是否有合适的 NET 解决方案来在多个域上提供持久服务器会话 即 如果该网站的用户在 www site1 com 下登录 他们也将在 www site2 com 下登录 安全是我们正在开发的程序的一个问题 Thanks 它是否需要在会话中

随机推荐