浏览器工作原理2-域名解析

当你在地址栏输入网址https://blog.csdn.net/并按下回车的时候,浏览器首先需要做的就是域名解析

我们在浏览器地址栏输入的通常都是域名,域名其实就是IP地址的代称。使用域名有两个好处:

  • 好记。
    使用这一串带有特殊含义的字符作为域名,而不需要记忆没有含义的数字。
  • 方便管理
    域名具有唯一性,在资源更改IP地址时,只需要进行新IP地址与恒定域名的转换,即可实现将资源移动到网络地址拓扑中的不同物理位置1

那么为了访问到资源,浏览器就需要使用域名系统(DNS - Domain Name System)帮你把域名转化为IP地址。只有知道了IP地址路由器才知道发请求给谁。

那么浏览器在接收到一个域名解析请求它做了些什么呢?
(1)
浏览器(内心os):我先查查缓存。
浏览器(内心os):查不到,交给DNS去查吧。

对话解析:浏览器当然不会拿到一个域名就傻傻交给DNS去解析,它会首先查看缓存中有没有解析过的IP地址,查完浏览器自身的DNS缓存查系统DNS系统缓存,如果有且没有过期的话本次解析愉快结束。如果都没有的话浏览器这时候才会真正调用DNS。

(2)
浏览器:请问你知道https://blog.csdn.net/IP地址吗?
LDNS(内心os): 我先查查缓存。
LDNS(内心os): 居然查不到,我可是可以解决80%的问题。没办法,问问根域名服务器吧。

对话解析:浏览器发送域名解析请求到LDNS(Local DNS Server),大多数人的LDNS是使用运营商为你自动分配的本地区的域名服务器。LDNS这时候会查找自己的缓存,如果找到且没有过期那么本次解析结束。如果依然没有找到,LDNS会发起解析请求到根域名服务器。

(3)
LDNS: 请问你知道https://blog.csdn.net/IP地址吗?
根域名服务器: 我不知道https://blog.csdn.net/的IP地址,但我知道net域的地址,你去问问它吧。

LDNS: 好的。

对话解析:LDNS发送域名解析请求到根域名服务器,根域名服务器不知道这个域名对应的IP地址,但是它知道net域(国际顶级域名)对应的IP地址。于是它把net域对应的地址发给LDNS.

(4)
LDNS: 请问你知道https://blog.csdn.net/IP地址吗?
net域服务器: 我不知道https://blog.csdn.net/的IP地址,是我知道blog.csdn.net这个域的DNS地址,你去问问它吧。

LDNS: 好的。

对话解析:LDNS发送域名解析请求到net域服务器,net域服务器不知道这个域名对应的IP地址,但是它知道此域名注册的域名服务器的地址,于是它把blog.csdn.net域名对应的DNS地址发给LDNS。

(5)
LDNS: 请问你知道https://blog.csdn.net/IP地址吗?
域名服务器(内心os): 我查查先,咦,查到了。
域名服务器: https://blog.csdn.net/对应的IP地址是XX.XX.XX,它的TTL值是XX

对话解析:域名服务器会查询存储的域名和IP的映射关系表,找到对应的IP地址后连同一个生存时间值TTL(Time To Live)值返回给LDNS2

(6)
LDNS(内心os): 我先缓存下来,下一次就不用再问了。
LDNS: https://blog.csdn.net/对应的IP地址是XX.XX.XX,它的TTL值是XX。
系统: 好的,我会告诉浏览器。
浏览器: 收到。

对话解析:LDNS会将IP地址和域名的映射关系缓存下来,然后根据TTL值决定此映射关系被缓存的时间。然后通过系统告诉浏览器解析到的IP地址3,然后浏览器进行下一步动作。

注意:以上为一个典例。现实情况下,多级域名服务器或GTM(广域网流量管理)等,都可能会影响域名解析的过程2


  1. https://zh.wikipedia.org/wiki/域名 ↩︎

  2. https://blog.csdn.net/qq_36326947/article/details/72864528 ↩︎ ↩︎

  3. https://www.jianshu.com/p/fbe0e9fa45a6 ↩︎

猜你喜欢

转载自blog.csdn.net/weixin_43862101/article/details/84637048