一、概述
网络请求简短来说就是客户端(如浏览器、移动应用或任何联网设备)与服务器之间进行数据交换的过程。这个过程涉及到多种协议和技术,确保信息能够准确无误地从一方传输到另一方。下面我们将深入说明网络请求的完整流程以及协议。
二、网络请求
1、URL输入与DNS解析
- 用户从浏览器地址栏输入URL
- 浏览器解析URL请求协议、域名、端口以及路径
- 浏览器先检查本地hosts检查网址映射,再向本地DNS服务器请求解析出IP地址
2、TCP建立连接
浏览器通过解析的IP地址以及TCP协议向服务器端建立连接(80端口),HTTPS是(443端口)
三次握手目的:为了保证数据能正常发送到服务器端,确认双方能正常收发通信
- 第一次握手:客户端向发送一段带有SYN标志的数据包,请求建立连接
- 第二次握手:服务器接收到客户端的SYN包后,会回复一个带有SYN和ACK标志的数据包,表示收到请求并同意建立连接
- 第三次握手:客户端接收到服务器的SYN-ACK包后,再发送一个带有ACK标志的数据包给服务器,表示收到,双方可以开始进行数据传输
3、TLS/SSL握手(https协议)
TLS/SSL握手目的:在实际数据传输前,对通讯双方进行身份认证、协商加密算法、交换加密密钥,确保客户端和服务器之间建立一个安全、可靠的通信通道
- 客户端 : 客户端向服务器发送一个消息,包含它支持的TLS版本、可用的加密算法列表以及其他参数。
- 服务器端 : 服务器选择并确认双方都支持的TLS版本和加密算法,并返回自己的
数字证书。 - 密钥交换: 根据选定的加密算法,双方进行密钥交换。对于RSA加密,客户端会生成一个
预主密钥(Pre-Master Secret),然后使用服务器给的公钥加密后发送给服务器,服务器用私钥解密获得客户端分发的密钥。 - 完成握手: 双方各自基于预主密钥计算出相同的
会话密钥(Session Key)。之后,客户端发送一条加密的消息给服务器,表明握手结束;服务器也回复确认消息。
4、HTTP/HTTPS请求
- 客户端向服务器发送请求报文,请求报文包括请求方法(GET、POST等)、请求体(资源路径)、HTTP版本以及HTTP头部信息
- 服务器接受请求报文并内容处理,准备响应报文
- 服务器向客户端发送响应报文,包括HTTP版本、HTTP响应状态码、响应体(返回的资源)
5、TCP连接释放
四次挥手目的:断开服务器与客户端之间的通信,释放端口,减少资源浪费
- 第一次挥手:客户端发送一个FIN,告诉服务器端数据发送完毕,请求
终止连接,客户端进入FIN_WAIT_1状态(不可发送数据,可以接收数据) - 第二次挥手:服务端收到FIN后,发送一个ACK给客户端,确认序号为收到seq+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态(等待剩余数据传输完毕)
- 第三次挥手:服务端发送一个FIN,服务端进入LAST_ACK状态(数据传输完毕)
- 第四次挥手:客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务端,确认序号为收到seq+1,服务端进入CLOSED状态,完成四次挥手
6、客户端页面渲染
浏览器开始解析从服务端接收到的报文,获取到HTML文档以及其他资源(如CSS、JavaScript文件等)后开始构建DOM树、CSSOM树,并最终生成Render Tree进行绘制。即便TCP连接已经关闭,只要这些资源已经被下载完毕并且存储在内存中,浏览器仍然可以根据已有的数据继续渲染页面内容
三、网络协议说明
什么是协议:协议(Protocol)是通信或信息交换过程中,双方或多方共同遵守的一组规则和约定。
1、TCP/IP协议
IP(Internet Protocol,因特网互联协议)协议提供主机和主机间的通信,为了完成不同主机的通信,需要使用某种方式来进行唯一标识,这个标识就是IP地址TCP(Transmission Control Protocol,传输控制协议)TCP协议是在IP协议提供的主机间通讯功能的基础上,完成两个主机上的通讯
2、HTTP与HTTPS
2.1 定义
HTTP(Hyper Text Transfer Protocol):全称超文本传输协议,是一种应用层协议,是基于 TCP/IP 通信协议来传递数据HTTPS(Hyper Text Transfer Protocol Secure):全称超文本传输安全协议,也是一种应用层协议,是以安全为目标的HTTP通道,HTTPS是在HTTP的基础上通过使用SSL (Secure Sockets Layer) 或 TLS (Transport Layer Security) 协议来身份认证,数据加密,保证数据的保密性和完整性
2.2 HTTP与HTTPS区别
- HTTP超文本传输协议传输的数据都是未加密的,明文传输,使用HTTP协议传输信息安全性低
- HTTPS是由SSL/TLS+HTTP协议构建的可加密传输、身份认证的网络协议,安全性高
- HTTPS需要申请证书,免费证书较少,大部分需要购买
- HTTP与HTTPS连接方式不同,端口也不同,HTTP使用端口是(80),HTTPS使用端口是(443)
3、SSL/TLS协议
3.1 定义
SSL(Secure Sockets Layer,安全套接层)是为网络通信提供安全以及数据完整性的一种安全协议。TLS(Transport Layer Security,传输层安全)是用于两个通信应用程序之间提供保密性和数据完整性。是SSL的升级版,- 它们是一种用于加密和验证应用程序(如浏览器)和Web服务器之间发送的数据的协议,身份验证,加密HTTPS的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。
3.2 SSL与TLS区别
| 特性 | SSL | TLS |
|---|---|---|
| 版本 | SSL 1.0、2.0、3.0 | TLS 1.0、1.1、1.2、1.3 |
| 安全性 | 存在已知的安全漏洞,安全性低 | 修复了SSL的漏洞,安全性高 |
| 握手过程 | SSL握手较简单 | TLS握手更加安全与复杂 |
| 加密算法 | 支持较弱的加密算法 | 支持更强的加密算法 |
| 兼容性 | 目前普遍禁用SSL | 现代系统普遍使用TLS |
3.3 加密方法
- 加密和解密需要两个不同的密钥,故被称为
非对称加密;加密和解密都使用同一个密钥的称为对称加密 对称加密:优点在于加密,解密效率通常比较高。缺点是密钥分发的安全性低,对称加密在通信前协商公钥是明文传输容易泄露密钥,不能保证私密性。非对称加密:优点是支持数字签名,身份认证,安全性更高,缺点是加密算法复杂,解密速度慢,资源消耗多
3.4 作用
SSL/TLS协议作用:它是认证用户和服务,加密数据,防止他人冒充,检验数据的完整性,可靠性的应用层协议