tcp/ip、以太网、mqtt、modbus/tcp复习

1.osi参考模型

2.

modbus是应用层报文传输协议,没有规定物理层,只规定了协议帧,但是定义了控制器能够认识和使用的消息结构,不管它们是经过何种网络进行通信的,具有很强的适应性。

 

一主多从,同一时间主机只能向一个从机发送请求, 如果主机没有像从机发送请求,从机不能主动发送数据给主机。

modbus没有忙判断,也就是说如果主机向从机发送请求,这时候从机正在处理别的任务或者没有收到,这时候不会响应主机,这是因为modbus只管传输数据,没有仲裁机制,需要通过软件方式判断是否正常接收。

modbus存储区分为四种,对应四种读取模式,输入线圈,输出线圈,输入寄存器,保持寄存器。输入线圈是只读布尔量,输出线圈是可读可写布尔量,输入寄存器是只读寄存器,保持寄存器是可读可写寄存器。

区号名称读写地址范围
0区输出线圈可读可写布尔量00001-09999
1区输入线圈只读布尔量10001-19999
3区输入寄存器只读寄存器30001-39999
4区保持寄存器可读可写寄存器40001-49999

主机向从机获取数据时,发送需要的数据起始地址,和数据长度,从机就会发送相对应的数据。 

3.modbus传输模式ascii、rtu、tcp

modbus在串行链路上可以选择rtu或者ascii传输模式进行数据传输,rtu是通过16进制表示数据,ascii通过ascii码表示数据,每个8bit分成两个ascii码位表达数据,使用rtu传输时需要进行crc循环冗余校验,ascii需要进行lrc纵向冗余校验。当使用以太网进行数据传输时,选择tcp模式进行传输,tcp模式不需要校验,因为tcp模式是面向链接的可靠协议。

4.modbus rtu

modbus规定了二十多种功能码,常用的也就是下面8种。

功能码功能说明
01H读取输出线圈
02H读取输入线圈
03H读取保持寄存器
04H读取输入寄存器
05H写入单线圈
06H写入单寄存器
0FH写入多线圈
10H写入多寄存器

数据帧包括了从站地址、功能码、数据、crc校验

从机地址占一个字节-8位,因此可以表示2的8次方也就是256个设备,0-255,但是一般从机设备只能用1-254,从机地址写255也就是全写1的话表示广播信号,就是给所有的从站发送数据帧。

功能码一般占1字节大小-8位

数据没有固定长度

crc校验位一般占2字节数据-16位。

crc校验就是当主机给从机发送数据之前,根据从机地址到数据结束,计算出一个crc校验码,把这个crc校验码放在数据真的最末尾,当从机接收到主机发送的数据之后,根据主机发送来的数据,也用相同的方法计算出对应的crc校验码。然后和接收到的crc校验码相比较,如果相同,则证明发送的数据没有问题。

5.modbus ascii

modbus ascii数据帧包括 起始符 从机地址 功能码 数据 校验 结束符

起始符占一个字节

从机地址占两个字节

功能码占一个字节

数据占n个字节

校验占两个字节

结束符两个字节

可以看到相比rtu来说,数据帧更加繁琐,因此一般我们用modbus rtu。

modbus ascii用起始符和结束符作为分隔数据帧的标志,而modbus rtu没有这样的设计,modbus rtu需要时间间隔来分隔数据帧,一般两个数据帧之间至少间隔3.5个字符周期长度,否则就会发生粘包现象 。

粘包就是从机无法分清出每个独立的数据包。

6.modbus tcp

和modbus ascii相比,modbus tcp数据帧没有从机地址和校验位,反而在功能码之前多了一个mbap报文头。

最大数据长度260个字节。这个长度是mbap报文头里的长度位控制的,2的八次方256再加上长度控制符前面的四个字节就是260个字节。

事物处理标识箱:可以理解为报文的序列号,用于区别其他报文。

协议标识符:在这里0x00 0x00代表modbus协议

长度:长度表示从现在起到数据帧结束所有数据的长度大小。

单元标识符:类似于modbus rtu 、modbus ascii的从机地址,用来指示数据帧的目标地址。

7.tcp/ip协议

tcp/ip的应用层有http、ftp等,应用层是直接给用户使用的接口,传输层有tcp和udp,udp是不可靠的链接,tcp是面向链接的可靠服务,网络层中主要有ip、icmp,主要负责网络中的数据包传送,数据链路层有arp、rarp,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡,它们一起处理与传输媒介(如电缆或其他物理设备)的物理接口细节。

传输层:tcp、udp提供流量控制、差错控制,qos-服务质量等管理服务。

总的来说,tcp传输速度较低但是可靠性强,udp传输速度快但是可靠性较弱,是一个尽力传输的不可靠协议。

网络层:ip、icmp提供拥塞控制、网际互联等服务。

链路层:链路层又称数据链路层和网络接口层。用来处理网络的硬件接口部分。传输单位bit。

MAC地址具有唯一性:48位,厂家生产产品的时候,前24位1一般是制造商,后24位是系列号,由厂家自己分配,和身份证一样,在网络世界中是唯一的。

为什么不能用mac地址作为网关转发数据的依据?

因为mac地址是各个厂家自己分配的,如果需要作为网关进行数据的转发,那么需要这个mac地址的前几位相同,这样才能作为转发的依据,但是这显然是不现实的,在现实世界中,如果想这样做,要么你规定每片网络下都是同一厂家生产的设备,要么你规定厂家生产设备时,按照你的规则来生产mac地址。这显然是不可能的。

因此:ip地址应运而生。ip地址是32位的,定义在软件层面上,可以更改,mac是硬件层面上的,出厂时烧录在eprom上。

子网掩码:当我们给不在同一子网下的设备发送数据的时候,怎么知道他是否和我们的设备是不是在一个子网下呢。这就需要用到子网概念,发送数据包的时候,我们需要知道源ip和目标ip,这两个ip分别和提前设置好的子网掩码做与操作,如果与操作结果相同,则证明在同一片子网下,则不用发送给路由器,而是直接发送给交换机进行数据传输,如果与操作结果不同,则需要先把数据发送到路由器,经过路由器的转发才能实现数据传输。

默认网关:现在要把数据发送给不同子网下的设备,要先经过路由器,但是我们怎么知道路由器的ip地址呢,这时候就要用到默认网关,默认网关是提前设置在设备中的ip,也就是路由器的ip。

路由表:现在我们要把数据发送到不同子网下,可以实现发送到路由器了,但是路由器怎么知道把数据通过哪个网口进行转发呢,这时候就要用到路由表了,路由表记录着ip的前n位和端口的一一对应关系,路由表是在路由器记录的。和mac表类似,mac表记录着设备mac地址和集线器也就是交换机中端口的一一对应关系,mac表存在集线器/交换机中。

现在我要发送数据到别的设备,只知道ip地址怎么办呢,这时候要用arp缓存表。arp缓存表存着ip和mac地址的一一对应关系。

一开始这个表是空的,为了获得别的设备的mac地址,会先广播一条arp请求,接收到arp请求的设备会相应请求,发送自己的mac到源设备,这时候两边的设备会互相记录对方的ip和mac。这样多次请求之后会把arp缓存表补充完整。

在同一子网就直接获取对方mac地址;不在同一子网就获取默认网关的mac地址。

8.

tcp/ip数据传输的时候会发现,发送端发送的应用层报文会被逐步包裹起来,接收端接受的时候会一层一层剥开,得到应用层报文。

TCP/IP协议的数据封装和分用过程,大致如下图所示:

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【动态规划-最长公共子序列(LCS)】力扣1035. 不相交的线

在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足: nums1[i] nums2[j] 且绘制的直线不与任何其他连线(非水平线&#xff09…

Rethinking Graph Neural Networksfor Anomaly Detection

AAAI24 推荐指数 #paper/⭐⭐ (由于这个领域初读,因此给的推荐分可能不好) 个人总结: 其在半监督(1%,40%)的情况下,使用多通滤波器,将不同滤波器得到的特征拼接起来,来做分类&…

【Blender Python】2.结合Kimi生成

概述 结合Kimi这样的AI工具可以生成Blender Python代码,用来辅助生成一些或简单或复杂的图形。当然,出不出错这就不一定了。因为AI所训练的版本可能并不是Blender的最新版本,类似的问题也出现在Godot上。 测试 在kimi中提问,获…

2024/10/6周报

文章目录 摘要Abstract广西的一些污水处理厂工艺解析1. A/O工艺(厌氧-缺氧-好氧工艺)2. 氧化沟工艺3. MBR工艺(膜生物反应器)4. SBR工艺(序批式活性污泥法)5. 生物接触氧化法 其它补充一体化改良氧化沟工艺…

LeetCode讲解篇之1143. 最长公共子序列

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 这题我们可以采用动态规划求解&#xff0c;用一个二维数组记录text1的0 ~ i区间子串和text2的0 ~ j区间子串的最长公共子序列的长度&#xff0c;我们假设该二维数组是f 这个数组有一个特性&#xff0c;如果a <…

会议时如何实现扫码签到?

如何实现扫码签到&#xff1f; 在现代活动管理中&#xff0c;签到环节是不可或缺的一部分。它不仅关系到活动的顺利进行&#xff0c;还涉及到参与者的体验。传统的签到方式往往耗时且效率不高&#xff0c;而随着技术的发展&#xff0c;扫码签到成为了一种高效且便捷的解决方案。…

如何在算家云搭建CosyVoice(文生音频)

一、CosyVoice简介 CosyVoice 是一个开源的超强 TTS&#xff08;‌文本转语音&#xff09;‌模型&#xff0c;‌它支持多种生成模式&#xff0c;‌具有极强的语音自然可控性。‌ 具有以下特点&#xff1a; 语音合成 &#xff1a;能够将文本转换为自然流畅的语音输出。多语种…

redis——哨兵机制

redis中提供了哨兵&#xff08;Sentinel&#xff09;机制来实现主从集群的自动故障恢复。 主从复制是实现redis高可用性的基石&#xff0c;从节点宕机时我们仍然可以将请求发送给主节点或者其他从节点&#xff0c;而当主节点宕机的时候&#xff0c;无法执行写操作&#xff0c;无…

百元头戴式耳机都有哪些值得入手?四款爆款高性价比机型推荐

在追求性价比的时代&#xff0c;选择一款既实惠又高品质的头戴式降噪耳机&#xff0c;成为了许多人的明智之举。它不仅能够为您带来出色的音质和降噪效果&#xff0c;还能让您在享受音乐的同时&#xff0c;节省不必要的开支。那百元头戴式耳机都有哪些值得入手&#xff1f;让我…

Mysql备份与恢复——日志

Mysql日志 Buffer Pool Innodb 存储引擎设计了一个缓冲池&#xff08;Buffer Pool&#xff09;&#xff0c;来提高数据库的读写性能。 Mysql中比较重要的日志包括&#xff1a;二进制日志 binlog&#xff08;归档日志&#xff09;和 redo log&#xff08;重做日志&#xff09;…

【买瓜 / F】

题目 思路 折半搜索 注意要从小到大排序&#xff08;虽然我也不知道为什么&#xff09; 代码 #include <bits/stdc.h> using namespace std; typedef long long ll; int n, m, t; int a[35]; unordered_map<ll, int> h; int ans INT_MAX; void dfs1(int k, int…

系统架构设计师-论文题(2021年下半年)

1.试题一 论面向方面的编程技术及其应用针对应用开发所面临的规模不断扩大、复杂度不断提升的问题&#xff0c;面向方面的编程Aspect Oriented Programming,AOP技术提供了一种有效的程序开发方法。为了理解和完成一个复杂的程序&#xff0c;通常要把程序进行功能划分和封装。一…

54.二叉树的最大深度

迭代 class Solution {public int maxDepth(TreeNode root) {if(rootnull){return 0;}int de0;Queue<TreeNode> qunew LinkedList<>();TreeNode tn;int le;qu.offer(root);while(!qu.isEmpty()){lequ.size();while(le>0){tnqu.poll();if(tn.left!null){qu.offe…

【Linux】Ubuntu20.04上使用RabbitVCS的图形化SVN

文章目录 1、RabbitVCS1.1、RabbitVCS 介绍1.2、RabbitVCS 主要功能1.3、Ubuntu下 TortoiseSVN 替代者 2、安装2.1、命令安装2.2、安装使用2.3、使用权限 3、解决SVN无法保存密码问题3.1、问题描述3.2、解决方法 1、RabbitVCS 1.1、RabbitVCS 介绍 它是一款Linux系统下的图形…

Excel中的屠龙大招

indirect的地位部分动摇&#xff0c;神坛下已初生大力骑士——“”。 (笔记模板由python脚本于2024年10月06日 18:57:11创建&#xff0c;本篇笔记适合同时喜欢python和Excel的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&…

李宏毅深度学习-自注意力机制

输入是向量序列的情况 在图像识别的时候&#xff0c;假设输入的图像大小都是一样的。但如果问题变得复杂&#xff0c;如图6.2所示&#xff0c;输入是一组向量&#xff0c;并且输入的向量的数量是会改变的&#xff0c;即每次模型输入的序列长度都不一样&#xff0c;这个时候应该…

DBMS-3.2 SQL(2)——DML的SELECT(含WHERE、聚集函数、GROUP BY、HAVING之间的关系)

本文章的素材与知识来自李国良老师和王珊老师。 数据操纵语言DML&#xff08;Data Manipulation Language&#xff09; SELECT 一.SELECT的语法与构成 1.语法 2.构成 二.投影 投影操作可以选择表中的若干列&#xff0c;主要体现在SELECT子句后的列表达式。 1.列表达式 2.…

鸿蒙开发(NEXT/API 12)【穿戴设备模板化通知】手机侧应用开发

手机侧应用向穿戴设备发送通知&#xff0c;并在穿戴设备上按模板显示&#xff0c;支持穿戴设备收到通知后同步振动或响铃&#xff08;跟随穿戴设备系统设置&#xff09;。执行成功后&#xff0c;穿戴设备上会显示下图所示通知界面。 该接口无需用户授权&#xff0c;仅需要确保…

视频转文字免费的软件有哪些?6款工具一键把视频转成文字!又快又方便!

视频转文字免费的软件有哪些&#xff1f;在视频制作剪辑过程中&#xff0c;我们经常进行视频语音识别成字幕&#xff0c;帮助我们更好地呈现视频内容的观看和宣传&#xff0c;市场上有许多免费的视频转文字软件&#xff0c;可以快速导入视频&#xff0c;进行视频内音频的文字转…