首页
关于
南通监控安装
Search
1
cloudflared service
50 阅读
2
海纳思常用命令
49 阅读
3
绕过WPS Office登录:轻松解锁所有功能的操作指南
20 阅读
4
今天推荐一个局域网搜索工具
14 阅读
5
一文讲透Modbus通信协议,以及RS485、SCI三者的区别
11 阅读
业务
见闻
随思
技术
登录
Search
剑星
累计撰写
35
篇文章
累计收到
1
条评论
首页
栏目
业务
见闻
随思
技术
页面
关于
南通监控安装
搜索到
29
篇与
技术
的结果
2025-07-25
一文讲透Modbus通信协议,以及RS485、SCI三者的区别
本文将简单梳理工业上嵌入式的常见的通信方式,并详细讲解Modbus RTU、RS485与SCI通信。1 通信是什么通信其实很简单,说白了就是设备与设备之间的交流,这个交流需要:1.传输媒介,可分为有线传输与无线传输,例如蓝牙、5G、WIFI等都是无线传输,有线传输例如USB等。这个概念比较简单,它是物理上的有无通信线。2.通信方式,其实就是设备与设备之间交流的规则,只有规则对应上了,才能实现正常的交流。【注】通信方式是如何确定的呢?我们可以举个例子,比如中国人和中国人说话,该说什么话呢?这个什么话就是规则。我们都知道可以选择中文,当然如果两个人英文都好,也可以选择外文。所以说,通信方式的确定,是要看具体的设备而言的,设备会说什么话?设备说的话安不安全?需不需要加密?设备和设备之间的距离有多远,说的话能不能顺利抵达?这都是通信方式要考虑的问题。2 通信方式2.1 通信方式的分类1.按照通信数据传输的行为分:串行通信和并行通信要知道,在二进制的世界里,所有数据传输的底层一定是0和1的传输。因此,在最底层,0和1究竟是如何传输的,这便是“bit”传输的行为。【串行通信】数据一位一位的按顺序传输,一次只发送一个0或者1。【并行通信】数据各个位同时传输,一次可发送多个0或者1。串行通信的优点是占用的引脚资源少,但速度相对较慢,而并行通信的速快,但相对于串行通信占用的引脚资源多。2.按照通信数据的同步方式分:同步通信和异步通信【同步通信】通信时会引入一条时钟线,对于参与通信的设备而言,时钟线都是一致的,我只要提前约定好,在什么情况下的数据是有效的,就可以了。举个例子:在I2C通信中,我们规定在时钟线(SCL)为高电平时,数据线的一个下降沿表示一个I2C的START条件(开始信号),这部分在以EEPROM为例,详解I2C通信协议中有详细介绍。【异步通信】异步通信不存在时钟线,这样就需要约定好更多的条件去传输数据,方法是对数据线上的数据信号进行处理,例如参与通信的设备同时约定好数据的传输速率、数据具备起始位、数据为、奇偶校验位、停止位等等。我们一般用波特率(bps),也就是每秒能传输多少个bit,作为衡量数据传送速率的指标。3.按照数据传输的方向分:单工、半双工、双工通信【单工通信】设备只能固定一个方向传输,参与通信的设备要么只能发数据,要么只能接收数据。【半双工通信】设备可以双向传输,但在同一段时间内,要么发送数据,要么接受数据。【全双工通信】设备可以双向传输,在同一段时间内,可以同时发送数据或传输数据。实现全双工通信的方式有很多,典型的是增加数据线路,比如从单个数据线拓展到两条数据线,一条用于发送,一条用于接收。如果不增加数据线路,可以采用在同一条数据线上发送不同频率的信号,再进行滤波,从而实现信号的同时传输。2.2 分清通信接口与通信协议通信方式是一个宏观的概念,通过上面的分类我们可以看到,有很多数据传输的细节还需要去确定。由于通信的广泛应用,以及其实现方式的繁杂,在实际中我们会听到好多的通信协议,诸如SCI协议,485协议,232协议,I2C协议,SPI协议,Modbus协议,Modbus RTU协议,Modbus TCP协议等。但是这些协议真的是协议吗?当然,由于中华文字的博大精深,协议本身二字可以是一个广泛的概念。通信协议可以指代很多东西,但是这会误导我们,在众多的信息流中,我们自己要分清本质,什么是通信接口,什么是通信协议?【通信接口】通信接口是通信设备之间的接口,它指的其实是物理层面上的,通信接口一般会规定逻辑电平,即什么样的信号算是1,什么样的信号算是0;还会规定通信线的根数,比如0根是无线传输,大于0根是有线传输;还会规定通信线的最大通信距离、通信线的要求等,都是针对于物理上。【通信协议】通信协议其实指的是数据传输的规则,专注于数据的结构,数据传输的速度等,都是针对于bit位的传输上。2.3 通信接口通信接口种类有很多,例如DP接口、HDMI接口,工业上常用的RS232接口、RS485接口、以太网接口、USB接口等。本文我们主要对RS485接口进行详解。RS485接口也会被成为RS485标准,其中RS指的是Recommended Standard。·所属分类:串行通信、异步通信、半双工通信。·线路数量:2条,一条用于发送,一条用于接收,使用双绞线,一根定义为A,一根定义为B。·逻辑定义:两根信号之间的电平差(差分信号):逻辑1:+2V to +6V;逻辑0:-6V to -2V【拓展】差分信号的优势:差分信号是两个电位差,假设两条线上同时受到了干扰,那么做差时将会将干扰信号也减去。因此差分信号的抗干扰能力强。·支持设备:支持一主机,多从机。2.4 通信协议通信协议是五花八门的,通信协议本质上是参与通信设备的约定和规则,这个规则是五花八门的,由于设备是多种多样的,想实现的功能也是多种多样的,同样为了不混乱,我将通信协议分为基于bit位的通信协议和基于数据的通信协议。先进行如下定义。【bit位】bit位只有1位,要么是1要么是0.【数据】要传输的一组bit位,例如我要传输十进制的2,那么我用bit传输的时候就是10,是一组由1和0组成的两个bit的数据。2.4.1 基于Bit位的通信协议——SCI通信协议在SCI通信中,数据线空闲时为“逻辑1”,即高电平。SCI通信的基本格式:【空闲线模式】1位起始位+1-8位数据位+1个奇偶校验位+1位或者2位停止位+附加位或【地址位模式】1位起始位+1-8位数据位+1个奇偶校验位+1位地址位+1位或者2位停止位+附加位如图1所示。图1 SCI典型数据格式图1中,Start为起始信号,可以看SCI对起始位的定义:当信号处于空闲状态时的一个低电平,即为起始信号。但在实际中,一定连续时间内的低电平表示有效的起始位,因此,在此我们不过多叙述实际硬件是如何判定为1或0的,而我们在进行编程的时候,硬件已经做好了这些处理,我们只需要懂得基本的通信结构。MSB和LSB码是数字电子领域中常用的两种比特表示方法,分别代表“Most Significant Bit”和“Least Significant Bit”,MSB定义着在多位数中的最高有效位,LSB:定义:多位数中的最低有效位。Addr/data表示的是地址位,仅在SCI通信配置为地址位模式时才有,在这种模式下,发送节点发送信息的第一个字节是一个地址字节,所有接收节都读取该地址字节。只有接收数据的地址字节与接收节点的地址字节相符合时,才能产生接收节点数据。如果接收节点的地址和接收数据的地址不符,接收节点将等待接收下一个地址。Parity指的就是奇偶校验,该奇偶指的包括数据位和校验位在内的这一串bit中“逻辑1”个数的奇偶。例如,若采用奇校验,则要保证这一串bit中“1”的总数为奇数;如果是偶校验,则要保证这一串bit中“1”的总数为偶数。例如,对于数据位“10011010”,若采用偶校验,校验位应为“0”,使得数据位和校验位中“1”的个数为偶数(4个);若采用奇校验,校验位则应为“1”,使得“1”的总数为奇数(5个)。Stop指的就是恢复到空闲线状态,若设置为1位停止位,则结构末尾仅包含1个“逻辑1”,若设置为2位停止位,则结构末尾包含2个“逻辑1”。我们把Start到Stop这段数据称作为“帧”。【例如】在空闲线模式下,我想给设备发送“6”这个数字,设置为1位停止位,那么它的数据格式该是怎么样的呢?首先将6转为二进制为110,一般我们设置数据长度为8位,因此实际上数据为0000 0110若采用偶校验,其奇偶校验位就应为0,若采用奇校验,其奇偶检验位就应为1。LSB是最低有效位为0,MSB是最高有效位为0。因此采用偶校验:【起始位】0+【数据位】01100000+【奇偶校验位】0+【停止位】1若是采用奇校验:【起始位】0+【数据位】01100000+【奇偶校验位】1+【停止位】1在地址位模式下,第一个字节发送的是地址,在这里我们假设要给设备地址为“217”的设备发送“6”这个数字,设置为2位停止位,那么它的数据格式该是怎么样的呢?我们将要发送两帧数据,第一帧为地址,第二帧为数据:我们先将地址217转为二进制:1000 1111,若采用偶校验,则这一帧数据的奇偶校验位为1,若采用奇校验,则这一帧数据的奇偶校验位为0。LSB为最低有效位为1,MSB为最高有效位为1。因此采用偶校验:第1帧:【起始位】0+【数据位】11110001+【奇偶校验位】1+【地址位】1+【停止位】11第2帧:【起始位】0+【数据位】01100000+【奇偶校验位】0+【地址位】0+【停止位】11若是采用奇校验:第1帧:【起始位】0+【数据位】11110001+【奇偶校验位】0+【地址位】1+【停止位】11第2帧:【起始位】0+【数据位】01100000+【奇偶校验位】1+【地址位】0+【停止位】11一定要好好体会这两个示例!2.4.2 基于数据的通信协议——Modbus协议在Modbus Poll的使用界面,我们点击Connection时,会出现图2所示界面。图2 Modbus Poll设置界面这是一个典型的设置界面,我们一般会采用Serial Port 串口通信,然后设置波特率、数据位长度、有无校验位、以及停止位,还有Advanced高级设置中的一些DSR、CTS、DTR等,我们在此不拓展,只讲解最基本功能。在右方我们可以看到在串口模式下有RTU和ASCII两种模式,RTU模式应用最广泛,掌握了RTU,自然而然就能看懂ASCII。1.Modbus-RTU通信结构RTU,全称Remote Terminal Unit,意为远程终端设备。它的通信结构:地址+功能码+数据+校验其中地址占用1个字节,这与设备的地址相对应,每个设备都具有一个唯一的地址,相当于“门牌号”。功能码占用1个字节,功能码就代表着我当前发送的数据的功能是干什么,比如说修改从机的数据,查询从机的数据等。常见的功能码定义有:0x01:读线圈状态;0x02:读离散输入状态;0x03:读保持寄存器;0x04:读输入寄存器;0x05:写单线圈;0x06:写单寄存器;0x07:读取异常状态······我们常用的功能码就是0x03与0x07,一个是读当前从设备的信息,一个是修改当前从设备的信息。数据占用的字节不定,主要依据功能码的定义来确定。校验占用2个字节,为循环冗余校验方式,主要是为了保证数据不出错。2.Modbus-RTU通信实例——读数据现在我们以具体的实例来进行讲解。【主机发送数据】比如现在我们想在从设备上读数据,那我们是肯定已知设备地址的,要注意,设备地址占用一个字节,一个字节是8bit,二进制表示范围为0~255,其中有效的地址范围是1-247,其余的有特殊用途,比如249-254是预留为未来拓展,255是广播地址,也就是说所有设备只要接收到了广播地址都会认为有效。假设我们现在的设备地址是247,我们想要读取设备信息,那么功能码我们选择0x03;在0x03的功能下,对于数据字节,我们首先要发送读取信息对应寄存器的首地址,一个寄存器的地址是2字节数据,然后再紧接着包括2字节的寄存器数量。例如,我们要对设备地址为247的设备,从寄存器地址为4的寄存器开始,读取26个寄存器的值。那么它要发送的Modbus-RTU数据为:F70301 0000 1A8E 6F注意:Modbus-RTU的数据结构都用16进制来表示。【地址】因此247转为16进制为F7,表示从机地址【功能码】03为功能码,读取寄存器信息【数据】4转为16进制为0100,因此寄存器首地址为0100,26转为16进制为1A,因此读取的寄存器数量为001A【CRC校验】CRC校验是循环冗余校验,其校验方法为:第一步:处理第一个字节0xF7当前字节与CRC低8位异或:CRC = 0xFFFF ^ 0xF7 = 0xFF08(二进制:11111111 00001000)8 次移位操作(每次右移1位,检查最低位):第 1 次:最低位为 0 →直接右移→ 0x7F84(01111111 10000100)第 2 次:最低位为 0 →直接右移→ 0x3FC2(00111111 11000010)第 3 次:最低位为 0 →直接右移→ 0x1FE1(00011111 11100001)第 4 次:最低位为 1 →右移后与 0xA001 异或→右移:0x0FF0(00001111 11110000)异或:0x0FF0 ^ 0xA001 = 0xAFF1(10101111 11110001)第 5 次:最低位为 1 →右移后与 0xA001 异或→右移:0x57F8(01010111 11111000)异或:0x57F8 ^ 0xA001 = 0xF7F9(11110111 11111001)第 6 次:最低位为 1 →右移后与 0xA001 异或→右移:0x7BFC(01111011 11111100)异或:0x7BFC ^ 0xA001 = 0xDBFD(11011011 11111101)第 7 次:最低位为 1 →右移后与 0xA001 异或→右移:0x6DFE(01101101 11111110)异或:0x6DFE ^ 0xA001 = 0xCDFF(11001101 11111111)第 8 次:最低位为 1 →右移后与 0xA001 异或→右移:0x66FF(01100110 11111111)异或:0x66FF ^ 0xA001 = 0xC6FE(11000110 11111110)处理后 CRC 值:0xC6FE第二步:处理第二个字节 0x03异或操作:CRC = 0xC6FE ^ 0x03 = 0xC6FD(11000110 11111101)8 次移位操作:第 1 次:最低位为 1 →右移后异或→ 0x637E ^ 0xA001 = 0xC37F第 2 次:最低位为 1 →右移后异或→ 0x61BF ^ 0xA001 = 0xC1BE第 3 次:最低位为 0 →直接右移→ 0x60DE第 4 次:最低位为 0 →直接右移→ 0x306F第 5 次:最低位为 1 →右移后异或→ 0x1837 ^ 0xA001 = 0xB836第 6 次:最低位为 0 →直接右移→ 0x5C1B第 7 次:最低位为 1 →右移后异或→ 0x2E0D ^ 0xA001 = 0x8E0C第 8 次:最低位为 0 →直接右移→ 0x4706处理后 CRC 值:0x4706第三步:处理第三个字节 0x01异或操作:CRC = 0x4706 ^ 0x01 = 0x4707(01000111 00000111)8 次移位操作:(过程略,最终结果)处理后 CRC 值:0x8E0E第四步:处理第四个字节 0x00异或操作:CRC = 0x8E0E ^ 0x00 = 0x8E0E(10001110 00001110)8 次移位操作:(过程略,最终结果)处理后 CRC 值:0x4707第五步:处理第五个字节 0x00异或操作:CRC = 0x4707 ^ 0x00 = 0x4707(01000111 00000111)8 次移位操作:(过程略,最终结果)处理后 CRC 值:0x8E0E第六步:处理第六个字节 0x1A异或操作:CRC = 0x8E0E ^ 0x1A = 0x8E14(10001110 00010100)8 次移位操作:(过程略,最终结果)处理后 CRC 值:0x6F8E最终结果计算得到的 CRC 值为 0x6F8E按照 Modbus 协议要求(低字节在前),校验码在帧中表示为 8E 6F【从机回复数据】从机回复也类似,其数据结构为:从机地址+主机发送的功能码+要发送给主机数据的字节数+数据+CRC校验码例如,回复F70301 0000 1A8E 6F,假设从机每个寄存器有两字节数据,被读了26个寄存器,需要恢复52字节的数据,52转为16进制为34,则从机需回复:F703 34 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX [CRC_L] [CRC_H]其中XX XX代表数据,按照高字节在前的格式进行传输。从机地址+主机发送的功能码0x03+要读取的寄存器的首地址+要读取的寄存器数量+CRC校验码从机地址+主机发送的功能码0x03+要发送给主机数据的字节数+数据+CRC校验码这便是Modbus-RTU 0x03的通信协议。3.Modbus-RTU通信实例——改数据该数据所用的功能码为0x06,其结构与读数据类似,不过0x06功能码一次只能改一个寄存器的数据,因此其通信结构为:从机地址+功能码+要改的寄存器地址+要更改为的数据+CRC校验例如F7 06 01 00 00 1A 01 9C相关不再多做解释。如何判断是否修改成功呢?——答案是返回相同的数据即可。因此,从机要回复的数据结构为:F7 06 01 00 00 1A 01 9C从机地址+功能码+要改的寄存器地址+要更改为的数据+CRC校验从机地址+功能码+要改的寄存器地址+已改为的数据+CRC校验这便是Modbus-RTU 0x06的通信协议。2.5 所以SCI协议和Modbus协议到底有啥关系?这也是本文要讲的重点。SCI是基于数据位的,Modbus是基于数据的,二者的关系就是,Modbus是在SCI通信上,进行了一次封装。【举个例子你就明白】我们要发送的数据为:F70301 0000 1A8E 6F那么怎么发送呢?我们是要用到SCI的。想一下如何用SCI发送“F7”?假设在空闲线模式下,我们设置为1位停止位,偶校验,那么我们实际发送的bit位是什么情况呢?将16进制的F7转为二进制:1111 0111此时SCI发送的bit情况:【起始位】0+【数据位】1110 1111+【奇偶校验位】1+【停止位】1拓展到所有的数据:F7:【起始位】0+【数据位】1110 1111+【奇偶校验位】1+【停止位】103:【起始位】0+【数据位】1100 0000+【奇偶校验位】0+【停止位】101:【起始位】0+【数据位】1000 0000+【奇偶校验位】1+【停止位】100:【起始位】0+【数据位】0000 0000+【奇偶校验位】0+【停止位】100:【起始位】0+【数据位】0000 0000+【奇偶校验位】0+【停止位】11A:【起始位】0+【数据位】0101 1000+【奇偶校验位】1+【停止位】18E:【起始位】0+【数据位】0111 0001+【奇偶校验位】0+【停止位】16F:【起始位】0+【数据位】1111 0110+【奇偶校验位】0+【停止位】1然后SCI在使用RS485通信线,去进行具体“逻辑1”与“逻辑0”的传输。数据传输的巧妙,是不是有一种恍然大悟的感觉?[本文完]
2025年07月25日
11 阅读
0 评论
0 点赞
2025-07-21
搭建 RustDesk Server:打造属于自己的远程控制系统,替代 TeamViewer 和 ToDesk!
前言在远程办公、技术支持、家庭协助等场景中,TeamViewer、ToDesk 等远程控制工具广受欢迎。但你是否也遇到过这些困扰:免费版限制越来越多? 商业用途风险被封? 数据中转经过第三方,安全性存疑? 卡顿延迟 这里我们介绍一款开源、安全、免费的远程控制系统 —— RustDesk,只需要有一个公网 ip,就可以搭建自己的 RustDesk Server,完全替代传统远控工具!为什么选择 RustDesk?RustDesk 是一款用 Rust 开发的开源远程桌面工具,功能类似于 TeamViewer / ToDesk,但具有以下优势:✅ 自建服务器,数据全程私有化传输 ✅ 完全免费,无商业限制 ✅ 支持 Windows、macOS、Linux、Android、iOS 多平台 ✅ 支持文件传输、剪贴板共享、多窗口等丰富功能 ✅ 开源透明,安全可控 RustDeskRustDesk github 地址:https://github.com/rustdesk/rustdesk 。RustDesk server 如何工作?安装好的 Rustdesk server 有两个可执行程序 hbbs 和 hbbr。hbbs - RustDesk ID (rendezvous / signaling) server,监听 TCP(21114 - 仅适用于 Pro 中的 http,21115、21116、21118 用于 Websocket)和 UDP (21116) hbbr - RustDesk 中继服务器,监听 TCP(21117、21119 用于 Web 套接字) 以下是 RustDesk 客户端如何与 hbbr / hbbs 通信流程图: https://github.com/rustdesk/rustdesk/wiki/How-does-RustDesk-work%3F只要 RustDesk 在机器上运行,机器就会不断 ping ID 服务器(hbbs)以使其当前的 IP 地址和端口为人所知。当您启动从计算机 A 到计算机 B 的连接时,计算机 A 会联系 ID 服务器并请求与计算机 B 通信。然后,ID 服务器尝试使用 hole punching 将 A 和 B 直接相互连接。如果 hole punching 失败,A 将通过中继服务器(hbbr)与 B 通信。在大多数情况下,hole punching 是成功的,并且从不使用中继服务器。RustDesk server 安装我们需要有一台有公网 ip 的云主机,推荐使用 Linux 系统。可以使用官方的一键安装脚本也可以使用 docker 安装。一键安装wget https://raw.githubusercontent.com/techahold/rustdeskinstall/master/install.shchmod +x install.sh./install.sh安装成功后会在终端输出你的 rustdesk server IP/DNS 和 public key ,这两个需要配置到 RustDesk Client. 另外如果忘记 public key, 可以在/opt/rustdesk 目录查找以 .pub后缀的文件。
2025年07月21日
8 阅读
0 评论
0 点赞
2025-07-17
使用“微PE工具箱”修改Windows密码
下载“微PE工具箱”PE制作工具,下载最新版本即可。微PE工具箱 - 下载可以点击”先不捐赠“免费下载,也可支持一下。安装到U盘准备一个U盘,最好是空的;选择将微PE工具箱下载到U盘中。“安装PE到优盘”按钮。如下图所示。进入PE找到DSM++工具箱-账户管理清除对应的账户就可以了
2025年07月17日
6 阅读
0 评论
0 点赞
2025-07-17
Win7虚拟键盘怎么打开?Win7虚拟键盘打开的方法
有时候自己的键盘使用久了以后经常会突然坏掉,这个时候我们可以开启电脑自带虚拟键盘来解燃眉之急。那么Win7的虚拟键盘该怎么打开?今天就和小编一起来看看有什么操作方法吧。 Win7虚拟键盘打开的方法1、打开电脑左下角的“开始”,然后点开“控制面板”。2、打开之后进入控制面板设置框,在页面的右上方有一个“查看方式”。3、然后我们点开查看方式,选择“大图标”。4、在大图标显示页面,找到“轻松访问中心”。5、然后进入到轻松访问中心页面,就可以看到有一个“启动虚拟键盘”。6、然后点开这个“启动虚拟键盘”,虚拟键盘就出现在电脑桌面上了,使用鼠标点击就可以当键盘来用啦。
2025年07月17日
5 阅读
0 评论
0 点赞
2025-07-16
关于使用CUPS共享打印机的正确姿势,你可以永远告别打印驱动了
一直以来,使用CUPS作为打印服务器是论坛里流行的做法,一方面这是windows的传统弱项,另一方面也是移动打印的唯一选择不过我发现大家对于CUPS的优势并不熟悉,使用CUPS仅仅是因为,没得选。。。。。。然而CPUS作为打印机管理和共享服务,要比windows自带的打印机共享强得多主要的优势在于:1.CUPS基于ipp协议,而不是windows孱弱复杂的SMB服务,所以也没有windows系统共享需要同网段等限制;2.CUPS支持IPP Everywhere,这是一个旨在推进共享打印机不再需要安装驱动的协议,目前支持linux系统的打印机基本都支持这个协议。用过win打印机共享的同学应该对装驱动这一步印象深刻,不同系统winxpwin7win10,不同的架构x86,x64,你简直不知道要装多少个版本的驱动才能满足所有电脑的需求,然而在CUPS下,这一切都不存在,而且是连手机都不存在。所以结论非常明显,使用linux下的CUPS来共享打印机(包括但不限于斐讯N1、openwrt路由器等等),远远比用windows共享方便的多,只要你有跨平台、跨网段使用打印机的需求,你就应该尽量使用CUPS来作为共享服务器。下面要说说使用CUPS的正确姿势因为CUPS也是支持使用SMB也就是windows那种共享方式的,所以如果你用了CUPS,但win上还是要求你装驱动,那么就是你使用方法不对。请按照我下面的步骤来添加打印机,你会神奇的发现什么驱动都不再需要了。首先把CUPS服务和打印机连接好,保证访问的畅通,这里的标志是你可以用http://IP:631来访问到CUPS服务。只要服务器不是在下级子网,都是可以访问的。怎么部署CUPS不是本贴的重点,论坛里有很多。windows添加CUPS打印机的步骤:1.手动添加打印机2.选择“使用ip地址或主机名添加打印机”3.设备类型保持“IPP设备”,在地址栏输入CUPS打印机的地址,这个地址可在CUPS的网页后台Printers页面下看到,点击列出的打印机,地址栏里的就是最终地址;类似于http://192.168.1.1:631/printers/Pantum-M7100DN-series然后点击确定,你会发现直接添加完成,没有任何需要驱动的地方,无论你是什么牌子什么型号的打印机,也无论还是什么系统什么架构。关于移动设备打印CUPS不需要驱动的特性对于移动设备更是重大利好,你终于可以摆脱各家厂商自己的手机app,各种小程序,各种第三方打印软件(还要找付费版)苹果设备:CUPS本身就是苹果主导的产物,虽然苹果后来主推了AirPrint,但还是支持ipp协议的在同网段下IOS设备直接就能搜索到CUPS共享的打印机,无需多余操作。非同网段下的访问目前我还不太清楚,因为我的手机不是苹果。但苹果的移动打印从来不是难点。MAC我没有,就更没法测了,请有条件的同学测试吧。安卓设备安卓设备上通常的做法是要么使用厂商自己的APP,要么使用PrintHand Mobile Print和PrinterShare Mobile Print这样的第三方app,但这俩都是收费软件,而且内置的驱动只有主流机型,一旦你的打印机稍微小众一点,就会无法使用。要在安卓上使用无需驱动的CUPS打印机需要CUPS的官方app,CUPS Printing谷歌商店的地址是https://play.google.com/store/ap ... rint&hl=en_US&gl=US这个app久未更新,但好在还可以正常使用。最新的版本是在2018年的1.5,你也可以在f-driod下载到它https://f-droid.org/zh_Hans/packages/io.github.benoitduffez.cupsprint/安装后虽然有图标,但并不能打开使用。它是结合在系统打印服务里的,在设置里找到打印选项,会发现已经有了CUPS Printing的列表,点进去添加打印机,地址还是上面那个地址,名字可以随便起。同样不需要任何驱动就能添加。不过出于版本过早的原因,这个app恐怕没有多少可以调整的选项,建议尽量使用PDF来打印。
2025年07月16日
3 阅读
0 评论
0 点赞
2025-07-11
交换机链路聚合、堆叠、集群有啥本质区别?
交换机的链路聚合、堆叠和集群是三种常见的技术手段,它们都能提升网络的性能、可靠性和扩展性。然而,这三者的本质区别是什么?它们在实际场景中如何选择?作为一名网络工程师或IT从业者,深入理解这些技术的底层原理和应用场景,不仅能优化网络架构,还能为企业节省成本、提升效率。链路聚合链路聚合(Link Aggregation),也叫端口聚合或链路捆绑,是将多个物理链路(如网线或光纤)绑定为一个逻辑链路的技术。常见标准是IEEE 802.3ad(LACP,Link Aggregation Control Protocol),通过协议动态协商实现链路的绑定与管理。打个比方,链路聚合就像把几条小水管并成一条大水管,水流量(带宽)增加,单条水管坏了(链路故障),其他水管还能继续工作(冗余)。链路聚合的核心是将多个物理端口(如千兆或万兆端口)绑定为一个逻辑端口,称为链路聚合组(LAG,Link Aggregation Group)。流量在聚合组内的物理链路间进行负载均衡,分担数据传输任务。负载均衡的算法通常基于以下几种方式:• 基于源/目的MAC地址:相同MAC地址的流量走固定链路。 • 基于源/目的IP地址:相同IP地址的流量走固定链路。 • 基于TCP/UDP端口号:更细粒度的负载均衡,适合高并发场景。 LACP协议会定期发送探测报文,检测链路状态。如果某条物理链路故障,LACP会自动将其从聚合组中移除,流量重新分配到其他链路。• 带宽提升:假设4条千兆链路聚合,理论带宽可达4Gbps。 • 冗余保护:单条链路故障不影响整体通信。 • 简单配置:只需在交换机端口上启用LACP或静态聚合,无需额外硬件。 链路聚合广泛用于以下场景:• 服务器与交换机连接:如文件服务器需要高带宽,聚合多条网卡链路。 • 交换机间互联:核心交换机与汇聚交换机间通过聚合链路提升吞吐量。 • 数据中心网络:虚拟化环境中的高流量场景,如VMware vSphere的网络配置。 优点:• 配置简单,成本低。 • 即插即用,支持跨厂商设备(遵循LACP标准)。 • 带宽和冗余兼得。 缺点:• 仅提升单点到单点的链路性能,无法扩展交换机的整体容量。 • 负载均衡效果依赖算法,单流(如单一TCP会话)可能无法充分利用所有链路。 • 不支持管理层面的统一控制,仅限于物理链路层。堆叠堆叠(Stacking)是将多台物理交换机通过专用堆叠端口或线缆连接,逻辑上合并为一台虚拟交换机的技术。堆叠后的交换机共享一个控制平面(管理IP、配置)和数据平面(转发表),对外表现为单一设备。用生活化的比喻,堆叠就像把几台电脑的CPU、内存和硬盘通过高速总线连起来,组成一台超级电脑,统一调度资源。堆叠技术依赖专用的堆叠模块或端口(如10G/40G堆叠端口),通过高速堆叠线缆(如DAC或AOC)连接多台交换机。堆叠系统内部运行专有协议(如思科的StackWise或华为的iStack),实现以下功能:• 控制平面统一:堆叠中的交换机选举一台主控交换机(Master),负责管理整个堆叠(如配置下发、软件升级)。其他交换机作为从属(Member)。 • 数据平面共享:所有交换机的端口共享一张全局转发表,数据可以在堆叠内任意端口间转发。 • 高可用性:主控交换机故障时,从属交换机可接管,保持业务连续性。 堆叠常用于以下场景:• 企业接入层:如办公楼每层部署一台交换机,堆叠后统一管理,减少IP地址占用。 • 小型数据中心:需要高密度端口但预算有限时,堆叠比购买高端交换机更经济。 • 校园网:教学楼间的交换机通过堆叠实现统一管理和高可用性。 优点:• 统一管理,降低运维复杂度。 • 端口扩展灵活,适合中小规模网络。 • 支持跨设备冗余(如MLAG)。 缺点:• 堆叠通常需要同型号或同系列交换机,限制厂商选择。 • 堆叠线缆长度有限(通常几米),限制物理部署范围。 • 堆叠规模有限(如最多9台),无法满足超大规模网络需求。 集群集群(Clustering)是将多台交换机通过网络互联,组成一个分布式系统,协同工作以实现高性能、高可用性和可扩展性。集群技术常见于高端交换机或数据中心场景,如思科的Nexus VPC(Virtual Port Channel)或华为的CSS(Cluster Switch System)。如果说堆叠是“合体”,集群更像是“联邦”,每台交换机保留一定独立性,但通过协议协同形成统一的逻辑系统。集群技术通过专用协议(如VPC或CSS)实现多台交换机的协同工作,主要包括以下机制:• 控制平面协同:集群中的交换机共享部分控制信息(如MAC表、ARP表),但每台交换机仍保留独立的管理IP和配置。 • 数据平面分布式:数据转发由每台交换机独立完成,集群协议确保跨设备的流量一致性。 • 虚拟化技术:集群支持虚拟化特性,如VPC允许跨交换机的链路聚合,模拟单台逻辑设备。 集群通常通过高速互联链路(如40G/100G)连接,物理距离可达数百米甚至更远(依赖光纤)。• 分布式架构:每台交换机独立运行,故障隔离性强。 • 跨设备冗余:支持跨交换机的链路聚合(如VPC),提供更高可用性。 • 灵活扩展:支持异构设备和远距离互联,适合复杂网络。 集群适用于以下场景:• 大型数据中心:如核心层交换机通过VPC实现双活架构,提升可靠性和带宽。 • 企业核心网络:需要高可用性和分布式管理的场景,如金融行业。 • 云计算环境:支持SDN(软件定义网络)或VXLAN的分布式网络架构。 优点:• 分布式架构,故障隔离性强,单台故障影响小。 • 支持远距离互联,部署灵活。 • 可扩展性强,适合大规模网络。 缺点:• 配置复杂,需要专业知识。 • 成本较高,需高端交换机和高速互联链路。 • 跨厂商兼容性较差,依赖专有协议。链路聚合、堆叠、集群的本质区别技术层面的本质区别• 链路聚合聚焦于链路层(L2),通过绑定物理链路提升带宽和冗余,不涉及交换机的整体架构。 • 堆叠是设备层(L2/L3)的整合,将多台交换机“合体”为一个逻辑设备,共享控制和数据平面。 • 集群是系统层(L2/L3+)的协同,强调分布式架构和跨设备的协作,保留设备独立性。 假设一家企业需要升级网络,场景如下:• 小型办公室:20台PC,1台文件服务器,需高带宽连接。 • 选择链路聚合:在服务器和交换机间配置4条千兆链路聚合,带宽达4Gbps,成本低、配置简单。 • 中型企业:5层办公楼,每层1台接入交换机,需统一管理。 • 选择堆叠:5台交换机通过堆叠线缆连接,统一管理IP,端口总数扩展到240个,适合中型规模。 • 数据中心:双核心交换机,需高可用性和远距离互联。 • 选择集群:两台核心交换机通过VPC集群,配置跨设备链路聚合,支持40G互联,故障隔离性强。如何选择选择链路聚合、堆叠还是集群,需综合考虑以下因素:1. 网络规模:小型网络优先链路聚合,中型网络考虑堆叠,大型网络选择集群。 2. 预算:链路聚合成本最低,堆叠次之,集群需要高端设备和光纤投资。 3. 运维能力:链路聚合和堆叠配置简单,适合普通运维团队;集群需要专业人员。 4. 物理限制:堆叠受线缆长度限制,集群支持远距离部署。 5. 高可用性需求:集群的分布式架构提供最高可用性,堆叠次之,链路聚合仅限链路冗余。 建议:• 如果你只是想提升单点带宽或冗余,链路聚合是首选。 • 如果需要扩展端口并简化管理,堆叠是不错的选择。 • 如果追求高可用性和大规模扩展,集群是最佳方案,但需权衡成本和复杂度。 ---END---
2025年07月11日
5 阅读
0 评论
0 点赞
1
2
3
4
5