【Http】HTTP vs HTTPS区别,HTTP 协议通信过程,SSL/TLS对称加密,HTTP 1.0 、1.1、2.0HTTP长连接与短连接操作步骤

时间:2024-03-17 16:35:56

目录

HTTP vs HTTPS

区别

HTTP

HTTP 协议通信过程

HTTPS

SSL/TLS

对称加密

HTTP 1.0 、1.1、2.0

HTTP长连接与短连接

短连接:

长连接:

操作步骤


HTTP vs HTTPS

区别
  • HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。

  • HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。

  • 两者的默认端口不一样,HTTP 默认端口号是 80,HTTPS 默认端口号是 443。

  • HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。

HTTP

全称超文本传输协议,就是用来规范超文本的传输

HTTP 是一个无状态协议,也就是说服务器不维护任何有关客户端过去所发请求的消息。这其实是一种懒政,有状态协议会更加复杂,需要维护状态(历史信息),而且如果客户或服务器失效,会产生状态的不一致,解决这种不一致的代价更高。

HTTP 协议通信过程
  1. 服务器在 80 端口等待客户的请求。

  2. 浏览器发起到服务器的 TCP 连接(创建套接字 Socket)。

  3. 服务器接收来自浏览器的 TCP 连接。

  4. 浏览器(HTTP 客户端)与 Web 服务器(HTTP 服务器)交换 HTTP 消息。

  5. 关闭 TCP 连接。

HTTPS

是 HTTP 的加强安全版本。HTTPS 是基于 HTTP 的,也是用 TCP 作为底层协议,并额外使用 SSL/TLS 协议用作加密和安全认证。默认端口号是 443.

SSL/TLS

SSL/TLS 的核心要素是非对称加密。非对称加密采用两个密钥——一个公钥,一个私钥。在通信时,私钥仅由解密者保存,公钥由任何一个想与解密者通信的发送者(加密者)所知。

对称加密

使用 SSL/TLS 进行通信的双方需要使用非对称加密方案来通信,但是非对称加密设计了较为复杂的数学算法,在实际通信过程中,计算的代价较高,效率太低,因此,SSL/TLS 实际对消息的加密使用的是对称加密。

HTTP 1.0 、1.1、2.0

HTTP是一种用于在客户端和服务器之间传输数据的协议。、

HTTP/1.0:

  • 无连接:浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接

  • 无状态:服务器不跟踪每个客户端也不记录过去的请求

HTTP/1.1:

  • 引入了持久连接,即在单个连接上可以发送多个请求/响应。

  • 支持请求头部压缩(使用gzip或deflate压缩算法),减少了数据传输量。

  • 支持管道化(pipelining),即可以在一个连接上并发发送多个请求,提高了性能。

  • 引入了分块传输编码(chunked transfer encoding),可以实时传输数据而无需等待整个响应完成。

  • 支持虚拟主机(virtual hosting)和断点续传(byte serving)等功能。

  • 不支持服务器主动推送。

HTTP/2.0:

  • 引入了二进制分帧层,将数据切分为更小的帧进行传输。

  • 使用单个连接来并发处理多个请求和响应,消除了串行阻塞的问题。

  • 支持请求头部压缩(使用HPACK压缩算法),减少了数据传输量。

  • 引入了服务器推送,服务器可以主动将相关资源推送给客户端。

  • 支持流的优先级设置,可以指定哪些请求优先处理,提高了页面加载的效率。

  • 支持头部压缩表,提供了更高效的头部信息传输。

  • 支持服务器推送和多路复用等功能,提升了性能和效率。

HTTP长连接与短连接

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

短连接:

在HTTP/1.0中默认使用短链接,也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端访问的某个HTML或其他类型的Web资源,如 JavaScript文件、图像文件、 CSS 文件等。当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话.

优缺点:

短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。

长连接:

从HTTP/1.1起,默认使用长连接,用以保持连接特性。

在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭。如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。

优点:

  1. 减少连接建立和断开的开销:长连接在建立后可以持续使用,避免了每次请求都需要建立和断开连接的开销,减少了网络通信的延迟和资源消耗。

  2. 提高数据传输效率:由于长连接可以进行多次请求和响应,避免了每次请求都需要进行握手的过程,减少了额外的数据传输量。

  3. 提供实时性和即时通信能力:长连接可以实现实时数据推送和即时通信,服务器可以主动向客户端推送数据,实现实时更新和通知。

  4. 节省服务器资源:长连接可以减少服务器的负载,因为不需要频繁地建立和断开连接,服务器可以更高效地处理多个客户端的请求。

缺点:

  1. 占用资源较长时间:长连接会持续占用服务器和客户端的资源,包括网络连接、内存和处理线程等。如果长时间不活动,可能会造成资源浪费。

  2. 长连接维护的复杂性:长连接需要维护连接的状态和保持心跳,确保连接的可靠性和稳定性。这涉及到连接的管理、超时处理和错误恢复等问题,增加了系统的复杂性。

  3. 可能导致连接的过度占用:如果长连接的数量过多,可能会占用服务器的连接数上限,导致新的连接无法建立。这需要合理设置连接数的上限和管理策略。

  4. 可能存在网络拥塞问题:长连接在持续通信时,如果网络出现拥塞或丢包,可能会影响整个连接的稳定性和性能。

操作步骤

短连接的操作步骤是:建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连

接长连接的操作步骤是:建立连接——数据传输...(保持连接)...数据传输——关闭连接