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

news2024/11/25 10:48:02

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.coloradmin.cn/o/2193448.html

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

相关文章

Linux网络命令:如何查看linux系统防火墙开放的端口有哪些?多种方法来查看系统开放的网络端口号,包括TCP端口和UDP端口

目录 一、概述 二、查看防火墙开放的端口号的常用方法 (一)、使用firewalld(适用于CentOS/RHEL 7) 1. 查看firewalld状态 2. 查看所有开放的端口 3. 查看指定zone(如public)的开放端口 (二)、使用ipt…

基于SpringBoot+Vue+Uniapp的植物园管理小程序系统(2024最新,源码+文档+远程部署+讲解视频等)

3. 论文参考 4. 项目运行截图 5. 技术框架 5.1 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring …

眼儿媚​·秋雨绵绵窗暗暗

因患久治未愈的基础病 ——“肺气肿、哮喘、支扩吐血”等严重的呼吸道疾病,年近72岁的笔者于2017年初夏季节,情非得已地放弃半个多世纪习惯了的都市生活,来到成都市崇州市街子古镇寄居养病、养老,而今已逾七年。虽说一晃都是快要年…

【大模型 AI 学习】大模型 AI 部署硬件配置方案(本地硬件配置 | 在线GPU)

最近想部署一个开源深度学习项目,但是小编的笔记本电脑是8G的集成显存,且没有GPU,性能肯定是不够的。于是小编在小po站上粗浅了解了一下当前: 1. 大模型 AI本地硬件配置和 2. 云上申请GPU算力的两种方式。简单记录一下: 参考视频…

D29【python 接口自动化学习】- python基础之输入输出与文件操作

day29 格式化输出 学习日期:20241006 学习目标:输入输出与文件操作﹣-41 格式化输出:如何将执行结果通过屏幕输出? 学习笔记: 三种常用的格式化输出方式 百分号方式 format函数方式 总结 1. 格式化输出…

模拟实现消息队列(基于SpringBoot实现)

提要:此处的消息队列是仿照RabbitMQ实现(参数之类的),实现一些基本的操作:创建/销毁交互机(exchangeDeclare,exchangeDelete),队列(queueDeclare,…

docker拉取镜像推送到阿里云镜像仓库

Docker拉取失败,利用github将镜像推送到阿里云 docker_image_pusher hub-mirror仓库 1、windows没有升级,用不了WSL。可以使用wsl,配合docker desktop直接拉取镜像,windows10安装WSL2及使用 2、开启安全surf the internet工具…

MQ 架构设计原理与消息中间件详解(三)

RabbitMQ实战解决方案 RabbitMQ死信队列 死信队列产生的背景 RabbitMQ死信队列俗称,备胎队列;消息中间件因为某种原因拒收该消息后,可以转移到死信队列中存放,死信队列也可以有交换机和路由key等。 产生死信队列的原因 消息投…

如何只修改obsidian图片链接为markdown

如何只修改obsidian图片链接为markdown 前言插件配置 使用注意 前言 适合有一定了解obsidian用法和插件市场,还有相对路径的人 插件 在obsidian插件市场搜索—开梯子 配置 首先使用ctrlp打开命令面板,也可以在左侧通过图标打开命令面板&#xff0c…

VTC视频时序控制器,TPG图像测试数据发生器,LCD驱动——FPGA学习笔记19

详情可以见LCD篇 LCD彩条显示——FPGA学习笔记10_依次显示红绿蓝三个通道-CSDN博客 一、VTC简介 Video Timing Controller 缩写 VTC 是我们在所有涉及 FPGA 图像、 FPGA 视频类方案中经常用到的一种用于产生视频时序的控制器。 本课以 VGA 为切入点, 学习视频传输…

【颜色平衡树 / E】

题目 思路 DFS暴力 60分 代码 #include <bits/stdc.h> using namespace std; const int N 5010; const int M 5010; int h[N], e[M], ne[M], idx; int c[N], f; int ans; void add(int a, int b) // 添加一条边a->b {e[idx] b, ne[idx] h[a], h[a] idx ; } …

C++ 观察者模式

观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;用于在对象之间建立一对多的依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;它的所有依赖对象都会得到通知并自动更新。 在观察者模式中&#xff0c;主题和观察者之间是松耦合…

Vue - 路由用法

前端路由就是URL中的hash与组件之间的对应关系。Vue Router是Vue的官方路由。 组成&#xff1a; VueRouter&#xff1a;路由器类&#xff0c;根据路由请求在路由视图中动态渲染选中的组件。<router-link>&#xff1a;请求链接组件&#xff0c;浏览器会解析成<a>。…

S7-200 SMART Modbus RTU常见问题

1.S7-200 SMART 是否支持 Modbus ASCII 通信模式&#xff1f; STEP 7-Micro/WIN SMART 软件未提供Modbus ASCII 通信模式指令库。S7-200 SMART CPU若用于Modbus ASCII 通信时&#xff0c;则需要用户使用自由口通信模式进行编程。 2.S7-200 SMART CPU 集成的RS485 端口&#xf…

毕设 基于大数据情感分析的网络舆情分析系统(源码+论文)

简介 今天学长向大家介绍一个大数据毕设项目 毕设分享 基于大数据情感分析的网络舆情分析系统(源码论文) &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;4分创新点&#xff1a;4分 &#x1f9ff; 项目分享:见文末! 实…

Linux下网络转发功能

1、背景介绍 项目中使用上位机电脑&#xff0c;需要通过网络访问一个Linux主机&#xff0c;但是该Linux主机没有网络直接与上位机相连&#xff0c;只能通过插箱内另外一个Linux主机转发才能访问&#xff0c;示意图如下&#xff1a; 2、网络转发配置 Linux网络中转主机需要进行…

Java体系中的异常

1. 异常 1.1 异常的概念 在Java中&#xff0c;我们将程序执行过程中发生的不正常行为称为异常。异常是在程序运行过程中发生的错误或意外情况&#xff0c;它打破了程序的正常执行流程。在Java中通过面向对象的编程思想&#xff0c;我们也将这些扰乱程序正常执行的行为用类组织…

三菱FX3UPLC定位模式介绍

运行模式的比较 *1用相对定位指令代替。 *2使用相对/绝对定位指令。 *3使用直线插补指令的连续路径功能。 *4使用直线插补指令的连续路径功能。 可单轴运行。 *5.使用表格运行(连续运行功能)。 *6.使用中断定位指令。 *7只支持FX3UFX3UC可编程控制器&#xff0c;使用可变速脉…

设计模式之装饰器模式(Decorator)

一、装饰器模式介绍 装饰模式(decorator pattern) 的原始定义是&#xff1a;动态的给一个对象添加一些额外的职责。 就扩展功能而言&#xff0c;装饰器模式提供了一种比使用子类更加灵活的替代方案。 在软件设计中&#xff0c;装饰器模式是一种用于替代继承的技术&#xff0c;它…