返回
从网址到页面,网络请求经历了什么?
前端
2023-12-11 23:17:55
输入网址,解析域名
当您在浏览器中输入一个网址(URL)时,首先浏览器会检查本地缓存中是否有该网址对应的IP地址。如果有,则直接使用该IP地址连接到目标网站。如果没有,则浏览器会向DNS服务器发出请求,查询该网址对应的IP地址。
DNS服务器是一个负责将域名解析为IP地址的服务器。当浏览器向DNS服务器发送请求时,DNS服务器会根据自己的缓存或向更高层的DNS服务器查询,最终返回该网址对应的IP地址。
建立TCP连接
在获得目标网站的IP地址后,浏览器会与该IP地址建立TCP连接。TCP(传输控制协议)是一种面向连接的、可靠的传输层协议,用于在两个网络实体之间建立和维护一个虚拟电路。
TCP连接的建立过程称为三次握手。在三次握手过程中,客户端和服务器会交换信息,以确保双方都已准备好进行数据传输。
发送HTTP请求
TCP连接建立后,浏览器会向目标网站发送HTTP请求。HTTP(超文本传输协议)是一种用于在万维网上传输数据的协议。HTTP请求包括请求方法、请求路径、请求头等信息。
接收HTTP响应
服务器收到HTTP请求后,会处理请求并返回HTTP响应。HTTP响应包括响应状态码、响应头、响应体等信息。
浏览器解析并渲染页面
浏览器收到HTTP响应后,会解析响应体中的HTML代码,并将其渲染成可视的页面。
浏览器缓存
在加载网页的过程中,浏览器会将网页中的资源(如图片、样式表、脚本等)缓存起来。当用户再次访问该网页时,浏览器会直接从缓存中加载资源,从而减少加载时间。
浏览器进程请求DNS返回域名对应的IP和端口号
- 如果之前DNS数据缓存服务缓存过当前域名信息,就会直接返回缓存信息;
- 否则,发起请求获取根据域名解析出来的IP和端口号,如果没有端口号,http默认80,https默认443。
- 如果是https请求,还需要建立TLS连接。
建立TCP连接
- TCP三次握手,即客户端发送SYN包,服务端回复SYN+ACK包,客户端回复ACK包。
发送HTTP请求
- HTTP请求包括请求方法、请求路径、请求头等信息。
- 请求方法常用的有GET、POST、PUT、DELETE等。
- 请求路径是请求的资源路径。
- 请求头包含了浏览器、操作系统等信息。
接收HTTP响应
- HTTP响应包括响应状态码、响应头、响应体等信息。
- 响应状态码表示服务器处理请求的结果,如200表示请求成功,404表示资源不存在。
- 响应头包含了服务器、内容类型等信息。
- 响应体是服务器返回的具体数据。
浏览器解析并渲染页面
- 浏览器收到HTTP响应后,会解析响应体中的HTML代码,并将其渲染成可视的页面。
- 浏览器会根据HTML代码中的标签,创建相应的DOM元素。
- 浏览器会根据CSS代码中的样式,对DOM元素进行渲染。
- 浏览器会根据JavaScript代码,对页面进行交互。
浏览器缓存
- 在加载网页的过程中,浏览器会将网页中的资源(如图片、样式表、脚本等)缓存起来。
- 当用户再次访问该网页时,浏览器会直接从缓存中加载资源,从而减少加载时间。