SSL/HTTPS 连接中的数据包大小是否有某种限制?

问题描述

在过去的几周里,我一直在开发一个引导加载程序,它可以在某个设备上执行固件更新。设置如下:

  1. 固件二进制文件及其各自的 SHA1 哈希值存储在网络服务器中;

  2. 该设备由一个 ESP8266 和一个 STM32 微控制器(STM32F401 或 STM32F030,有两个硬件版本,但我使用的是 F401)。 ESP 仅用于 AT+ 命令,即我没有构建它的固件,只是使用了 Espressif 的最新版本。

这个想法是,STM32 引导加载程序应该使用 ESP 从网络服务器下载固件哈希和二进制文件,如果哈希正常,则启动固件。下载是在被动模式下使用 ESP 进行的,即 STM 必须手动请求 X 字节才能从 ESP 缓冲区读取,目前我使用的是 1 MTU(1460 字节)。

起初,与网络服务器的连接是使用 HTTP 建立的,一切正常,但是,我不得不将其更改为 HTTPS,这就是问题开始的地方。 STM收到大约100kB的固件后(有110kB),ESP每次请求只提供30个字节(应该是1MTU左右),因此下载时间非常长。

我已经做了一些挖掘,试图找出这是否与 ESP 相关,但没有找到任何东西。此外,这个 30 字节下载速率开始发生的点并不总是在 100kB 标记处,我已经用 170kB 固件进行了测试,它开始发生在 160kB ish,所以,看起来它总是最后的 10kB。

当数据包大小变得小于 1 MTU 时,我还在固件中添加了一些延迟,以便为 ESP 提供更多时间来处理数据包,因为 SSL 解密需要更长的时间来处理;但它没有帮助。

我的问题是:HTTPS/SSL 协议中是否有一些特性可以减少数据包长度?这里发生的事情的原因可能是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...