非常详细的MQTT+TLS(二)----TLS铺垫篇

非常详细的MQTT+TLS----TLS铺垫篇

在移植TLS之前先熟悉一下TLS、TCP/IP、MQTT三者的关系,这很重要!!

“TCP/IP、MQTT、SSL之间是什么关系呢?”通过MQTT章节的说明已经明确了TCP/IP和MQTT之间的关系,那SSL在MQTTs处于什么位置嘞。那就要从TLS的定义说起

TLS称为安全传输层协议,用于在两个应用程序之间提供保密性和数据完整性。说白了TLS就在TCP之上建立了一个通道,将我们TCP传输的明文进行加密,从而保证通信的私密性。
在这里插入图片描述
如图为MQTT与MQTTs的区别。因此MQTTs的建立过程就是【创建TCP】→【建立SSL通道】→【创建MQTT连接】。那么数据是怎么进行加密的呢?具体的加密流程可以查看【mbedtls_ssl_write】→【ssl_write_real】→【mbedtls_ssl_write_record】→【ssl_encrypt_buf】这个函数。当然我们没必要知道这个具体怎么加密的,但是我们需要知道,我们的数据发送接口:【mbedtls_ssl_flush_output】在这里插入图片描述
这个函数是在哪定义的呢?我们需要去找到【mbedtls_ssl_set_bio】。好了上面说了一大堆其实就是想引出【mbedtls_ssl_set_bio】这个函数,因为这个函数中注册了TLS所使用的TCP/IP的读写函数,也就是针对我们平台的读写函数。又一个读写函数,MQTT也有一个读写函数,有点蒙圈。。不慌,正如图片描述的一样,我们发送的数据通过MQTT协议组包之后通过TLS发送到TCP/IP协议栈再发送到服务器,按着这个思路,也就是说我们前面在建立MQTT连接前注册的读写函数要换成TLS的读【mbedtls_ssl_read】写【mbedtls_ssl_write】函数。终于搞清楚了MQTT、TCP/IP、TLS之间的关系。长吁一口气~


----------努力学习,乐于分享,欢迎讨论----------


猜你喜欢

转载自blog.csdn.net/qq_43448742/article/details/108266778
TLS