自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1948)
  • 问答 (2)
  • 收藏
  • 关注

转载 基于OPC UA协议的SIMATIC PLC通信实现

参考代码 OPC UA SIMATIC(PLC通信) www.youwenfan.com/contentcni/62434.html。

2025-09-29 14:51:38 51

转载 OPC UA 协议分析

到这里,相信你对OPC UA协议已经有所了解,在分析OPC UA 协议时,通过Wireshark抓包就能看到协议内部实现 browse 请求的细节,对照官方基金会提高的白皮书第四篇,就能理解内部数据交互的各个细节,所以只要左手Wireshark,右手OPC UA白皮书,即可轻松实现协议入门。安全头后面总是跟者序列头。序列头确保通过通道发送的每条消息的第一个加密块将以不同的数据开始,序列头包含一个数字以标识数据块,它所在的消息体(如编码的服务消息)不能放进单个块,因此不得不拆分为多个块使用。

2025-09-29 14:50:21 51

转载 Transport Layer Interface 考古

正因此,我在维护 lsof 的时候,经常看到 TCP/TPI state,不明所以,才会研究 TPI 的历史,然后找到 TLI,才知道除了 Sockets 以外,还有一套 Unix 上的网络 API。现在网络编程主要采用的是 BSD Sockets API,但实际上当年还有另一套 API,就是 TLI(Transport Layer Interface),后来 BSD Sockets 胜出,进入了 POSIX 标准,TLI 后面也标准化为了 XTI,现在可以在部分 Unix 系统中找到。

2025-09-10 14:13:08 145

转载 Netlink简介

Netlink是基于socket的用户空间进程和内核态进程通信的方式。用途有两个,内核为用户态程序提供了很多接口(如route, firewall, ipsec等),直接在用户空间连接相应的socket,就可以获得广播信息。自己编写内核模块,需要和用户空间通信,比/proc,设备驱动方式更加灵活。网络间通信(网络上的两个进程)用: Network socket同一主机内进程间通信(用户态): Unix domain socket用户态进程和内核态进程通信: Netlink socket。

2025-09-10 13:42:21 105

转载 Netlink Socket通信机制详解与实战指南

Netlink是Linux内核提供的一种IPC(进程间通信)机制,它允许用户空间进程与内核空间模块进行双向通信。这一机制特别适合于需要高效处理网络、内核数据或事件的场景。Netlink基于AF_NETLINK地址族,它使用标准的socket API进行操作,因此熟悉socket编程的开发者可以快速上手。Netlink支持多播消息,使得一个进程可以向多个目标进程广播消息,这在传统的UNIX domain socket中是不支持的。

2025-09-10 13:40:51 203

转载 原始套接字 IP_HDRINCL

第一个参数:协议族 AF_INET 代表TCP/IP协议第二个参数:SOCKET类型第三个参数:协议类型注意:@如果指定协议为0时,原始套接字可以接收内核传递给原始套接字的任何IP数据包,且只有超级用户才可以创建原始套接字。@当需要编写自己的IP数据包首部时,可以在原始套接字上设置套接字选项IP_HDRINCL.在不设置这个选项的情况下,IP协议自动填充IP数据包的首部。在将一个IP数据包传送给原始套接字之前,内核需要选择匹配的原始套接字1.数据包的协议域必须与接收原始套接字的协议类型匹配。

2025-09-08 16:15:11 95

转载 浅谈linux下原始套接字 SOCK_RAW 的内幕及其应用

真正从网卡进来的数据是完整的以太网帧,底层用sk_buff 数据结构描述,最终进入接收缓冲区recv buffer,而我们应用层调用read / recv /recvfrom 从接收缓冲区拷贝数据到应用层提供的buffer,对一般的套接字,如SOCK_STREAM, SOCK_DGRAM 来说,此时缓冲区只有user data,其他各层的头部已经被去除,而对于SOCK_RAW 来说是IP head + IP payload,当然也可以是arp/rarp 包,甚至是完整的帧(加上MAC头)。

2025-09-08 16:11:29 104

转载 Linux网络编程- 原始套接字(Raw Socket)

原始套接字(Raw Socket)提供了一种机制,允许应用程序直接访问底层传输协议,绕过操作系统提供的传输层接口。这种套接字通常用于实现新的协议或对现有协议进行低级别的操作。以下是对原始套接字的详细介绍:定义与用途:创建:特权:工作方式:用途与限制:注意事项:跨平台的差异:总的来说,原始套接字是一个非常强大的工具,但也需要谨慎使用。正确使用它需要对网络协议有深入的理解,而滥用它可能导致网络问题或被视为恶意活动。创建链路层的原始套接字允许我们直接与链路层设备(例如以太网适配器)交互,从而可以发送和接收链路层帧

2025-09-08 16:09:40 97

转载 多旋翼飞行器振动机理分析和减振设计

这样的滤波器设计简单,运算速度快,但存在两个缺陷。观察图 6,可以看出在表 2的材料属性下,旋翼形变较大的某个模态,其固有频率接近电机转速,说明旋翼将会产生较大振动,这将增加噪声并降低旋翼的气动效率,并可能在气动弹性系统中形成正反馈,增大系统的振动。由于数据采集系统的采集速率有限,每次飞行过程只对一个位置的振动情况进行测量,考虑到四旋翼飞行器的对称性,只对其中一支机臂上的五个位置(Arm1到Arm5)和机架中心进行测量,机架中心分别在不加隔振器(Board1)和加隔振器(Board2)的情况下测量。

2025-09-06 17:22:12 145

转载 无人机惯性测量单元减振设计与验证

首先,分析在不同截止频率下的时域特性及加速度波动情况,截止频率的选择与IMU原始数据的快速傅立叶变换有关,通过快速傅立叶变换可以得到各个频段的幅值,其次,确定IMU原始数据会产生高频信号干扰的频段,选择低于这个频段的截止频率,再次,综合判断滤波效果的。最后,分析不同频率段的振幅情况,综合判断IMU减震效果。2,减振材料可选硅胶,橡胶,硅橡胶,海绵,钢丝绳,空气阻尼器等,对于大载重的直升机可以用钢丝绳减振,可以达到较低的频率,一般5Hz以下;3,减振结构的受力形式,可以分为三种,第一种是压缩,第二种是剪切。

2025-09-06 17:20:39 149

转载 高级进程间通信之UNIX域套接字

另外,accept函数也经由其第二个参数(指向sockaddr_un结构的指针)返回客户进程赋予其套接字的路径名(包含客户进程ID的名字)。我们调用unlink,以防该路径名已经存在,然后,调用bind将名字赋予客户进程套接字。确定绑定地址长度的方法是,先确定sun_path成员在sockaddr_un结构中的偏移量,然后将此与路径名长度(不包括终止null字符)相加。我们调用socket函数创建UNIX域套接字的客户端进程,然后用客户端进程专有的名字填入sockaddr_un结构。

2025-09-06 17:18:41 96

转载 tcpdump高级过滤

OpenSSH 常常应答一些内容,比如"SSH-2.0-OpenSSH_3.6.1p2", 这第一个4 bytes (SSH-)的十六进制值是 0x5353482D。打印所有源或目的端口是80, 网络层协议为IPv4, 并且含有数据,而不是SYN,FIN以及ACK-only等不含数据的数据包.(ipv6的版本的表达式可做练习)IP头有个长度字段可以知道头长度是否大于20字节。转自:https://blog.wains.be/2007/2007-10-01-tcpdump-advanced-filters/

2025-09-04 18:09:19 134

转载 Makefile中:=, =, ?=和+=的含义

在语法中,时不时会见到各种“=”号的赋值语句,除了常见的“=”和“:=”,还有“?=”等那么这些赋值等号分别表示什么含义呢?

2025-09-04 17:13:54 148

转载 利用ICMP实现Traceroute

最近工作中遇到一个需求,就是需要知道我们发出去的请求经过的所有路由IP地址。查了些资料,主要是用ICMP(Internet控制报文协议)。

2025-09-04 17:04:25 96

转载 Linux 根据 socket inode 获取其进程pid

dev/sda 可以通过任何一个程序以任意方式读写,定义一套任意的私有格式(或文件系统)即可,而 /dev/eth0 则必须和对端共同遵守一套格式和逻辑,这同一套格式和逻辑就是 TCP/IP,将 TCP/IP 汇聚于系统本身或共享库中最直接,这取消了直接读写网卡的需求,而调用系统或共享库中协议例程的接口就是 socket。创建像 /dev/sda 一样的设备文件 /dev/eth0 读写网卡不难,像 /dev/net/tun 注册物理网卡就行,但你读写它时要自己手工做协议的封装和解封装。

2025-08-28 17:27:03 159

转载 彻底明白ip地址,区分localhost、127.0.0.1和0.0.0.0

而在网络访问时,只有知道你在网络中的地址信息,才能将数据发送到你的设备上。是与具体的网络接口绑定的,比如以太网卡、无线网卡或者PPP/PPPoE拨号网络的虚拟网卡,想要正常工作都要绑定一个地址,否则其他设备就不知道如何访问它。,这样做不仅提供了一定程度的安全,也可以有效的减缓可用的IP地址空间的枯竭问题。与你现实地址不同的是,你的现实地址使用文字表示,而你在网络中的地址(来连接Internet,所以这个内网中的PC在Internet中显示的都是路由器的。而同样的,因为使用的是路由器中的。

2025-08-28 16:45:41 160

转载 127.0.0.1 与 localhost:需要知道的区别与用法

在开发与运维工作中,我们经常会遇到127.0.0.1和localhost,它们在很多情况下看似可以互换使用,但实际上有一些细微的区别。本文将通过多个示例,帮助理解它们的本质差异,以及它们在不同应用场景中的适用性。对比项127.0.0.1localhost是否是IP地址✅ 是❌ 不是(是域名)解析方式固定解析为本机依赖hosts文件或DNS解析影响MySQL连接使用TCP连接可能使用Unix Socket(Linux/macOS)是否影响CORS是是适用场景网络请求、数据库连接、跨域测试。

2025-08-28 16:44:34 989

转载 TCP带外数据

传输层协议使用带外数据(out-of-band,OOB)来发送一些重要的数据,如果通信一方有重要的数据需要通知对方时,协议能够将这些数据快速地发送到对方.为了发送这些数据,协议一般不使用与普通数据相同的通道,而是使用另外的通道.linux系统的套接字机制支持低层协议发送和接受带外数据.但是TCP协议没有真正意义上的带外数据.为了发送重要协议,相应的,一个连接的流式套接口上的带外数据的工作原理也与此类似。下面列出的程序演示了一个简短的发送程序,他只可以传输一些小的字符串,然后停止发送带外数据。

2025-08-27 16:08:13 86

转载 TCP 带外数据(即紧急模式的发送和接受)

首先,我们需要知道的是数据分为两种,一种是带内数据,一种是带外数据。带内数据就是我们平常传输或者说是口头叫的数据。带外数据就是我们接下来讲的内容。许多的传输层都具有带外数据(也称为 经加速数据 )的概念,想法就是连接的某段发生了重要的事情,希望迅速的通知给对端。这里的迅速是指这种通知应该在已经排队了的带内数据之前发送。也就是说,带外数据拥有更高的优先级。带外数据不要求再启动一个连接进行传输,而是使用已有的连接进行传输。其中,UDP没有实现带外数据(是个极端哦~)TCP中telnetrloginftp。

2025-08-27 15:03:51 73

转载 syslog详解及配置远程发送日志和远程日志分类

完善的日志分析系统应该能够通过多种协议(包括syslog等)进行日志采集并对日志分析,因此日志分析系统首先需要实现对多种日志协议的解析。其次,需要对收集到的海量日志信息进行分析,再利用数据挖掘技术,发现隐藏再日志里面的安全问题。Syslog再UNIX系统中应用非常广泛,它是一种标准协议,负责记录系统事件的一个后台程序,记录内容包括核心、系统程序的运行情况及所发生的事件。

2025-08-25 19:04:59 149

转载 Linux C 获取主机网卡名及 IP 的几种方法

在进行Linux时,经常会需要获取本机IP地址,除了常规的读取配置文件外,本文罗列几种个人所知的编程常用方法,仅供参考,如有错误请指出。

2025-08-21 12:46:17 212

转载 常用希腊字母与英文字母对照表;希腊字母中文发音

工程学中表示直径(大写斜体)磁导系数微(千分子一)放大因数(小写);磁感应强度(大写);介质电通量(静电力线);

2025-08-19 12:51:11 939

转载 linux service 怎么添加新 services

我们在日常使用Linux的过程中经常会用到service XXX start/stop/restart等命令对相关系统服务进行控制。(CentOS在版本7之前,CentOS7以及最新版Ubunt都是用systemctl来对系统服务进行管理,当然原来的还是可以用的=。=)看到公司的产品也是使用service开关系统服务的,查阅了相关资料,特在此总结一下。

2025-08-15 10:01:27 82

转载 linux守护进程之setsid理解

一个守护进程的父进程是init进程,因为它真正的父进程在fork出子进程后就先于子进程exit退出了,所以它是一个由init继承的孤儿进程。有必要先介绍一下Linux中的进程与控制终端,登录会话和进程组之间的关系:进程属于一个进程组,进程组号(GID)就是进程组长的进程号(PID)。//调用进程必须是非当前进程组组长,调用后,产生一个新的会话期,且该会话期中只有一个进程组,且该进程组组长为调用进程,没有控制终端,新产生的group ID 和 session ID 被设置成调用进程的PID。

2025-08-14 18:11:34 67

转载 【Linux】守护进程( Daemon)的定义,作用,创建流程

因此,通常的做法是让"/"作为守护进程的当前工作目录,这样就可以避免上述的问题,当然,如有特殊需要,也可以把当前工作目录换成其他的路径,如/tmp,改变工作目录的常见函数是chdir。为什么要再次fork呢,假定有这样一种情况,之前的父进程fork出子进程以后还有别的事情要做,在做事情的过程中因为某种原因阻塞了,而此时的子进程因为某些非正常原因要退出的话,就会形成僵尸进程,所以由子进程fork出一个孙进程以后立即退出,孙进程作为守护进程会被init接管,此时无论父进程想做什么都随它了。

2025-08-14 17:30:42 80

转载 Apollo:源码分析之signal.h

然后它还重载了operator()函数,它会调用关联到这个信号对应的所有槽(所有关联的回调函数),其实就是通知所有监听该信号的回调函数。小结:保存了一个信号的指针一个槽的指针,一个Connection实例就代表了一条关联关系。关键函数:关键自傲与重写了operator(),如果满足要求,那么调用了Slot(…用来将标记置为false。connect的断开动作是调用信号signal_的Disconnect实现的。可以看到具体的动作就是slot的operator()来做的。Signal中的函数都是线程安全的。

2025-08-06 12:39:57 124

转载 Linux--信号(万字详解!超完整!)

我们都知道,在管道通信时,读端关闭,写端一直进行,写就没有意义了,这时候操作系统,就会向进程发送SIGPIPE(13号信号),终止进程。

2025-08-06 12:38:33 207

转载 03. 理解文件系统inode,superblock

好了,到现在为止从01. 数据在磁盘中的存储 和 02. 数据在flash的存储,我们理解了说在硬件层面上数据的存储,也理解了为了使得文件系统和底层的物理特性解耦合,我们在文件系统中设定了 "逻辑块" 的概念,并且使用 映射层 来实现从逻辑块和物理地址的映射,不论是基于磁盘还是基于flash。由此我们开始使用逻辑块的概念理解文件系统。基本围绕的话题有通过理解这些问题,基本了解文件系统的读写首先就是文件系统存储的数据实际上是两个部分纯数据区元数据区。

2025-08-01 14:42:57 93

转载 Linux内核之IO2:EXT文件系统详解(案例解析)

一切都是文件,Linux通过VFS中间层,支持多种文件系统,对APP统一接口;文件系统的本质是将用户数据和(管理数据的数据),组织成有序的目录结构。

2025-08-01 14:31:06 76

转载 day026-网络基础-TCP11种状态与网络管理命令、抓包

命令LinuxWindows查询IP地址ip aifconfigipconfig检查端口号ssnetstatlsofnctelnetnmap检查连接情况测速iftopnethogsDNS解析dighostnslookupnslookup路径追踪mtrtracert检查链路是否畅通pingfpingping检查路由表ip roroute -n测试带宽iperf显示详细信息。

2025-07-25 17:10:26 120

转载 C语言网络编程:listen函数详解

根据TCP编程模型中我们可以看到之前的socket和bind接口是tcp服务器在为接收客户端的链接做准备,保证tcp的面向字节流,面向连接的可靠通信服务正常进行。接下来的listen端口则为我们进行三次握手与客户端进行链接的接口。TCP编程模型如下。

2025-07-23 16:24:08 100

转载 STM32G030F6P6 HSE时钟不能使用无源晶振,只能使用有源晶振!

STM32G030F6P6 LSE是可以使用有源。

2025-07-21 17:00:43 117

转载 有源晶振的电路设计

(1)可以减少谐波,有源晶体输出的是方波,这将引起谐波干扰,尤其是阻抗严重不匹配的情况下,加上电阻后,该电阻将与输入电容构成RC积分平滑电路,将方波转换为近似正弦波,虽然信号的完整性受到一定影响,但由于该信号还要经过后级放大、整形后才作为时钟信号,因此,性能并不受影响,该电阻的大小需要根据输入端的阻抗、输入等效电容,有源晶体的输出阻抗等因素选择。2、关于输出端串联的电阻的作用, 串电阻是为了减小反射波,避免反射波叠加引起过冲。有时,不同批次的板子特性不一样,留个电阻位置便于调整板子状态到最佳。

2025-07-21 06:13:50 227

转载 KEIL debug无法进入main函数 或 debug卡死的原因总结

工程上,突然发现debug进不了main函数,debug直接进入SystemInit函数,单步发现循环走汇编指令(如图一),开始时推测是中断引起的,把关联的中断处理屏蔽后,发现还是有问题,费了九牛二虎之力才将问题解决,通过调查,发现能引起此问题的原因不少,简单总结如下,希望大家遇到此类问题能快速解决。在Debug页面,点击“Settings”按钮,打开"Contex-M Target Driver Setup"窗口页面,如下图所示的选项要勾选。这里,我遇到的就是因为没有对printf做重定向导致的。

2025-07-21 06:11:46 436

原创 Ubuntu startx --:1后出现输入正确密码,跳回登录界面无法正常登录的问题

再尝试执行startx --:1开启第二桌面系统时,出现原来桌面系统输入正确密码后会跳回到登录界面,无法正常登录,但是可以通过guest账户登录。原因是startx程序修改了.Xauthority拥有者,导致正常xserver启动的时候无法获取Xauthority信息,导致登录失败。3)通过:sudo chown username:username .Xauthority文件的所有者。1)通过ctrl+alt+F1(不同的系统可能需要通过F2-F6)进入命令行界面。2)cd ~ 进入到用户目录下。

2025-07-09 15:53:19 245

转载 通用 TUN/TAP 设备驱动

另一端的应用程序解压缩并解密接收到的数据,然后将数据包写入 TAP 设备,内核像处理来自真实物理设备的数据包一样处理该数据包。它也不是通过物理介质发送数据包,而是将数据包写入用户空间程序。应该是设备的名称,queues 是要创建的队列的数量,fds 用于存储并将创建的文件描述符(队列)返回给调用者。根据所选设备的类型,用户空间程序必须读取/写入 IP 数据包(使用 tun)或以太网帧(使用 tap)。fd 是我们要启用或禁用的文件描述符(队列),当 enable 为 true 时,我们启用它,否则禁用它。

2025-07-02 16:17:04 159

转载 云原生虚拟化:一文读懂网络虚拟化之 tun/tap 网络设备

从上图可以更直观的看出 tun/tap 设备和物理设备的区别:虽然它们的一端都是连着网络协议栈,但是物理网卡另一端连接的是物理网络,而 tun/tap 设备另一端连接的是一个应用层程序,这样协议栈发送给 tun/tap 的数据包就可以被这个应用程序读取到,此时这个应用程序可以对数据包进行一些自定义的修改(比如封装成 UDP),然后又通过网络协议栈发送出去——其实这就是目前大多数“代理”的工作原理。tun/tap 设备是操作系统内核中的虚拟网络设备,是用软件模拟的网络设备,提供与硬件网络设备完全相同的功能。

2025-07-02 16:16:04 248

转载 Ubuntu轻松安装TUN设备:开启隧道通信的简单指南

通过本文,您已经学会了如何在Ubuntu系统上轻松安装和配置TUN设备。TUN设备是网络隧道通信的基础,可以用于多种网络应用。希望这篇文章能够帮助您开启隧道通信之旅。Ubuntu轻松安装TUN设备:开启隧道通信的简单指南 - 云原生实践。

2025-07-02 16:11:45 304

转载 透视投影(Perspective Projection)变换推导

这个时候的多边形也许会被视锥体裁剪,但在这个不规则的体中进行裁剪并非那么容易的事情,所以经过图形学前辈们的精心分析,裁剪被安排到规则观察体(Canonical View Volume, CVV)中进行,CVV是一个正方体,x, y, z的范围都是[-1,1],多边形裁剪就是用这个规则体完成的。也就是说,D3D 中在近裁剪平面上的点投影之后的点会处于CVV的z=0平面上,而在远裁剪平面上的点投影之后的点会在CVV的z=1平面上。而另外在一些元素的细节上也存在着差异,这是由于D3D的CVV的z范围不同造成的。

2025-06-21 15:50:22 100

转载 有哪些值得推荐的c/c++开源框架与库

c/c++的项目也是各种各样的都有,微电子,物联网,桌面客户端,游戏,服务器开发等等。: 用于创建,读写和操作文件档案(例如zip和 tar)的库,它通过QIODevice的一系列子类,使用gzip格式,提供了透明的压缩和解压缩的数据。: 高效的跨语言IPC/RPC,用于C++,Java,Python,PHP,C#和其它多种语言中,最初由Facebook开发。对于C编程人员,可以考虑node.js。: TinyXML的一个全新的接口,使用了C++的许多许多优势,模板,异常和更好的异常处理。

2025-06-21 15:49:14 153

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除