HTTP 与 HTTPS 的区别

基本概念

**HTTP(HyperText Transfer Protocol:超文本传输协议)**是一种应用层协议,主要用于在网络上进行信息的传递,特别是用于Web浏览器和服务器之间的通信。

它使用明文方式发送数据,这意味着传输的内容可以被任何拦截者轻易读取,因此它不适合用于传输敏感信息,如信用卡号、密码等。

HTTP默认工作在TCP协议的80端口

**HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)**是在HTTP的基础上添加了SSL/TLS加密层的安全版本。它不仅提供了数据的加密传输,还提供了对网站服务器的身份验证。

通过SSL/TLS,HTTPS能够确保数据在传输过程中的隐私和完整性,防止数据被窃取或篡改。

HTTPS默认工作在TCP协议的443端口。

工作流程

HTTP工作流程:

  1. TCP三次握手:客户端与服务器进行TCP连接,完成三次握手。
  2. 发送请求:客户端向服务器发送HTTP请求,包括请求行(如GET /index.html)、请求头和请求体。
  3. 服务器处理请求:服务器解析请求,并定位到相应的资源。
  4. 返回响应:服务器将资源以HTTP响应的形式返回给客户端,包括状态行、响应头和响应体。
  5. 关闭连接:通信结束后,客户端和服务器可以选择关闭连接,也可以保持连接以便后续的请求复用。

HTTPS工作流程:

  1. TCP三次握手:客户端与服务器建立TCP连接,完成三次握手。
  2. SSL/TLS握手:进行SSL/TLS握手,包括客户端验证服务器的数字证书,确保服务器的身份是可信的。
  3. 协商加密参数:通过非对称加密的方式,客户端和服务器协商出对称加密算法的密钥、Hash算法的密钥等加密参数。
  4. 建立加密隧道:SSL/TLS握手完成后,双方建立了一个加密的通信隧道,后续的所有数据都将在这个隧道中传输。
  5. 发送请求:在加密隧道中,客户端向服务器发送HTTP请求。
  6. 服务器处理请求:服务器解析请求,并返回相应的资源。
  7. 返回响应:在加密隧道中,服务器将资源以HTTP响应的形式返回给客户端。
  8. 关闭连接:通信结束后,可以选择关闭连接,也可以选择保持连接以便后续的请求复用。

看一张经典图加深理解(图源网络)

HTTP 与 HTTPS 的区别

从安全性角度来看,HTTP是超文本传输协议,数据传输过程是明文的,这意味着数据在传输过程中可能被截获或篡改,存在一定的安全风险。而HTTPS通过在TCP和HTTP之间加入SSL/TLS安全协议,对数据进行加密传输,有效地保护了数据的安全性和完整性。此外,HTTPS还提供了服务器身份认证,确保用户访问的是真实可靠的网站,而不是钓鱼网站。

从网络模型的角度来看,HTTP工作于应用层,而HTTPS由于加入了SSL/TLS安全层,可以认为是在传输层上增加了安全性处理。

从性能和资源消耗方面来看,由于HTTPS需要进行加密和解密操作,相较于HTTP,其速度可能会稍慢,且对服务器和客户端的资源消耗也更大。

相关推荐
FPGA_Linuxer1 小时前
FPGA 100G UDP纯逻辑协议栈
网络协议·fpga开发·udp
Luck小吕4 小时前
耗时两天!我在 SIP 协议的「Via 头域」里踩了个「NAT 陷阱」(附人类能看懂的避坑指南)
后端·网络协议
小王努力学编程4 小时前
【Linux网络编程】应用层协议HTTP(实现一个简单的http服务)
linux·服务器·网络·c++·网络协议·学习·http
whoarethenext5 小时前
https详解
网络·网络协议·https
Hy行者勇哥6 小时前
HTTP, AMQP, MQTT之间的区别和联系是什么?华为云如何适配?
网络·网络协议·http·华为云
敲上瘾7 小时前
基于Tcp协议的应用层协议定制
linux·运维·服务器·网络·c++·网络协议·tcp/ip
曹天骄11 小时前
100个用户的聊天系统:轮询 vs WebSocket 综合对比
网络·websocket·网络协议
桃花岛主7014 小时前
STUN协议 与 TURN协议
网络·网络协议
欧先生^_^15 小时前
OSPF网络协议
网络·网络协议·智能路由器
Luck小吕19 小时前
两天两夜!这个 GB28181 的坑让我差点卸载 VSCode
后端·网络协议