URL是如何被解析为远程服务器地址的(过程超详细)

总所周知,互联网中的每一台机器都拥有自己唯一的身份信息IP,用这个身份信息就可以找到到一台唯一的机器。我们在向一台远程主机请求资源时可以直接输入这台机器的IP以获得所需资源。但更多的时候我们却不是输入的IP,而是一个域名,比如www.baidu.com,www.jd.com,那我们在浏览器输入这个域名后,浏览器到底做了什么工作,帮助我们找到了我们所需的资源呢?必然,这一串域名和某主机之间存在一定的映射关系,从而使得访问一个固定的网址就等于向该机器发起了请求。

现在,这篇文章就来谈谈我们在输入一串URL后到底发生了什么。

实际上,我们在浏览器输入一个域名后,他将会被解析成一个IP地址,从而找到某台机器向我们提供资源,如何将域名解析成一个IP地址就属于DNS的工作范畴。

DNS域名解析过程

当用户输入www.baidu.com并按下回车后,就是将域名解析为IP地址的DNS解析过程,整个解析过程大约有十个步骤,如图所示(1,2步单独说)

图1

  1. 浏览器首先会检查缓存中有没有这个域名的对应的解析过的IP地址,如果缓存中有,这个解析过程结束。 不过,浏览器缓存域名也是存在一定的限制的,主要是在缓存大小和时间方面。时间通常为几分钟到几小时不等,可以通过TTL属性(Time To Live)来设置,这个属性太大和太小都不好,太大会使得缓存时间变长,一旦远程主机的IP有变化,整个解析过程就可能出现异常;如果TTL太小,就会导致用户每次访问网站都要重新解析一次域名。
  2. 如果用户的浏览器缓存中没有,浏览器就会查找操作系统中是否有这个域名对应的DNS解析过程 ,在Windows中可以通过C:\Windows\System32\drivers\etc这个路径(如果是Linux,路径就是/etc)下的hosts文件来设置,在这个文件中,你可以将任何域名解析到任何能够访问的IP地址。如果该文件指定了一个域名对应的IP地址,那么浏览器就会首先使用这个IP地址。(题外话,我们在测试时可以将一个域名解析到一台测试服务器上,这样不用修改任何代码就能够测试到单独的服务器上的代码的业务逻辑是否正确)
    当解析到这个配置文件中的域名某个域名时,操作系统会在缓存中缓存这个解析结果,不过同样受缓存大小和时间的限制。

前面两个步骤都是在本机完成的,所以没有在上图中展示。到这里仍然还没有的涉及真正的域名解析服务器,如果在本机中依然无法完成域名解析,就会真正请求域名服务器来解析这个域名了。

  1. 在我们的网络配置中都会有“DNS服务器地址”这一项,这个地址就是用于解决经过上述两个过程仍然没有完成的解析工作的情况。操作系统会把这个域名发送给这里设置的LDNS,也就是本地区的域名服务器(对应上图的Local DNS Server)。他们中一般都会缓存域名解析结果,同样也受到上述的大小和时间的限制。 到这里,大约80%的域名解析就完成了,所以LDNS主要承担了域名的解析工作。

  2. 如果到了LDNS仍然没有完成域名解析工作呢?那么就会直接路由到Root Server域名服务器请求解析。

  3. 域名服务器返回给本地域名服务器一个所查询的主域名服务器(gTLD Server)地址。gTLD是国际顶级域名服务器,如.com、.cm、.org等等。

  4. 本地域名服务器再向上一步返回的gTLD服务器发送请求。

  5. 接受请求的gTLD服务器查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server通常就是我们注册的域名服务器,例如在某个域名服务提供商申请的域名,那么这个域名解析任务就由这个域名提供商的服务器来完成。

  6. Name Server域名服务器会查询存储的域名和IP的映射关系表,在正常情况下都根据域名得到目标IP记录,连同一个TTL值返回给DNS Server域名服务器。

  7. 返回该域名对应的IP值与TTL值,Local DNS Server会缓存这个域名和IP的对应关系,缓存时间由TTL值控制

  8. 把解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中。

到此为止,整个域名的解析过程就结束了,用户根据得到的IP访问远程主机,获得资源,但在实际的DNS解析过程中,可能还不止这10个步骤,如Name Server也可能有多级,或者一个GTM来负载均衡控制,这都是有可能影响这个解析过程的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值