工业控制协议解析之-CA协议
某研究机构在某领域内的科研系统为工控系统,相关设备进行通信与控制涉及CA与PVA两种工控协议,用户需在工作过程中对相关系统进行安全审计,但目前市面工控安全审计设备普遍不支持上述两种工控协议,因此需进行相关的定制开发。
本文结合项目应用,将重点介绍和分析CA协议,为从事工业互联网安全的同事提供参考,为产品功能的拓展与完善提供新思路。
1
什么是CA协议?
在介绍CA协议之前,需要先引入EPICS(Experimental Physics and Industrial Control System,实验物理及工业控制系统), 上世纪90年代初由美国洛斯阿拉莫斯国家实验室和阿贡国家实验室等联合开发的大型控制软件系统,在EPICS中,设备的每个模拟/数字的输入/输出量称为一个过程变量(Process Variable)。一个过程变量在数据库中对应为一个记录(record)。
EPICS系统依据客户-服务模型,在TCP/IP协议之上建立了称为Channel Access通道访问机制,这就是我们说的CA协议。CA是EPICS系统的最基本机制,它所能提供的服务包括动态通道定位,数据读写,访问监控,连接监控和自动重接等,CA客户端可以根据通道名直接访问系统中的任一通道,通道具有回调(callback)机制,根据客户的预先指定发送监控所得的信息,这一机制无须依靠巡回检测来监控系统,极大减轻了网络的负荷。。
CA协议是描述客户端与服务器之间如何传输数据的协议。由于多人协作的原因,可能有很多个CA客户端;且需要控制和记录的仪器也有很多,所以也可能有多个CA服务器。因此,“网络+CA协议”解决了在多个CA客户端和CA服务器之间进行数据传输时,两个需要通讯的终端之间的联系问题。
![](/assets/blank.gif)
图1. EPICS系统结构
2
如何理解CA协议?
要更好的理解CA协议,需要明确CA协议的工作流程,直观上讲,CA协议的工作流程主要包含两个部分,CA协议的整个工作流程如图2所示。
Step1:客户端通过UDP无连接协议寻找目标服务器,在这个过程中,客户端具有一个目标服务器地址列表(这个地址列表可以是EPICS初始化时默认创建的连接到子网的地址列表,也可以是自定义的地址列表)。如果地址列表中存在目标服务器,则该服务器会返回一个包含服务器IP地址和端口号的响应;如果不存在,则返回异常消息。
Step2:遵循TCP面向连接的协议,建立一对一长连接。该过程是在Step1返回目标IP和端口号的基础上进行的。简单来说,就是找到目标地址和端口后,客户端与该服务器建立连接,然后传输数据。
![](/assets/blank.gif)
图2 CA协议工作流程示意图
举个形象的栗子,可以更加明晰的理解CA协议,比如部门的领导(客户端)和员工(服务端)之间的会话;领导建了个微信群,首先在群里发消息“谁是张三2号”,理解为CA客户端广播搜索请求(UDP);而张三2号收到该消息后主动回复,部门内其余人则不做回复,这一动作相当于CA服务器响应(UDP);接下来,部门领导拉起私人会话,视为CA客户端和服务端建立TCP长连接进行数据传输。
![](/assets/blank.gif)
图3 CA协议生活话场景举例
3
CA协议Message分析
在标准CA协议中,Message由标准消息头和有效载荷组成,标准头结构如表1所示;由表1可知,CA协议的消息头结构固定,都由指令id开始,携带固定参数,标准CA协议的头结构大小为16byte;因此在对CA协议进行分析和解析时,可以从协议的头结构入手,依次解析出指令id,载荷大小,数据类型,进而解析出载荷内容;另外,在通用协议版本中,一般默认CA服务端的端口号为5064,CA中继转发器端口为5065。
表1 CA协议消息头结构
![](/assets/blank.gif)
而在现实中,对CA协议进行解析时,需要重点关注消息头结构中的CA指令id,指令id决定了整个消息的结构和形式。在标准CA协议中,定义了28条指令(包含已停止使用的指令);在本次项目中,主要关注CA_PROTO_VERSION, CA_PROTO_SEARCH,CA_PROTO_RSRV_IS_UP,CA_PROTO_EVENT_ADD,CA_PROTO_READ,CA_PROTO_WRITE,CA_PROTO_CREATE_CHAN,CA_PROTO_CLIENT_NAME,CA_PROTO_HOST_NAME,CA_PROTO_ACCESS_RIGHTS等12条指令。
4
协议解析模块设计与实现
结合部门现有审计产品的功能以及客户的定制化需求,开展对于CA协议的解析;主要涉及内容包括:数据包中CA协议部分的完整提取;解析的协议内容进行策略匹配,自学习,日志组装等函数的设计与实现。经过代码编写,测试,修改等环节,已实现对CA协议的内容解析,策略匹配,日志组装,事件告警等功能,CA数据包测试结果告警日志截图如图4所示。
![](/assets/blank.gif)
图4 测试数据包告警日志截图
5
小结
以上,从CA协议的技术背景,实现原理和工作流程,消息结构,协议解析切入点等几个方面,对项目实践中所涉及到的CA协议进行了简单介绍。但由于篇幅限制,并未涉及关于CA协议的具体指令以及数据结构的详细介绍,请感兴趣的读者移步https://epics.anl.gov/base/R3-16/1-docs/CAproto进行查阅。后续工作学习中,将从更深层次对CA协议进一步研究和应用,进而提升产品的适应场景与竞争力。
工业控制协议解析之-CA协议相关推荐
- 【计算机网络】数据链路层 : CSMA/CA 协议 ( 载波监听多点接入 / 碰撞避免 协议 | CSMA/CA 协议工作原理 | CSMA/CD 协议 与 CSMA/CA 协议对比 )
文章目录 一. CSMA/CA 协议 ( 非重点.仅作了解 ) 二.CSMA/CA 协议工作原理 三. CSMA/CD 协议 不能用于 无限局域网 的原因 四. CSMA/CD 协议 与 CSMA/C ...
- 温湿度模块 DHT11/12 芯片 协议解析 - 简单易懂协议详解
1.产品概述 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器.它应用专用的数字模块采集技术和温湿度传感技术,确保 产品具有极高的可靠性与卓越的长期稳定性.传感器包括一个电容式 ...
- DLT645协议解析(二)---07协议数据帧结构解析
(二)DLT645-2007协议数据帧结构解析 书接上回,下图展示的是DLT645-2007协议读取电表电量的交互过程,数据请求帧里面请求的数据类型是当前正向有功电量. PC请求帧: 6 ...
- OPC协议解析-关于OPC协议的几个问题
1 什么是OPC协议? 为了便于自动化行业不同厂家的设备和应用程序能相互交换数据,定义了一个统一的接口函数,就是OPC协议规范.有了OPC就可以使用统一的方式去访问不同设备厂商的产品数据. OP ...
- mysql协议解析器_mysql协议解析
目录 目录 1 交互过程 1.1 握手认证阶段 1.2 命令执行阶段 2 基本类型 2.1 整型值 2.2 字符串(以NULL结尾)(Null-Terminated String) 2.3 二进制数据 ...
- Modbus TCP协议解析
在之前的文章中,我们介绍了Modbus RTU协议的内容和实现方法.最近在进行网络通讯的时候又用到了Modbus TCP协议,因此这里把自己对Modbus TCP的了解总结一下. 文章目录 一.Mod ...
- Pycharm实现645协议解析器(一)
目录 Pycharm实现645协议解析器 645协议帧结构 Pycharm配置基于Qt5的图形开发环境 Pycharm实现645协议解析器 目前智能电网的645通信协议主要两个版本DLT645-97和 ...
- UDS应用层协议解析(史上最全)
UDS应用层协议解析 UDS应用层协议解读(下) 诊断服务分类 基础服务类 0x10 诊断会话模式 任何会话模式切换至默认会话模式时,非默认会话模式下设置的状态需要reset(28服务.85服务设置的 ...
- Oracle的TNS协议解析
协议解析目录 TNS协议基础介绍 Oracle抓包分析 TNS协议基础介绍 TNS协议主要用于Oracle数据库的通讯使用,TNS可以基于多种协议进行传输,本文将分析基于TCP/IP的TNS. 报文头 ...
最新文章
- js如何写html中的内容,javascript怎样获取某个标签的内容?
- asp.net 页面static变量问题
- Ubuntu1804和2004高版本,右键无法创建TXT文档的解决办法【未完待续】
- datagrid vue_类似 easyui 中 datagrid 使用习惯的 element-ui 数据表格组件(el-datagrid)...
- C#锐利体验-第八讲 索引器与操作符重载(转)
- 软件测试之黑盒测试-边界值分析法(理论白话学习/期中期末备考)
- unique离散化用法
- 计算机基础:程序、进程、线程
- 盘点大数据分析AI工具的常用算法
- 投影幕布尺寸计算器_投影幕尺寸是怎么算的
- 励志电影排行榜2011
- Rust - 常用的三方库集合
- 巨杉数据库全新认证机制来袭!首期考试时间公布
- OpenJudge百炼-1183-反正切函数的应用-C语言-简单计算
- 进制的运算(笔记借鉴编程达人)
- 达人评测 红米K30s至尊纪念版和iQOO Neo5活力版
- 【HTML粒子流特效】(效果 + 代码)
- vue获取焦点、失去焦点
- 网络篇 网络设备的基本配置09
- and true和if都是python语言的保留字_python自学 第三章 python语言基础之保留字、标识符与内置函数...