在浏览器中输入一个网址点击回车看到页面后发生了什么?

从输入URL到页面展示到底发生了什么

1、输入地址

在浏览器中输入网址的时候,浏览器其实就已经在匹配可能得 url 了,浏览器会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全url地址

对于chrome 的浏览器,会直接从缓存中查找是否缓存过该网页,如果找到则把网页展示出来,也就是说,当你还没有按下 enter发送请求,页面就已经加载出来了。

2、浏览器查找域名的 IP 地址

1、浏览器首先会重本地硬盘的hosts文件中查看是否存在这个域名对应的规则,如果匹配上就会直接使用hosts文件中的ip地址。

2、本地hosts文件中没有匹配的域名ip时,浏览器会发送一个DNS请求到本地的DNS服务器,

3、本地DNS收到请求后,会查询缓存记录,如果查询到将结果返回,若未查到则向DNS根服务器递归查询

4、如果DNS根目录都没有找到域名与ip的对应记录,根DNS服务器会告诉本地DNS服务器向域名解析服务器发起查询请求,如.com域服务器

5、本地DNS服务器向域名解析服务器发起查询请求,域名解析服务器返回域名解析服务器的地址或返回域名不存在。

6、最后本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系。

3、浏览器向 web 服务器发送一个 HTTP 请求

1、浏览器获取到域名与ip对应关系后,会以本机一个随机端口(1024<端口<65535)向服务器的WEB程序(常用的有httpd,nginx等)80端口发起TCP的连接请求。

2、请求经过网络中间各种路由设备到达服务器端后到达目标设备网卡进入到内核的TCP/IP协议栈开始识别该连接请求,解封包,一层一层的剥开最终到达WEB程序,最终建立了TCP/IP的连接。

TCP连接:

3、建立了TCP连接之后,就可以发起http请求。

HTTP请求包含:

| 请求方法URI协议/版本

| 请求头(Request Header)

| 请求正文:

4、服务器处理请求

1、后端从在固定的端口接收到TCP报文开始,它会对TCP连接进行处理,对HTTP协议进行解析,并按照报文格式进一步封装成HTTP Request对象,供上层使用

有些网站会将你的请求到反向代理服务器中,客户端不是直接通过HTTP协议访问某网站应用服务器,而是先请求到Nginx,Nginx分发请求不同应用服务器( 将同一个应用部署在多台服务器上,将大量用户的请求分配给多台机器处理 ),然后将结果返回给客户端,这里Nginx的作用是反向代理服务器。

Nginx负载均衡:

5、服务器返回一个 HTTP 响应

1、服务器收到请求并处理请求后,它会把它的处理结果返回,也就是返回一个HTPP响应。

HTTP响应构成

l  状态行

l  响应头(Response Header)

l  响应正文

6、浏览器解析响应内容并展示

1、浏览器解析html文件

浏览器在解析html文件时,会”自上而下“加载,并在加载过程中进行解析渲染。

解析过程中,浏览器首先会解析HTML文件构建DOM树,然后解析CSS文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。这个过程比较复杂,涉及到两个概念: reflow(回流)和repain(重绘)。

2、浏览器解析JS

JS的解析是由浏览器中的JS解析引擎完成的,比如谷歌的是V8

3、浏览器发送请求获取嵌入在 HTML 中的资源

在浏览器显示HTML时,它会注意到需要获取其他地址内容的标签。浏览器会发送一个获取请求来重新获得这些文件

猜你喜欢

转载自blog.csdn.net/u012002125/article/details/103645516