HTTP协议是互联网通信的基础,随着网络环境的变化和安全需求的提升,HTTP协议也在不断演进。本文将详细介绍HTTPS、HTTP/2和HTTP/3的核心特性和工作原理。
传统的HTTP协议使用明文传输数据,就像寄送明信片一样,所有经过路由器的设备都能看到传输内容。这带来了三大安全隐患:
窃听风险:第三方可以轻易获取通信内容
篡改风险:数据在传输过程中可能被修改
冒充风险:攻击者可以伪装成服务器或客户端
HTTPS = HTTP + SSL/TLS,它在HTTP之下增加了安全层。默认端口从80变为443,核心安全功能由SSL/TLS协议提供。
保密性:传输的数据必须加密,防止被窃听
完整性:数据在传输过程中不能被篡改
身份认证:确保通信双方的身份真实可靠
不可否认性:发送方不能否认已发送的信息
对称加密
加解密使用相同密钥
优点:速度快,适合大数据量加密
缺点:密钥分发不安全
非对称加密
使用公钥和私钥配对
公钥公开,私钥保密
优点:安全性高
缺点:计算复杂,速度慢
实际HTTPS连接使用两种加密方式的结合:
使用非对称加密安全交换对称加密的密钥
使用对称加密进行实际数据传输
这种方案既保证了安全性,又兼顾了性能。
即使使用非对称加密,仍然存在公钥被替换的风险。攻击者可能将自己的公钥发给客户端,冒充真实服务器。
证书颁发机构(CA)负责验证服务器身份并签发数字证书。证书包含:
服务器公钥
证书持有者信息
签发机构信息
有效期
数字签名
DV证书:域名验证,基础安全
OV证书:组织验证,中等安全
EV证书:扩展验证,最高安全级别(浏览器地址栏显示公司名称)
浏览器内置了信任的根CA证书,通过证书链逐级验证:网站证书 → 中间CA证书 → 根CA证书
Client Hello:客户端发送支持的TLS版本、密码套件和随机数
Server Hello:服务器确认TLS版本、密码套件,发送随机数和证书
证书验证:客户端验证服务器证书真实性
密钥交换:使用ECDHE算法生成预备主密钥
生成会话密钥:结合两个随机数和预备主密钥生成主密钥
完成握手:双方确认密钥生成成功
开始加密通信:使用对称加密传输HTTP数据
HTTP/1.1存在队头阻塞问题,即前一个请求未完成时,后续请求需要等待。
二进制分帧
将消息分解为独立的帧,乱序发送,在接收端重组。
多路复用
在单个连接上同时发送多个请求和响应,解决了队头阻塞问题。
头部压缩
使用HPACK算法压缩HTTP头部,减少冗余数据。
服务器推送
服务器可以主动向客户端推送资源。
HTTP/2引入流的概念:
每个流有唯一ID标识
流内帧有序,流间帧无序
支持优先级设置
客户端和服务端都可以创建流
虽然HTTP/2解决了应用层队头阻塞,但TCP协议本身的队头阻塞问题依然存在。TCP要求按序处理数据包,丢失一个包会阻塞后续所有包。
HTTP/3基于QUIC协议,主要改进:
基于UDP
QUIC在UDP基础上实现,避免了TCP的队头阻塞问题。
内置加密
TLS 1.3成为QUIC的组成部分,连接建立更快。
连接迁移
使用连接ID而非IP地址标识连接,网络切换时无需重新握手。
前向纠错
通过冗余数据包提高弱网环境下的性能。
客户端通过HTTP/2的Alt-Svc帧获悉服务器支持HTTP/3
客户端基于QUIC建立新连接
在QUIC连接上传输HTTP语义
会话复用
服务器和客户端缓存会话密钥,避免重复握手。
OCSP装订
服务器预先获取证书状态信息,减少客户端验证时间。
TLS 1.3
简化握手过程,将两次往返减少为一次。
减少域名分片,充分利用多路复用
优化资源加载顺序,利用服务器推送
实施有效的缓存策略
对于现代网站:
优先启用HTTPS
支持HTTP/2
逐步部署HTTP/3
根据用户设备和网络条件智能选择协议
适合使用HTTPS + HTTP/2,平衡安全性和兼容性。
视频会议、在线游戏等实时性要求高的场景更适合HTTP/3。
HTTP/3的连接迁移特性特别适合移动网络环境。
从HTTP/1到HTTP/3,网络协议在安全性、性能和用户体验方面都有了显著提升:
HTTPS 解决了通信安全问题
HTTP/2 优化了传输效率
HTTP/3 从根本上重构了传输机制
在实际应用中,应根据具体需求选择合适的协议组合。对于大多数场景,启用HTTPS和HTTP/2已经能带来明显改善,而对性能有极致要求的应用则可以考虑部署HTTP/3。
随着网络环境的不断变化,HTTP协议仍会继续演进,但安全、高效、可靠的通信目标将始终不变。
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!
 到任何有关部署 HTTPS 或 HTTP/2 的问题,都推荐先用 Qualys SSL Labs SSL Server Test 跑个测试,大部分问题都能被诊断出来。
 每个HTTP请求和响应都会带有相应的头部信息。默认情况下,在发送XHR请求的同时,还会发送下列头部信息: Accept、Accept-Charset、Accept-Encoding、Connection、Host
 HTTP状态码是用以表示网页服务器HTTP响应状态的3位数字代码,其中第一位数字表示响应类别,响应类别从1到5分为五种,分别代表:临时响应、成功、重定向、请求错误、服务器错误。
 在客户端与服务器数据传输的过程中,HTTP协议的传输是不安全的,也就是一般情况下HTTP是明文传输的。但HTTPS协议的数据传输是安全的,也就是说HTTPS数据的传输是经过加密的
在最早的时候,第一个定稿的http协议是http/0.9版本,在这个版本里面,http协议,它的内容,非常非常的简单 只有一个命令。http协议的历史,其中当然还有https,https是http的安全版本,它实际使用的内容跟http/1.1没有很大的区别
Axios 是一个基于 promise 的 HTTP 库 ,使用了axios来进行数据的请求,一般都需要我们对它进行封装处理。下面简单介绍下如何对axios的二次封装的实现,以及在vue中的使用。
设置ConnectionPoolTimeout:这定义了从ConnectionManager管理的连接池中取出连接的超时时间,此处设置为1秒。设置ConnectionTimeout:这定义了通过网络与服务器建立连接的超时时间。Httpclient包中通过一个异步线程去创建与服务器的socket连接
X-Forwarded-For一般是每一个非透明代理转发请求时会将上游服务器的IP地址追加到X-Forwarded-For的后面,使用英文逗号分割;X-Real-IP一般是最后一级代理将上游IP地址添加到该头中;X-Forwarded-For是多个IP地址,而X-Real-IP是一个
HTTP协议是基于请求/响应模式的,因此只要服务端给了响应,本次HTTP连接就结束了,根本没有长连接这一说。网络上说HTTP分为长连接和短连接,其实本质上是说的TCP连接。TCP连接是一个双向的通道,它是可以保持一段时间不关闭的,因此TCP连接才有真正的长连接和短连接这一说。
一些常见的状态码为:200 - 服务器成功返回网页;404 - 请求的网页不存在;503 - 服务不可用。1xx(临时响应):表示临时响应并需要请求者继续执行操作的状态代码。2xx (成功):表示成功处理了请求的状态代码。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!