首先,以下是我参考网上的答案和自己的思考,给出自己的想法。如有任何疑问,欢迎投诉。从用户在浏览器中输入一个URL,到整个页面被渲染出来,这个过程发生了什么?今天简单的把整个过程写下来,以后慢慢完善。1.获取IP地址为什么需要获取IP地址?IP地址对应的是一台真实的物理机,IP地址就像一个人的身份证一样是唯一的。当用户请求服务器时,他只需要输入分配给服务器的唯一IP地址。但由于IP地址不易记忆,所以使用了更具语义的域名来代替IP地址,一个域名可以对应一个对应的IP地址。例如,用户输入www.baidu.com,域名对应多个IP,域名解析服务器会按照一定的规则为用户分配其中一个IP地址。首先,它会在浏览器的缓存中搜索以查看该URL是否被缓存。如果是,则直接向该URL对应的服务器发送请求;如果不是,则进行下一步;该URL及其对应的URL是否保存在本地的hosts文件中,如果保存,则直接向该URL对应的服务器发送请求;如果不是,则进行下一步;向本地DNS服务器(通常由本地网络接入服务器提供商提供,如中国移动)发送DNS请求,本地DNS服务器会先查询其缓存记录。如果存在,则将域名对应的IP地址返回给用户。域名的一级域名服务器地址;本地主机根据返回的地址向一级域名服务器发送DNS查询请求。...不断迭代,直到找到对应域名所在的服务器,并向其发送DNS查询请求。服务器返回域名对应的IP地址;2、TCP/IP连接三次握手:为什么要进行三次握手?如果是双向握手,就像下面的对话,只有前两句。可能的问题是:客户端之前发送了一个连接请求报文,但是由于网络原因卡在了网络中,然后到达了服务端,服务端收到了报文。请求,会建立一个连接,等待客户端传输数据。这时候客户端根本不知道发生了什么,造成了服务器资源的白白浪费。注:图片来自https://baijiahao.baidu.com/s...客户:可以要数据吗?Server:OKClient:OK三、浏览器向web服务器发送http请求。客户端与服务器建立连接后,就可以进行通信了。下面说一下客户端请求静态资源和动态资源。静态资源:如果客户端请求静态资源,Web服务器根据URL地址查找服务器对应路径下的文件,然后返回一个HTTP响应给客户端,包括状态行、响应头和响应文本。动态资源:如果客户端请求动态资源,Web服务器会调用CGI/VM执行程序完成相应的操作,比如查询数据库,然后返回查询结果数据集,返回运行结果-HTML文件到网络服务器。然后Web服务器将HTML文件返回给用户。4.浏览器渲染浏览器拿到HTML文件后,根据渲染规则进行渲染:解析HTML,构建DOM树,解析CSS,生成CSS规则树,合并DOM树和CSS规则树,生成渲染tree,布局渲染树,绘制渲染数,树,即绘制页面的像素信息,GPU对每一层进行合成,结果呈现在浏览器窗口中。五四挥手当客户端没有数据发送时,需要断开连接释放服务器资源。注:图片来自https://baijiahao.baidu.com/s...客户端:我没有数据要发送,我打算断开连接服务器:我已经收到你的请求,我还有数据没有发送已发送,你等待服务器:我的数据已发送,你可以断开客户端:好的,你断开连接(客户端独白:我将在最大段生命周期的2倍后关闭连接。如果我收到来自服务器,我知道服务器没有收到我的句子,所以我会重新发送)。最后服务器端收到客户端发送的消息后断开连接,客户端也关闭连接。
