HTTP1.1、HTTPS、HTTP2.0 、HTTP3.0

HTTP1.1

优点:

整体方面:简单、灵活和易于扩展、应用广泛和跨平台

性能方面:长连接、管道网络传输解决请求队头阻塞(没有使用)

缺点:

安全方面:无状态、明文窃听、伪装、篡改

性能方面:

  • Header未经压缩就发送,只能压缩body,头部冗长
  • 每次发送相同的首部造成比较多的性能浪费
  • 响应队头阻塞
  • 没有优先级控制权
  • 服务器只能被动响应

如何优化:

  • 使用缓存(本地缓存与协商缓存)避免发送HTTP请求
  • 通过减少重定向次数、合并请求、延迟发送请求(按需获取)的方式在需要发送HTTP的时候,减少请求次数
  • 减少服务器HTTP响应的数据大小(有损压缩和无损压缩)

HTTPS

与HTTP的区别:

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

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

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

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

解决了HTTP的问题:

  • 窃听风险,比如通信链路上可以获取通信内容,用户号容易没。
  • 篡改风险,比如强制植入垃圾广告,视觉污染,用户眼容易瞎。
  • 冒充风险,比如冒充淘宝网站,用户钱容易没。

如何优化:

HTTPS与HTTP多了一个TSL握手过程,目的是为了通过非对称加密协议交换对称加密的秘钥,这个过程最长会花费掉2RT的时间。这个过程是会产生新能消耗的,后面的对称加密环节消耗非常小,可以忽略。 除了握手过程会发生网络延时,同时一些步骤也会产生性能损耗。

具体体现为:

  • 对于 ECDHE 密钥协商算法,握手过程中会客户端和服务端都需要临时生成椭圆曲线公私钥;
  • 客户端验证证书时,会访问 CA 获取 CRL 或者 OCSP,目的是验证服务器的证书是否有被吊销;
  • 双方计算 Pre-Master,也就是对称加密密钥;

硬件层面的优化:因为 HTTPS 是属于计算密集型,应该选择计算力更强的 CPU,而且最好选择支持 AES-NI 特性的 CPU,这个特性可以在硬件级别优化 AES 对称加密算法,加快应用数据的加解密。

软件层面的优化:把软件升级成较新的版本,比如将 Linux 内核 2.X 升级成 4.X,将 openssl 1.0.1 升级到 1.1.1

协议层面的优化:

  • 密钥交换算法应该选择 ECDHE 算法,而不用 RSA 算法,因为 ECDHE 算法具备前向安全性,而且客户端可以在第三次握手之后,就发送加密应用数据,节省了 1 RTT。
  • 将 TLS1.2 升级 TLS1.3,因为 TLS1.3 的握手过程只需要 1 RTT,而且安全性更强。

对于证书优化的方向:

  • 服务器应该选用 ECDSA 证书,而非 RSA 证书,因为在相同安全级别下,ECC 的密钥长度比 RSA 短很多,这样可以提高证书传输的效率;
  • 服务器应该开启 OCSP Stapling 功能,由服务器预先获得 OCSP 的响应,并把响应结果缓存起来,这样 TLS 握手的时候就不用再访问 CA 服务器,减少了网络通信的开销,提高了证书验证的效率;

重连方面:

对于重连 HTTPS 时,我们可以使用一些技术让客户端和服务端使用上一次 HTTPS 连接使用的会话密钥,直接恢复会话,而不用再重新走完整的 TLS 握手过程。

常见的会话重用技术有 Session ID 和 Session Ticket,用了会话重用技术,当再次重连 HTTPS 时,只需要 1 RTT 就可以恢复会话。对于 TLS1.3 使用 Pre-shared Key 会话重用技术,只需要 0 RTT 就可以恢复会话。

这些会话重用技术虽然好用,但是存在一定的安全风险,它们不仅不具备前向安全,而且有重放攻击的风险,所以应当对会话密钥设定一个合理的过期时间。

HTTP2.0

优点(相对于1.1) :

性能方面:

  • 头部压缩,如果多个请求的头部相同,协议会自动帮助消除重复的部分(原理是维护了一个车表,使用索引来记录字段,如果是相同的字段,直接使用索引即可)
  • 报文形式采用二进制格式,使用了静态表
  • 并发传输,引入了Stream的概念,在HTTP层解决了队头阻塞的问题
  • 服务器主动推送

缺点:

  1. 一旦发生了丢包现象,就会触发 TCP 的重传机制,这样在一个 TCP 连接中的所有的 HTTP 请求都必须等待这个丢了的包被重传回来

HTTP/3

(QUIC协议)优点 :

  • 把HTTP下面的TCP协议换成了UDP,解决了队头阻塞问题,同一个连接上面并发传输多个Stream(http请求),不同的Stream不会互相影响
  • 更快的连接建立,解决TCP与TLS的握手时间延迟
  • 连接迁移
相关推荐
卖萌的斜阳13 小时前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
单片机·网络协议·tcp/ip
用户83344239661413 小时前
Qt6 实现 TCP/UDP/组播 透明中继抓包工具 | 流量录制回放 | 工业设备调试
网络协议
CryptoPP15 小时前
BSE股票K线数据接入实战:从接口调用到前端图表展示
大数据·前端·网络·人工智能·websocket·网络协议
ITxiaobing202315 小时前
程序化广告RTB场景下IP地理定位服务的精度与工程架构选型
网络协议·tcp/ip·架构
阿米亚波18 小时前
【EVE-NG 实战】防火墙基础(VLAN · VRRP · NAT · ACL · 静态路由)
运维·网络·笔记·网络协议·计算机网络·网络安全·运维开发
tiantianuser19 小时前
NVME-oF IP 设计2 :设计之前的调研!
网络·网络协议·rdma·roce v2·nvme of
用户1257585243620 小时前
Go 里读取 request body 后,下游拿不到参数:别让日志中间件把请求吃掉
http·go·测试
2401_8734794020 小时前
如何识别代理IP和伪装流量?用IP情报工具三步穿透住宅代理伪装
网络·数据库·网络协议·tcp/ip·ip
STDD20 小时前
Traefik 中间件深度配置:限流、认证、IP 白名单与错误页面定制
网络协议·tcp/ip·中间件
曾令胜1 天前
HTTP协议基础总结
网络·网络协议·http