1、浏览器查找域名的IP地址
导航的第一步是通过访问域名找出其IP地址。DNS查找过程如下:
- 浏览器缓存——浏览器会缓存DNS记录一段时间(2分钟到30分钟不等并由浏览器决定)。
- 系统缓存——如果浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用。
- 路由器缓存—接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。
- ISP DNS缓存——接下来要检查的是ISP缓存DNS的服务器。在这里一般都能找到相应的缓存记录。
- 递归搜索——你的ISP的DNS服务器从根域名服务器开始进行递归搜索(顶级域名服务器到一般DNS服务器)
备注:一下方法可以消除这个瓶颈:循环DNS(DNS查找时返回多个IP时的解决方案。举例来说,Facebook.com实际上就对应了四个IP地址。)
负载平衡器(以一个特定IP地址侦听并将网络请求转发到群服务器上的硬件设备)
地理DNS根据用户所处的地理位置,通过吧域名映射到多个不同的IP地址提高可扩展性。
2、浏览器给web服务器发送一个HTTP请求
GET http://facebook.com/ HTTP/1.1
Accept: application/x-ms-application,image/jpeg
User-Agent:Mozilla/4.0
Accept-Encoding:gzip,deflate
Connection:Keep-Alive
Host:facebook.com
3、如果是大型服务器发送永久重定向响应
HTTP/1.1 301 Moved Permanently
Cache-Control:private,no-store,on-cache
Expires:Sat,01 jan 2000
location:http://www.facebook.com
4、浏览器跟踪重定向地址
现在,浏览器知道了“http:// ”,在发送另外一个请求。
5、服务器“处理”请求
服务器接收到获取请求,然后处理并返回一个响应。表面上看起来是一个顺利的任务,但中间发生了很多有意思的东西:
a、WEB服务器软件
web服务器软件(IIS、Apache、……)接收到HTTP请求,然后确定执行什么请求处理来处理它。请求处理时一个能够读懂请求并且能生成HTML来进行相应的程序
b、请求处理
请求处理阅读请求及它的参数和cookies。它会读取也可能更新一些数据,并将数据存储在服务器上。然后,处理会生成一个HTML响应。
6、服务器发回一个HTML响应
HTTP/1.1 200 OK
Cache-Control:private,no-store……
……
<Doctype!>
7、浏览器开始显示HTML
在浏览器没有完整接收全部HTML文档时,它就开始显示这个页面了
8、浏览器发送获取嵌入在HTML中的对象
图片、css样表、javascript文件
9、浏览器发送异步(AJAX)请求