1、首先是URL地址解析
浏览器会判断输入的是一个合法的URL还是一个待搜索的关键词,并且根据输入的内容自动完成字符编码等 *** 作
2、接着发起真正的URL请求,如果浏览器本地缓存了这个url请求所需的资源,则会直接将数据转发给浏览器进程,如果没有缓存,则会查询DNS域名解析,首先查找浏览器有没有DNS缓存(比如之前有访问记录),如果有则返回IP。如果没有就寻找本地的host文件,看看有没有域名记录,如果有则返回IP,如果本地host文件没有则直接向本地DNS服务器请求,如果还是没有,继续向上DNS服务器请求,直到返回。
3、浏览器拿到ip后,在向服务器发起http请求之前,会先和服务器建立TCP连接。
TCP连接的过程是什么?
答:其实就是三次握手。
第一次握手:客户端发送’SYN’数据包给服务端。
第二次握手:服务端接收到客户的数据包后,返回’SYN/ACK’数据发给客户端
第三次握手:浏览器收到服务端数据包后,发送’ACK’数据给服务端。
连接建立成功后,浏览器就可以开始发送http请求到服务器请求数据了。
每个http请求包含三个部分。
1、请求方法、请求地址、http协议版本(请求行)
2、请求头
3、请求正文
请求头和请求正文之间是有一个空行,这个行非常重要,他表示请求头已经结束,接下来的是请求正文。
然后后端会从固定的端口接收到TCP报文开始,它会对TCP链接进行处理,对HTTP协议进行解析,并按照报文格式进一步封装成HTTP Request对象。
一般大型的网站会将你的请求发到反向代理服务器中。因为当网站访问量非常大,网站越来越慢。一台服务器已经不够用了。于是将同一个应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。
此时,客户端部署直接通过http协议访问某网站应用服务器,而是先请求nginx,nginx再请求应用服务器,然后将结果返回给客户端。这里nginx的作用是反向代理服务器。
同时也带来了一个好处,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。
通过nginx的反向代理,我们到达了web服务器,服务端处理请求,访问数据库,然后将处理结果返回。也就是返回一个http响应。
http响应与请求相似,http响应也由3个部分构成,状态行,响应头、空行、响应正文。
浏览器接收到来自服务器的响应资源后,如果响应资源进行了压缩,则需要进行解压。然后对响应资源做缓存,
接下里对资源进行解析。这些资源包括html、css和JavaScript等文件。
1、html通过html解析器输出dom树
2、css通过css解析器输出css规则
3、结果dom树和css规则,计算出dom书中每个节点的具体样式,生成渲染树。
4、浏览器根据渲染树开始布局和绘制,会出发回流和重绘
5、构建图层树,显示页面。
以上就是从输入URL到页面渲染的整个过程。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)