以输入www.baidu.com为例
一、浏览器查找域名并解析到对应的IP
1)检索查找:
- 浏览器自己的DNS缓存。
- 操作系统的DNS缓存。
- 路由器缓存。
- ISP DNS 缓存。
2)递归搜索:
首先在本地域名服务器中查询IP地址,如果没有找到的情况下,本地域名服务器会向根域名服务器发送一个请求,如果根域名服务器也不存在该域名时,本地域名会向com顶级域名服务器发送一个请求,依次类推下去。直到最后本地域名服务器得到baidu的IP地址并把它缓存到本地,供下次查询使用。
3)至此,浏览器已经得到了域名对应的 IP 地址。
二、建立TCP连接,三次握手:
1.主机向服务器发送一个建立连接的请求;
2.服务器接到请求后发送同意连接的信号;
3.主机接到同意连接的信号后,再次向服务器发送了确认信号,自此,主机与服务器两者建立了连接。
三、浏览器给web服务器发送HTTP请求:
浏览器根据 URL 内容生成 HTTP 请求,请求中包含请求文件的位置、请求文件的方式等等;
四、服务器响应:
1)服务器接到请求后,会根据 HTTP 请求中的内容来决定如何获取相应的 HTML 文件;
2)服务器将得到的 HTML 文件发送给浏览器;
五、浏览器对页面进行渲染,呈现给用户:
1)浏览器解析html源码,然后创建DOM树。
2)浏览器解析CSS代码,计算出最终的样式数据。
3)构建出DOM树,并且计算出样式数据后,进一步构建渲染树(rendering tree)。
4)一旦渲染树创建好了,浏览器就可以根据渲染树直接把页面绘制到屏幕上。