您的位置: 网界网 > 网络通信 > 正文

输入URL按下回车后究竟发生了什么

2011年04月01日 09:38:11 | 作者:黄永兵 译 | 来源:51CTO | 查看本文手机版

摘要:作为一名软件开发或是网络技术人员,你应该对Web应用程序的运行原理和协议交换,以及涉及到的技术:如浏览器、HTTP、HTML、Web服务器和请求处理程序等都有所了解才行。在这篇文章中,我们将深入探讨你访问某个URL时发生的一系列...

标签
协议交换
网络技术
Web应用程序

作为一名软件开发或是网络技术人员,你应该对Web应用程序的运行原理和协议交换,以及涉及到的技术:如浏览器、HTTP、HTML、Web服务器和请求处理程序等都有所了解才行。在这篇文章中,我们将深入探讨你访问某个URL时发生的一系列事情。

1、你在浏览器中输入某个URL

我们从这里开始:

图 1

图 1

2、浏览器查找该域名对应的IP地址

图 2

图 2

第一步是找出所访问域名对应的IP地址,按以下顺序循环查找DNS记录:

◆浏览器缓存 - 浏览器会缓存DNS记录一段时间,有趣的是,操作系统不会告诉浏览器每条DNS记录的存活时间,浏览器按照固定的周期进行缓存(每种浏览器的保留时间从2-30分钟长度不定)。

◆操作系统缓存 - 如果浏览器缓存中没有要找的记录,浏览器会产生一个系统调用(在Windows中是gethostbyname),操作系统有它自己的缓存。

◆路由器缓存 - 请求继续来到你的路由器,路由器通常也有自己的DNS缓存。

◆ISP DNS缓存 - 下一步要检查的是ISP的DNS服务器,当然也是有缓存的。

◆递归查找 - ISP的DNS服务器开始一个递归查找,从根域服务器开始,到.com顶级域名服务器,再到Facebook的域名服务器,正常情况下,DNS服务器将会缓存.com域名服务器的名字,因此不一定需要访问根域服务器。

下面是一个递归DNS查找过程示意图:

图 3

图 3

关于DNS一个令人担心的问题是,整个域名如wikipedia.org或facebook.com只映射到单个IP地址,幸运的是,有许多方法来消除这个问题。

◆循环DNS :DNS查找返回多个IP地址,例如,facebook.com真实情况是映射到了4个IP地址。

◆负载均衡: 由专用硬件监听一个特定IP地址,然后将请求转发给其它服务器,大型网站一般都使用了昂贵的高性能负载均衡设备。

◆基于地理位置的DNS: 将域名映射到不同地理位置的IP地址提高扩展性,对于托管静态内容的服务器布局来说,这个方法很有用,不同服务器之间不需要相互同步状态。

◆Anycast(任播): 它是一种路由技术,单个IP地址可以映射到多台物理服务器,遗憾的是,任播对TCP不友好,在实际中很少使用。

大多数DNS服务器本身使用任播实现高可用和DNS查找的低延迟。

12345
[责任编辑:李夏艳 li_xiayan@cnw.com.cn]