初识Modbus

初识Modbus

  • Modbus TCP协议
    • 前置知识
    • TCP
      • 三次握手:
      • 数据传输确认:
      • 四次挥手

Modbus TCP协议

Modbus协议是一种应用层的报文传输协议

分三种传输方式

  • RTU
  • ASCII
  • TCP

前置知识

TCP协议,UDP协议都是工作在传输层,用与程序之前的数据传输

TCP协议:全双工,双向的,可以类比人打电话,可以实时的确认对方是否收到,优点:数据传输稳定可靠,适用场景:对网络通信质量要求较高的场景,例如:传输文件、发送邮件、浏览网页等;

UDP协议:基于非连接的通信协议,数据发送时 只是数据包简单进行简单的封装,再通过网卡发送给设备, 缺点:数据包中间没有状态上的联系,稳定性较弱,容一产生丢包 优点:传输速度快,性能损耗少,对CPU的资源占用少,适用场景:对实时性要求较高,多少量丢包并没有太大要求的场景,例如:语音通话,域名查询,视频直播等;

UDP还有一个十分重要的场景就是隧道网络,例如:VPN、VXLAN

TCP

三次握手:

用于确认客户端与服务端的成功连接

image-20250109212733178

客户端发送SYN(同步序列编号)报文到服务器,表示客户端请求建立连接,然后客户端进入SYN-SEND状态,此为第一次握手

服务器接收到SYN报文后,会回复一个SYN+ACK(确认号)报文给客户端,表示同意建立连接。服务器处进入SYN-RCVD状态,准备接受连接请求,此为第二次握手

客户端再发送一个ACK报文给服务器,确认已收到服务器的响应。此时客户端进入ESTABLISHED状态,服务器在正确的收到ack信号后进入ESTABLISHED状态。整个过程完成,此为第三次握手

数据传输确认:

数据多时 数据采用分段发送 报文段中含有起始数据号和长度,客户端将序列号和数据长度相加作为应答信号,同时服务端也获得了下端数据的起始位置

image-20250109194435279

四次挥手

用于关闭客户端服务端的连接(客户端和服务端都可以发送关闭请求)

image-20250109195313369

首先客户端发送一个FIN包,表示要关闭连接,自己(客户端)则进入等待状态1,为第一次挥手

然后服务端收到FIN包后,发送一个ACK(应答信号)给客户端,自己(服务端)则进入关闭等待状态客户端收到应答信号后则进入等待状态2,此为第二次挥手(注:此时客户端还可以接受消息,服务端还可以发送消息)

在第二次握手后服务端还可以发送未发送完的数据,发送完后服务端发送一个FIN数据包,进入最后确认状态,此为第三次挥手

客户端收到后发送一个ACK(应答信号)后 进入超时等待状态(防止服务端没收到ack信号)经过超时时间后关闭连接,此为第四次挥手

服务端在收到ack信号后直接进入关闭状态(若在一段时间后服务端没收到客户端发来的ack应答信号则重新发送FIN数据包)

敬请期待,后续补充…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/955316.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

43.Textbox的数据绑定 C#例子 WPF例子

固定最简步骤,包括 XAML: 题头里引入命名空间 标题下面引入类 box和block绑定属性 C#: 通知的类,及对应固定的任务 引入字段 引入属性 属性双触发,其中一个更新block的属性 block>指向box的属性 从Textbo…

【0x02】HCI_Inquiry_Result事件详解

目录 一、事件概述 1.1. 事件参数 1.2. 事件描述 1.3. 与查询过程的关联 1.4. 相关事件对比 二、事件内容 2.1. HCI_Inquiry_Result事件格式 2.2. Num_Responses 2.3. BD_ADDR[i] 2.4. Page_Scan_Repetition_Mode[i] 2.5. Reserved[i] 2.6. Class_Of_Device[i] 2…

[c语言日寄](bit)位检查——初探字节之下

哈喽大家好啊,在今天的快乐刷题中,我遇到了一个很有意思的题目: 题目 统计二进制中1的个数 基本思路 没错……这道题的对象比较特殊。 不同于过去常见的题目,之前的题目的对象都是基本数据类型,而这道题的对象却是…

音频语言模型与多模态体系结构

音频语言模型与多模态体系结构 多模态模型正在创造语言、视觉和语音等以前独立的研究领域的协同效应。这些模型使用通用架构,将每种模式视为不同的“token”,使它们能够以一种与人类认知非常相似的方式联合建模和理解世界。 ​ ​可以将多模态分为两个主要领域:输入空间(…

25/1/15 嵌入式笔记 初学STM32F108

GPIO初始化函数 GPIO_Ini:初始化GPIO引脚的模式,速度和引脚号 GPIO_Init(GPIOA, &GPIO_InitStruct); // 初始化GPIOA的引脚0 GPIO输出控制函数 GPIO_SetBits:将指定的GPIO引脚设置为高电平 GPIO_SetBits(GPIOA, GPIO_Pin_0); // 将GPIO…

《机器学习》——SVD(奇异分解)降维

文章目录 SVD基本定义SVD降维的步骤SVD降维使用场景SVD 降维的优缺点SVD降维实例导入所需库定义SVD降维函数导入图像处理图像处理图像打印降维结果并显示处理后两个图像的对比图 SVD基本定义 简单来说就是,通过SVD(奇异值分解)对矩阵数据进行…

医疗集群系统中基于超融合数据库架构的应用与前景探析

一、引言 1.1 研究背景与意义 随着医疗信息化的飞速发展,医疗数据呈爆炸式增长。从日常诊疗记录、患者病历,到各类医疗影像、检查检验数据等,海量信息不断涌现。据统计,医疗数据的年增长率高达 30% 以上 ,2025 年,全球医疗数据量将达到 2314 艾字节(EB)。如此庞大的数…

闪豆多平台视频批量下载器

1. 视频链接获取与解析 首先,在哔哩哔哩网页中随意点击一个视频,比如你最近迷上了一个UP主的美食制作视频,想要下载下来慢慢学。点击视频后,复制视频页面的链接。复制完成后,不要急着关闭浏览器,因为接下来…

深度学习模块C2f代码详解

C2f 是一个用于构建卷积神经网络(CNN)的模块,特别是在 YOLOv5 和 YOLOv8 等目标检测模型中。这个模块是一个改进的 CSP(Cross Stage Partial)Bottleneck 结构,旨在提高计算效率和特征提取能力。下面是对 C2…

matlab展示龙格现象

为了展示龙格现象,它使用拉格朗日插值多项式,展示了随着插值点数目的增加,插值多项式在区间端点附近震荡的现象。 重新编写的 MATLAB 代码: % 定义目标函数 f (x) 1 ./ (1 x.^2);% 设置插值区间 x_interval [-5, 5]; % 插值…

浅谈云计算19 | OpenStack管理模块 (上)

OpenStack管理模块(上) 一、操作界面管理架构二、认证管理2.1 定义与作用2.2 认证原理与流程2.2.1 认证机制原理2.2.2 用户认证流程 三、镜像管理3.1 定义与功能3.2 镜像服务架构3.3 工作原理与流程3.3.1 镜像存储原理3.3.2 镜像检索流程 四、计算管理4.…

探索 Transformer²:大语言模型自适应的新突破

目录 一、来源: 论文链接:https://arxiv.org/pdf/2501.06252 代码链接:SakanaAI/self-adaptive-llms 论文发布时间:2025年1月14日 二、论文概述: 图1 Transformer 概述 图2 训练及推理方法概述 图3 基于提示的…

SpringBoot3-整合WebSocket指南

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞??收藏评论 SpringBoot3-整合WebSocket指南 1. 什么是WebSocket?2. 环境准备 2.1 项目依赖 3. WebSocket配置 3.1 WebSocket配置类3.2 自定义WebSocket处理器 4. 控制器5. 前端实现 5.1 HTML页面…

技术晋升读书笔记—办事的艺术

作为一名程序员,沟通能力对于我们这一行来说并不是强项。大多数程序员与电脑打交道的时间远远多于与人交流,特别工作一天有可能全程在与电脑打交道,因此沟通技巧的提升往往被忽视。然而,随着职业发展的推进,尤其在国内…

警惕IDEA 2024版重大Bug问题:LomBok失效、Gradle冲突、Spring Boot启动错误

一直以来我认为工具类的软件是越新越好,因为工具代表着一定的先进性;但是IDEA 2024好好的给我上了一课,比如lombok 不起作用、比如Spring Boot 3.4.x 启动报错、再比如MyBatis log plus冲突、再比如Gradle插件冲突. 一、Lombok 失效问题 请不…

01、flink的原理和安装部署

flink中主要有两个进程,分别是JobMManager和TaskManager,当然了根据flink的部署和运行环境不同,会有一些不同,但是主要的功能是类似的,下面我会讲下聊下,公司用的多的部署方式,基于yarn集群的部…

Vue2+OpenLayers实现车辆开始、暂停、重置行驶轨迹动画(提供Gitee源码)

前言:根据经纬度信息绘制一个完整的行驶路线,车辆根据绘制好的路线从开始点位行驶到结束点位,可以通过开始、暂停、重置按钮控制车辆状态。 目录 一、案例截图 二、安装OpenLayers库 三、​安装Element-UI ​ 四、代码实现 4.1、初始化…

两个React项目部署在同一个域名,一个主地址,一个子地址,二级白屏等问题

主域名配置的那个项目正常配置就可以了,但是对于子地址的项目,需要做很多的配置的。 注意 子地址的那个项目在配置中需要配置为子地址: base: /subpk 在vite.config.ts中修改: 如果这里没有配置正确,会导致白屏或者…

管理口令安全和资源(二)

DBMS_METADATA DBMS_METADATA 是 Oracle 数据库中的一个包,它提供了用于管理数据库元数据的工具和过程。元数据是关于数据的数据,它描述了数据库的结构,包括表、视图、索引、存储过程、用户和其他数据库对象的信息。DBMS_METADATA 包允许用户…

【狂热算法篇】探秘图论之 Floyd 算法:解锁最短路径的神秘密码(通俗易懂版)

: 羑悻的小杀马特.-CSDN博客羑悻的小杀马特.擅长C/C题海汇总,AI学习,c的不归之路,等方面的知识,羑悻的小杀马特.关注算法,c,c语言,青少年编程领域.https://blog.csdn.net/2401_82648291?spm1010.2135.3001.5343 在本篇文章中,博主将带大家去学习所谓的…