HTTP
超文本传输协议是一个用于传输超媒体文档(例如 HTML)的应用层协议。
- 队头阻塞:由于HTTP 1.0规定下一个请求必须在前一个请求响应到达之前才能发送,因此如果前一个请求响应一直不到达,那么后面的请求就会被阻塞。
- 管道化:允许在第一个应答被完全发送之前就发送第二个请求,以降低通信延迟。在HTTP/1.1中,由于请求和响应必须按照顺序进行处理,当一个请求被阻塞时,后续的请求也必须等待。这种情况下,即使使用了管道化技术,在一个TCP连接上发送多个请求,仍然会受到队头阻塞的影响,因为响应必须按照请求的顺序返回。
- 多路复用:允许同时发送多个请求和响应,减少了延迟,提高了网络吞吐量。
-
QUIC 通过 UDP 运行多个流,并为每个流独立实现数据包丢失检测和重传,因此如果发生错误,只有该数据包中包含数据的流才会被阻止。保证了可靠性
HTTP/2怎么解决队头阻塞
-
二进制分帧层:HTTP/2将请求和响应数据分割成更小的二进制帧,每个帧都有自己的帧头,这样可以在一个TCP连接上同时发送多个帧。由于帧是独立的,当某个帧被阻塞时,不会影响其他帧的传输。
-
多路复用:HTTP/2允许在一个TCP连接上并行发送多个请求和响应。每个请求和响应都有自己的流(Stream)标识符,通过这个标识符可以区分不同的流。这样,即使某个请求或响应因为网络延迟而被阻塞,其他的请求和响应仍然可以继续进行处理,避免了队头阻塞的问题。
-
请求优先级: HTTP/2支持为每个流设置优先级,可以告诉服务器哪些请求是更重要的,服务器可以根据优先级来处理请求。这样可以确保重要的请求能够及时处理,减少队头阻塞对用户体验的影响。
-
服务器推送(Server Push):HTTP/2允许服务器在客户端发起请求之前,主动将一些预期需要的资源推送给客户端。这样可以避免客户端请求资源时的额外往返延迟,提高性能,并减少队头阻塞的影响。
HTTPS
超文本传输安全协议,是 HTTP 协议的加密版本。它使用 SSL 或 TLS 协议来加密客户端和服务器之间所有的通信。安全连接允许客户端与服务器安全地交换敏感数据,例如网上银行或者在线商城等涉及金钱的操作。
TLS 提供三种主要服务,有助于确保与之交换的数据的安全性
身份验证:通过认证,通信的每一方都可以验证另一方的身份。
加密:在用户代理和服务器之间传输数据时对数据进行加密,以防止未经授权的各方读取和解读数据。
完整性:TLS 确保数据在加密、传输和解密过程中不会丢失、损坏、篡改或伪造任何信息。