相信不少web开发的同学在面试过程中都被问过这样一个问题,讲述下一个用户在浏览器中点击一个链接开始到浏览器响应结果显示的过程中发生了什么?这里我们基于目前B/S网络架构大致的架构设计讲解下这一过程。
下图是目前B/S网络架构采用的架构设计,可能在一些细节上实现方式有所不同但不影响我们分析:
用户在客户端浏览器输入一个网址或者点击一个连接完成的一次完整的web请求过程如下:
1)首先客户端浏览器会请求DNS与域名服务器将域名解析成对应的IP地址;
2)根据IP地址找到对应的应用服务器,发起Http请求;
3)服务器处理请求返回响应的数据资源,客户端浏览器接受数据渲染之后显示在页面;
这个过程中服务端为了处理更多的请求可能加了多台服务器形成集群,这时候请求会先到达负载均衡设备,基于指定的负载均衡策略选择对应的集群节点服务器处理到达的请求。此外请求中如果涉及静态资源例如CSS、图片、JS文件等,一些大型网站为了减少对业务服务器网络带宽的占用通常会把这部分资源放到CDN服务器,客户端浏览器还需要额外向CDN服务器发起HTTP请求获取静态资源