从输入URL到页面加载完成的过程中都发生了什么事情?

转载 (原文地址) yiXiaoWang 随笔 HTTP 1576阅读 2015-04-13 11:38:07 举报

1.输入url,按下回车后,这时你的浏览器首先查询DNS服务器,将url转换成ip地址。首先会去本地hosts查找对应域名的IP地址,如果没有找到,那么将会连接到DNS服务器,获取该域名对应的IP地址。不过首先你会发现,你在不同的地区或者不同的网络(电信、联通、移动)的情况下,转换后的ip地址很可能是不一样的,这首先涉及到负载均衡的第一步,通过DNS解析域名时将你的访问分配到不同的入口,同时尽可能保证你所访问的入口是所有入口中可能较快的一个(这和后文的CDN不一样)。 你通过这个入口成功的访问了example.com的实际的入口ip地址。这时你产生了一个PV,即Page View,页面访问。
DNS查找过程:
浏览器缓存 – 浏览器会缓存DNS记录一段时间。 操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存各自固定的一个时间(2分钟到30分钟不等)。
系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。
路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。
ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。
递归搜索 – 你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com顶级域名服务器到Facebook的域名服务器。一般DNS服务器的缓存中会 有.com域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了。
循环 DNS 是DNS查找时返回多个IP时的解决方案。举例来说,Facebook.com实际上就对应了四个IP地址。
负载平衡器 是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。 一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。
地理 DNS 根据用户所处的地理位置,通过把域名映射到多个不同的IP地址提高可扩展性。这样不同的服务器不能够更新同步状态,但映射静态内容的话非常好。
Anycast 是一个IP地址映射多个物理主机的路由技术。 美中不足,Anycast与TCP协议适应的不是很好,所以很少应用在那些方案中。
大多数DNS服务器使用Anycast来获得高效低延迟的DNS查找。
2.DNS查询之后,返回IP地址给浏览器。
3.有了 IP 地址,就可以通过 Socket API 来发送数据了,这时可以选择 TCP 或 UDP 协议。
4.浏览器给web服务器发送一个HTTP请求。
5.服务器的永久重定向响应(从 http://example.comhttp://www.example.com)。
6.浏览器跟踪重定向地址。
7.服务器处理请求。
8.服务器返回一个 HTTP 响应。
9.浏览器显示 HTML。
10.浏览器发送请求获取嵌入在 HTML 中的资源(如图片、音频、视频、CSS、JS等等)。
11.将渲染好的页面图像显示出来,并开始响应用户的操作。
12.浏览器发送异步请求。

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复