【面试题】HTTP与HTTPS的区别

【面试题】HTTP与HTTPS的区别

  • [1. HTTP 协议介绍](#1. HTTP 协议介绍)
  • [2. HTTP 协议通信过程](#2. HTTP 协议通信过程)
  • [3. HTTPS 协议](#3. HTTPS 协议)
    • [3.1 HTTPS 协议介绍](#3.1 HTTPS 协议介绍)
    • [3.2 HTTPS 的核心---SSL/TLS 协议](#3.2 HTTPS 的核心—SSL/TLS 协议)
      • [3.2.1 SSL 和 TLS 的区别?](#3.2.1 SSL 和 TLS 的区别?)
      • [3.2.2 SSL/TLS 的工作原理](#3.2.2 SSL/TLS 的工作原理)
        • [3.2.2.1 非对称加密](#3.2.2.1 非对称加密)
        • [3.2.2.2 对称加密](#3.2.2.2 对称加密)
  • [4. 对比](#4. 对比)
  • 总结
  • 附录

1. HTTP 协议介绍

HTTP 协议,全称超文本传输协议(Hypertext Transfer Protocol)。顾名思义,HTTP 协议就是用来规范超文本的传输,超文本,也就是网络上的包括文本在内的各式各样的消息,具体来说,主要是来规范浏览器和服务器端的行为的。

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

2. HTTP 协议通信过程

HTTP 是应用层协议,它以 TCP(传输层)作为底层协议,默认端口为 80. 通信过程主要如下:

  1. 服务器在 80 端口等待客户的请求。
  2. 浏览器发起到服务器的 TCP 连接(创建套接字 Socket)。
  3. 服务器接收来自浏览器的 TCP 连接。
  4. 浏览器(HTTP 客户端)与 Web 服务器(HTTP 服务器)交换 HTTP 消息。
  5. 关闭 TCP 连接。

HTTP 协议优点:扩展性强、速度快、跨平台支持性好。

3. HTTPS 协议

3.1 HTTPS 协议介绍

HTTPS 协议(Hyper Text Transfer Protocol Secure)超文本传输安全协议 ,是 HTTP 的加强安全版本。HTTPS 是基于 HTTP 的 ,也是用 TCP 作为底层协议 ,并额外使用 SSL/TLS 协议用作加密和安全认证。默认端口号是 443

HTTPS 协议中,SSL 通道通常使用基于密钥的加密算法,密钥长度通常是 40 比特或 128 比特。

HTTPS 协议优点:保密性好、信任度高。

3.2 HTTPS 的核心---SSL/TLS 协议

HTTPS 之所以能达到较高的安全性要求,就是结合了 SSL/TLSTCP 协议,对通信数据进行加密,解决了 HTTP 数据透明的问题。接下来重点介绍一下 SSL/TLS 的工作原理。

3.2.1 SSL 和 TLS 的区别?

SSL 指安全套接字协议 (Secure Sockets Layer),首次发布与 1996 年。SSL 的首次发布其实已经是他的 3.0 版本,SSL 1.0 从未面世,SSL 2.0 则具有较大的缺陷(DROWN 缺陷------Decrypting RSA with Obsolete and Weakened eNcryption)。很快,在 1999 年,SSL 3.0 进一步升级,新版本被命名为 TLS 1.0。因此,TLS 是基于 SSL 之上的,但由于习惯叫法,通常把 HTTPS 中的核心加密协议混称为 SSL/TLS。

3.2.2 SSL/TLS 的工作原理

3.2.2.1 非对称加密

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

某个自助邮局,每个通信信道都是一个邮箱,每一个邮箱所有者都在旁边立了一个牌子,上面挂着一把钥匙:这是我的公钥,发送者请将信件放入我的邮箱,并用公钥锁好。但是公钥只能加锁,并不能解锁。解锁只能由邮箱的所有者------因为只有他保存着私钥。这样,通信信息就不会被其他人截获了,这依赖于私钥的保密性。

非对称加密的公钥和私钥需要采用一种复杂的数学机制生成(密码学认为,为了较高的安全性,尽量不要自己创造加密方案)。公私钥对的生成算法依赖于单向陷门函数。

3.2.2.2 对称加密

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

对称加密:通信双方共享唯一密钥 k,加解密算法已知,加密方利用密钥 k 加密,解密方利用密钥 k 解密,保密性依赖于密钥 k 的保密性。

对称加密的密钥生成代价比公私钥对的生成代价低得多,那么有的人会问了,为什么 SSL/TLS 还需要使用非对称加密呢?因为对称加密的保密性完全依赖于密钥的保密性。在双方通信之前,需要商量一个用于对称加密的密钥。我们知道网络通信的信道是不安全的,传输报文对任何人是可见的,密钥的交换肯定不能直接在网络信道中传输。因此,使用非对称加密,对对称加密的密钥进行加密,保护该密钥不在网络信道中被窃听。这样,通信双方只需要一次非对称加密,交换对称加密的密钥,在之后的信息通信中,使用绝对安全的密钥,对信息进行对称加密,即可保证传输消息的保密性。


4. 对比

对比项 HTTP HTTPS
端口 80 443
安全性 明文传输,容易被窃听、篡改、劫持 加密传输,支持身份认证,防窃听、防篡改、防冒充
加密方式 使用 SSL/TLS(握手阶段:非对称加密,通信阶段:对称加密 + MAC)
证书 不需要 需要 SSL/TLS 证书(CA 签发或自签名)
性能 速度快(无加密开销) 初始握手比 HTTP 慢,但后续通信差异不大(支持会话复用、TLS1.3 已大幅优化)
浏览器显示 普通链接,无安全提示 地址栏显示 🔒 锁标志(或证书信息)
应用场景 不涉及敏感数据的普通网页 涉及登录、支付、隐私等敏感操作的网站

总结

  • 端口号: HTTP 默认是 80,HTTPS 默认是 443。
  • URL 前缀: HTTP 的 URL 前缀是 http://,HTTPS 的 URL 前缀是 https://。
  • 安全性和资源消耗: HTTP 协议运行在 TCP 之上,所有传输的内容都是明文 ,客户端和服务器端都无法验证对方的身份。HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议,SSL/TLS 运行在 TCP 之上。所有传输的内容都经过加密,加密采用对称加密但对称加密的密钥用服务器方的证书进行了非对称加密。 所以说,HTTP 安全性没有 HTTPS 高,但是 HTTPS 比 HTTP 耗费更多服务器资源。

附录

  1. HTTP vs HTTPS(应用层) https://javaguide.cn/cs-basics/network/http-vs-https.html
相关推荐
一只月月鸟呀6 小时前
AI使用 Node.js modbus-serial 搭建一个可交互的 Modbus TCP 主站与从站 Demo
网络协议·tcp/ip·node.js
绵绵细雨中的乡音7 小时前
数据链路层协议——以太网,ARP协议
网络·网络协议
绵绵细雨中的乡音7 小时前
网络层协议—IP协议
网络·网络协议·tcp/ip
安卓开发者10 小时前
在鸿蒙NEXT中发起HTTP网络请求:从入门到精通
网络·http·harmonyos
渡我白衣10 小时前
从传输层协议到 UDP:轻量高效的传输选择
网络·网络协议·udp
岁岁岁平安10 小时前
SpringBoot3+WebSocket+Vue3+TypeScript实现简易在线聊天室(附完整源码参考)
java·spring boot·websocket·网络协议·typescript·vue
北京耐用通信11 小时前
自动化通信谜团:耐达讯自动化Modbus RTU如何变身 Profibus连接触摸屏
人工智能·网络协议·自动化·信息与通信
你的人类朋友1 天前
HTTP为什么不安全?
安全·http·https
dog2501 天前
TCP 的韧性:端网关系对传输协议的影响
网络·网络协议·tcp/ip