Http与Https:你应该了解的区别与优势

在日常的网络应用中,我们经常会遇到 HTTPHTTPS 这两个协议。虽然它们看起来差不多,但在技术实现和安全性上却有着显著的区别。作为一名后端工程师,我将带你深入了解这两者的关键区别、优缺点,以及 HTTPS 的加密策略。

什么是 HTTP 和 HTTPS?

HTTP(超文本传输协议)是用于从 Web 服务器传输网页内容的协议。HTTP 是无状态的,意味着每次客户端请求都会被服务器视为一次全新的请求,不会保留上次请求的任何信息。HTTP 是基于 TCP/IP 协议族的应用层协议,通常运行在 80 端口。

HTTPS(超文本传输安全协议)是 HTTP 的安全版本。与 HTTP 不同,HTTPS 在传输数据时使用了 SSL/TLS 协议来加密通信数据,确保数据在传输过程中不会被窃取或篡改。HTTPS 默认使用 443 端口。

TCP/IP协议知识背景

HTTP 和 HTTPS 都依赖于底层的 TCP/IP 协议来建立可靠的网络连接。TCP(传输控制协议)负责将数据切分为包,并确保数据包的顺序正确、无误差地到达目标设备。而 IP(互联网协议)则负责为每个设备分配一个唯一的地址,并确保数据包能够准确地到达目标设备。

在使用 HTTP 或 HTTPS 进行通信时,数据从客户端通过 TCP 协议到达服务器,再由 IP 协议确保数据传输的正确路径。这个过程是非常基础和重要的,它保证了网络通信的稳定性和可靠性。

TCP/IP 握手过程

在 TCP/IP 协议中,建立连接的过程是通过 三次握手(Three-Way Handshake)来完成的。这是为了确保双方的通信通道可靠且有效。

​ 1.SYN:客户端发送请求

客户端向服务器发送一个带 SYN 标志的报文段,表示客户端希望与服务器建立连接。这时,客户端进入 SYN_SEND 状态。

​ 2.SYN-ACK:服务器响应

服务器收到客户端的请求后,会向客户端发送一个带 SYNACK 标志的报文段,表示同意建立连接,并准备好接收客户端的请求。此时,服务器进入 SYN_RECEIVED 状态。

​ 3.ACK:客户端确认

客户端收到服务器的响应后,会发送一个带 ACK 标志的报文段,表示连接建立完成。此时,客户端和服务器都进入 ESTABLISHED 状态,数据传输可以开始。

三次握手的目的是确保双方都能接收到对方的通信请求,并准备好建立连接。它通过交换序列号来确认双方的接收能力,确保数据传输的可靠性。

TCP/IP 挥手过程

TCP 连接关闭的过程是通过 四次挥手(Four-Way Handshake)来完成的。与握手过程相反,挥手过程是为了优雅地断开连接,确保双方都已经完成数据传输。

​ 1.FIN:客户端请求关闭连接

当客户端完成数据传输后,会发送一个带 FIN 标志的报文段,表示客户端希望关闭连接。此时,客户端进入 FIN_WAIT_1 状态。

​ 2.ACK:服务器响应

服务器收到客户端的 FIN 报文段后,确认关闭连接,并向客户端发送一个带 ACK 标志的报文段,表示同意关闭连接。此时,服务器进入 CLOSE_WAIT 状态。

​ 3.FIN:服务器请求关闭连接

服务器在准备好关闭连接时,会发送一个带 FIN 标志的报文段,表示服务器也希望关闭连接。此时,服务器进入 LAST_ACK 状态。

​ 4.ACK:客户端确认

客户端收到服务器的 FIN 报文段后,发送一个带 ACK 标志的报文段,表示确认关闭连接。此时,客户端进入 TIME_WAIT 状态,等待足够的时间以确保服务器收到确认报文段,然后才完全关闭连接。

四次挥手的过程是为了保证数据传输的完整性,并确保双方都能有序地关闭连接,避免出现数据丢失或连接残留的问题。

HTTP 各版本之间的差异

HTTP 协议自诞生以来经历了多个版本的演进。我们常见的版本有 HTTP/1.0、HTTP/1.1 和 HTTP/2,每个版本在性能和功能上都有所不同。

​ •HTTP/1.0:是最早的 HTTP 版本,每次请求都需要重新建立连接,这在网络延迟较高时会影响性能。

​ •HTTP/1.1:相比 HTTP/1.0,增加了持久连接(即 TCP 连接可以复用),避免了每次请求都建立新连接的问题。但仍然存在一些性能瓶颈,如头部阻塞问题。

​ •HTTP/2:这是目前最为常用的 HTTP 协议版本,采用了多路复用技术,允许在同一个连接上并行处理多个请求和响应,大大提高了性能。

HTTP与HTTPS的优缺点

HTTP的优点:

​ •简单:HTTP 协议非常简单,适用于数据传输量不大、对安全要求不高的场景。

​ •速度较快:由于不进行加密和认证,HTTP 在数据传输时速度较快。

HTTP的缺点:

​ •不安全:HTTP 数据传输是明文的,容易受到中间人攻击(MITM),不适合传输敏感信息。

​ •容易受到篡改:数据在传输过程中可能会被篡改,导致信息不完整或不正确。

HTTPS的优点:

​ •安全性高:通过 SSL/TLS 加密,HTTPS 能够确保数据在传输过程中的安全性,防止数据被窃取或篡改。

​ •身份认证:通过证书验证服务器的身份,防止假冒网站。

​ •提高用户信任:现代浏览器会标识 HTTPS 网站为安全网站,增加用户的信任感。

HTTPS的缺点:

​ •性能开销:由于涉及到加密和解密过程,HTTPS 的性能相对 HTTP 略低,特别是在高并发场景下。

​ •证书费用:虽然有免费的证书提供商,但有些高端证书依然需要付费购买。

HTTPS的加密策略

HTTPS 使用 SSL/TLS 协议进行加密。其工作原理大致如下:

​ 1.握手阶段:客户端与服务器通过 SSL/TLS 协议建立加密连接。此过程中,服务器会发送公钥证书,客户端通过公钥验证服务器的身份。

​ 2.密钥交换:客户端和服务器交换密钥(包括对称密钥),这个过程使用了公钥加密算法,保证传输的安全性。

​ 3.数据加密:在数据传输过程中,所有的信息都使用对称密钥加密,保证数据的机密性和完整性。

SSL/TLS 协议通过 公钥加密对称密钥加密 的结合,确保了通信的安全性。

总结

在互联网安全日益重要的今天,HTTPS 已成为保护用户隐私和数据安全的必备协议。而 HTTP 虽然在传输速度上有一定优势,但在现代网络环境下,其不安全的特点使得它逐渐被 HTTPS 所替代。了解 HTTP 和 HTTPS 的区别,不仅有助于我们更好地理解网络通信的原理,还能帮助我们做出更好的技术选择。

希望这篇文章能帮助你更好地理解 HTTP 与 HTTPS,提升你的网络安全意识。记得,无论是搭建个人网站,还是开发生产环境中的应用,HTTPS 都是保护用户数据安全的首选!