利索能及
我要发布
收藏
专利号: 2023106568120
申请人: 绍兴数亿科技有限公司
专利类型:发明专利
专利状态:已下证
更新日期:2026-08-19
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于改进KCP的OPC UA高效通信的实现方法,其特征在于替代 OPC UA 协议中的 TCP 协议,OPC UA服务器在传输层之间的通讯采用UDP通信协议,并在UDP的基础上增加一个改进的KCP协议;

所述改进的KCP协议同时对传统的KCP传输通信从四个方面进行改进,分别是重新改进KCP协议数据段头部的设计、采用随机初始化的序列号保证通信安全性、记录时间戳防止序列号回绕、使用捎带确认报文减少数据的传输量。

2.根据权利要求1所述的一种基于改进KCP的OPC UA高效通信的实现方法,其特征在于包括如下步骤:

步骤(1) 根据配置信息初始化OPC UA服务器,并尝试建立OPC UA客户端和改进的KCP之间的连接;

OPC UA客户端将 IP 地址、端口号通过 FNV 哈希算法映射为三十二位无符号整数来充当会话id;

KCP发送创建连接请求的消息至 OPC UA 服务器监听端口;

OPC UA 服务器的监听端口收到连接请求后,为该OPC UA客户端创建新的通信端口,并使用该通信端口返回确认消息;

步骤(2)OPC UA 客户端在接收来自 OPC UA 客户端通信端口的确认消息后,即表明连接创建成功;OPC UA 客户端发送一个Hello 报文,OPC UA 服务器一旦接收 Hello 报文,就返回一个Acknowledge消息给 OPC UA 客户端;

OPC UA客户端和服务器之间若能通过Hello报文和Acknowledge消息达成一致,则视为连接成功,否则为连接失败;

步骤(3)OPC UA客户端获得来自OPC UA服务器发送的Acknowledge消息后,将OPC UA客户端的安全策略、安全模式、数字证书和随机数的信息作为Open Secure Channel 消息发送;OPC UA 服务器验证客户端的数字证书和安全策略是否符合要求,若通过验证,则返回一个 Open Secure Channel Response 消息;OPC UA 客户端和 OPC UA 服务器通过随机数生成一个对称密钥进行加密通信;

步骤(4)在打开安全通道之后,OPC UA 客户端将向 OPC UA 服务器发送一个 Create Session Request 消息,OPC UA 服务器接收到 Create Session Request 消息后,对该消息中的随机数Nonce进行签名,若通过验证,则返回 Create Session Response 消息;

步骤(5)OPC UA 客户端收到服务器的返回的Create Session Response 消息响应后,使用认证令牌生成一个签名,并向服务器发送一个 Activate Session Request 消息,该消息包含客户端的签名和用户身份标识的信息;OPC UA 服务器验证客户端的签名和用户身份标识是否有效,若通过验证,则向客户端发送一个 Activate Session Response 消息,并为客户端分配一组可用的订阅 ID 和节点 ID 资源;之后 OPC UA 客户端和服务器之间能够通过该会话消息进行数据读写、订阅发布的操作。

3.根据权利要求2所述的一种基于改进KCP的OPC UA高效通信的实现方法,其特征在于步骤(2)中的Hello 报文包含最大消息大小、数据块大小和数量的信息。

4.根据权利要求2所述的一种基于改进KCP的OPC UA高效通信的实现方法,其特征在于步骤(2)中的Acknowledge消息包含服务器能够处理的最大消息大小、数据块大小和数量的信息,以及服务器支持的协议版本号。

5.根据权利要求3或4所述的一种基于改进KCP的OPC UA高效通信的实现方法,其特征在于如果OPC UA服务器或OPC UA客户端多次接收到对应的数据报文,将报错并关闭 KCP 连接;若OPC UA服务器没有收到 Hello报文,则OPC UA服务器会在一个自定义的时间间隔后自动断开KCP连接。

6.根据权利要求5所述的一种基于改进KCP的OPC UA高效通信的实现方法,其特征在于步骤(4)中Create Session Request 消息包含客户端的应用程序名称、URI、会话名称、会话超时时间、最大请求消息大小以及一个仅能使用一次的随机数Nonce的信息。

7.根据权利要求2所述的一种基于改进KCP的OPC UA高效通信的实现方法,其特征在于改进后的 KCP具体实现如下:改进后的 KCP 规定了每个连接都要随机产生一个初始序列号,改进后的KCP序列号采用动态变化的方案,包括时间、端口号、IP地址作为初始化的输入,如下公式1所示,  (1)

其中,当前时间戳值time除以4表示序列号每隔四微秒增加1;由客户端的IP地址和端口号通过FNV哈希算法计算得到;

在改进KCP通信时,接收方将保存当前接收窗口起始数据包的时间戳,记作rts;接收方将比较刚接收到的数据包中的时间戳值time与 rts 值的大小;若time比 rts 小,说明该数据包已过期,接收方将舍弃该数据包。

8.根据权利要求7所述的一种基于改进KCP的OPC UA高效通信的实现方法,其特征在于改进的KCP增加了一种新的报文类型,即数据与确认报文;在 KCP 发送确认应答报文时,如果当前存在需要发送给对方的数据报文,则将这确认应答报文与数据报文合并为数据与确认报文。

9.根据权利要求8所述的一种基于改进KCP的OPC UA高效通信的实现方法,其特征在于在报文包头的cmd分片中设计一个序列,用于表示该报文是数据与确认报文,此时报文中的数据部分从正常数据部分的24字节后开始。