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

2023-12-27 01:40
文章标签 详细 mqtt 非常 tls 铺垫

本文主要是介绍非常详细的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之间的关系。长吁一口气~


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


这篇关于非常详细的MQTT+TLS(二)----TLS铺垫篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/541482

相关文章

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

如何在Java Spring实现异步执行(详细篇)

《如何在JavaSpring实现异步执行(详细篇)》Spring框架通过@Async、Executor等实现异步执行,提升系统性能与响应速度,支持自定义线程池管理并发,本文给大家介绍如何在Sprin... 目录前言1. 使用 @Async 实现异步执行1.1 启用异步执行支持1.2 创建异步方法1.3 调用

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤