1. ModBus基本知识ModBus是作为主从通讯的常用通讯手段之一,在实际应用场景中,主设备一般为工控机,从设备则一般为PLC,ModBus采集模块,带485通讯的传感器、仪器仪表等。根据物理接口,将通讯大体分为串口通讯和以太网口通讯。其中RS232/RS485/RS422为串口通讯,对应ModBusRTU及ModBusASCII通讯协议。RS-232:全双工收发接口,这个基本用在点对点通信场景下,不适合多点拓扑连接,采用共模电平编码,一般需要Rxd/Txd/Gnd三根线连接。RS-485:半双工收发接口,这是最为常用的modbus物理层,信号采用差分电平编码,用一对双绞线现场布线,抗干扰
TCP三次握手过程是怎样的?客户端和服务端都处于CLOSE状态,服务端主动监听某个端口,处于LISTEN状态第一次握手:客户端带着序号和SYN为1,把第一个SYN报文发送给服务端,客户端处于SYN-SENT状态第二次握手:服务端收到客户端的SYN报文后,服务物端带着序号和SYN和ACK为1,把报文发送给客户端,服务端处于SYN-RCVD状态第三次握手:客户端收到服务端报文后,把带着ACK为1的报文发送给服务端,这次报文可以携带客户到服务端的数据,客户端处于ESTABLISHED状态服务端收到客户端的应答报文后,也进入ESTABLISHED状态第三次握手是可以携带数据的,前两次握手是不可以携带数
将本地代码推送到远程分支报错:Permissiondenied(publickey).fatal:Couldnotreadfromremoterepository.确保已经添加了正确的SSH密钥。可以使用以下命令检查SSH密钥是否已经添加:ssh-Tgit@github.com如果看到消息“Hi[username]!You'vesuccessfullyauthenticated,butGitHubdoesnotprovideshellaccess.”,则表示已成功通过SSH访问GitHub。否则,表示没有访问远程仓库的权限,可能是因为没有正确配置SSH密钥或没有在Github上将公钥添加到的帐
一、环境构建1.实验环境Ubuntu22.04LTSLinux-5.4.34busybox-1.36.02.环境配置2.1安装相关工具axel是一款多线程下载工具,用于下载Linux内核源代码及其他大文件;build-essential软件包里面包含了很多开发必要的软件工具,比如make、gcc等;QEMU是一种通用的开源计算机仿真器和虚拟器,为自己编译构建的Linux系统运行提供虚拟硬件平台。sudoaptupdatesudoapt-getinstallaxelsudoapt-getinstallbuild-essentialsudoaptinstallqemusudoapt-getinst
目录一、网络基础1.1什么是网络①网络是一组计算机或网络设备通过有形的线缆或无形的媒介,连接起来,按照一定的规则,进行通信的集合。②通信是指人与人、人与物、物与物之间通过某种媒介和行为的信息传递与交流。③网络通信,是指终端设备之间通过计算机进行的通信。1.2网络的分类网络按照覆盖范围分类①局域网。特点:小范围网络,校园网,企业网(多用于企业)②城域网。特点:城市范围网络。③广域网:全国,全球网路,internet1.3信息传递过程1.3.1数据通信方式①单播一对一私聊②组播一对多群聊③广播一对所有1.4常见术语网络相关术语。①.物理拓扑-----体现了设备之间的连接关系。②.数据载荷(华为):
个人主页:兜里有颗棉花糖欢迎点赞👍收藏✨留言✉加关注💓本文由兜里有颗棉花糖原创收录于专栏【网络编程】【Java系列】本专栏旨在分享学习网络编程的一点学习心得,欢迎大家在评论区交流讨论💌目录一、TCP实现回显服务器二、服务器端三、客户端四、运行结果一、TCP实现回显服务器TCP提供的API主要有两个类Socket(既会给服务器使用也会给客户端使用)和ServerSocket(一般为服务器使用)。TCP将数据分割成以字节为单位的小数据块进行传输(一个TCP数据报就是一个字节数组byte[])。二、服务器端在服务器端创建一个ServerSocket对象,并绑定一个端口号。进入while循环:注意这里
项目场景:新的未安装环境的mac本使用vue-cli创建vue项目时遇到一点问题,现做个记录。问题记录安装:安装node,安装webpack,安装vue-cli。npminstallwebpack-g,执行时看起来没有问题,但是使用命令时会报错permissiondenied,是因为没有权限。需要使用sudo+你的命令,然后输入电脑的账户密码,此时再执行命令就不会有问题。脚手架区分:安装vue-cli2.x:sudonpminstallvue-cli-g安装vue-cli3.x+:sudonpminstall-g@vue/cli新建项目:vue-cli2.x:sudovueinitwebpac
这里写自定义目录标题前言正式开始用生活中的例子来讲解TCP服务端和客户端代码讲解服务端基本框架创建套接字+bindlisten监听accept接收连接通信单线程版多进程①版多进程②版多线程版线程池版客户端收尾前言本篇主要讲解套接字编程,以TCP服务端和客户端为主,提供以下版本:单线程循环版多进程版(两个小版本)多线程版线程池版本篇部分内容基于上篇UDP服务端和客户端的编写,屏幕前的你若对于UDP编写服务端和客户端不熟悉,建议先看我上一篇博客:【网络】网络编程入门篇——了解接口,快速上手,带你手搓简易UDP服务器和客户端(简易远端shell、简易群聊功能以及跨平台群聊),如果你已经很了解UDP相
DNS(DomainNameSystem)使用UDP(UserDatagramProtocol)而不是TCP(TransmissionControlProtocol)的主要原因是出于性能和效率的考虑。下面详细解释为什么DNS选择使用UDP协议:小型请求和快速响应:DNS查询通常是小型请求,仅需要几个字节的数据传输。UDP是无连接的协议,它不需要在通信之前建立连接,而是将数据包发送到目标地址并等待响应。这使得UDP比TCP更适合快速响应的场景。低延迟:DNS查询通常需要低延迟来提供快速的域名解析服务。UDP的简单性和无连接性使得数据包能够以更低的延迟传输,因为它不需要进行连接建立和断开的过程,减
Note:本文为阅读RFC9293时的记录Note:本文中老旧的报文或者其他类似的说法意为:因为网络拥塞或者其他原因导致延迟的报文。并且,该报文已经TCP新发送的新的同类型报文替代。比如:TCP对等体发送的SYN命名为A报文,此时A报文因为网络拥塞原因发送了延迟,TCP对等体因为长时间没有收到对A报文的确认报文,所以发送了一个新的SYN报文,命名为B报文。此时A就是老旧报文(原文为:oldduplicated),已经再无任何用处。在阅读该篇文章之前,应该阅读TCPSequence三报文握手(3WHS)是建立连接的基本步骤,这个过程通常有一个TCPpeer主动开启,由另一个TCPpeer响应。也