大家好,我是一名前端爱好者,爱好摸鱼,近期在看计算机网络原理方面的知识的时候突然想到了一个问题-------操作者在浏览器输入一个网址,网址输入完是怎么样的一个流程之后才会显示相应的页面呢?
出于好奇心,我特地查找了许多资料,总算明白了一丢丢,所以特地来总结一波,嘿嘿,希望能帮到大家!!!
1.操作者输入URL回车
操作者输入URL回车之后会优先从本地查找浏览器的缓存记录的,如果之前访问过URL则浏览器会记录DNS一段时间;如果本地浏览器查找不到就会去本地的操作系统缓存中查找之前保存的DNS记录;如果操作系统缓存中查找不到就会去路由器缓存中查找DNS记录;若上述均失败则会继续向ISP缓存(学过Java的应该都有了解)中搜索。在前面所有步骤没有缓存的情况下,本地 DNS 服务器会将请求转发到互联网上的根域
2.DNS解析
用于解析IP地址所绑定的域名 将域名解析成IP地址
3.TCP/IP连接
TCP/IP连接,又称三次握手
主要步骤为:
第一步:客户端向服务端发送数据包并进入等待状态
第二步:服务端收到数据包之后,向客户端发送自己的数据包,并进入接收状态
第三步:客户端收到来自服务端的数据包后,向服务端发送确认数据包,发送完毕之后双方便进入连接成功状态
4.HTTP请求响应
客户端从服务端接收到响应数据
5.服务端解析
服务端通过HTML文档解析器解析文档生成DOM树
通过CSS解析器解析css样式文件生成样式结构体,又称cssom
JavaScript引擎加载并执行js脚本
将前面生成的DOM树和CSSOM合并成渲染树
根据渲染树来渲染,最终计算出每个节点的几何信息
6.浏览器进行渲染
将浏览器绘制出的各个节点渲染到屏幕上
7.TCP四次挥手断开连接
- 客户端发送连接释放报文,并停止发送数据,进入到终止等待状态
- 服务收到连接释放报文,发送确认报文,服务器进入关闭等待状态
- 客户端收到服务器的确认请求后,就进入终止等待状态,等待服务器发送连接释放报文
- 服务器将最后的数据发送完毕后就向客户端发送连接释放报文,服务器进入最后确认状态,等待客户端确认
- 客户端收到服务器的连接释放报文后发出确认,客户端进入时间等待状态
- 服务器只要接收到客户端发出的确认就立即进入closed状态
以上就是操作者从输入URL到页面显示的大概流程,其中隐含了计算机网络的相关知识以及浏览器的渲染原理,希望能帮到大家!!!