本发明涉及通信技术领域,特别涉及一种基于udp通信的rssp-ii通信方法。
背景技术:
rssp-ii安全通信协议是一种铁路信号设备间通信采用的协议,其安全完整性等级可达sil4。目前,已有的rssp-ii协议都是基于tcp通信,但是某些铁路信号设备间是采用upd方式进行通信的,基于tcp方式的rssp-ii协议无法应用于这些设备之间。
技术实现要素:
本发明的目的在于提供一种基于udp通信的rssp-ii通信方法,以提高rssp-ii协议的通用性。
为实现以上目的,本发明采用的技术方案为:提供一种基于udp通信的rssp-ii通信方法,包括:
对udp通信过程中的事件进行编号,并通过对编号识别模拟udp通信过程中的事件;
利用所述模拟的事件触发udp状态机的转换,得到udp状态机当前的转换状态;
rssp-ii协议栈通过调用网络适配层提供的相应接口函数获取udp状态机的转换状态,并对udp状态机进行管理。
其中,udp状态机的转换状态包括:连接断开、等待连接建立、连接已建立以及发送fin报文。
其中,模拟udp通信过程中的事件包括:发起连接、连接建立成功、断开连接、收到数据、收到fin报文、收到fin-ack报文以及发送fin报文超时。
其中,所述的利用所述模拟的事件触发udp状态机的转换,得到udp状态机当前的转换状态,具体包括:
在识别出udp通信过程中模拟事件为发起连接时,触发udp状态机的转换状态从连接断开状态转换为等待连接状态;
在识别出udp通信过程中模拟事件为连接建立成功时,触发udp状态机的转换状态从等待连接建立状态转换为连接已建立状态;
在识别出udp通信过程中模拟事件为断开连接时,触发udp状态机的转换状态从连接已建立状态转换为发送fin报文状态;
在识别出udp通信过程中模拟事件为收到fin报文或者收到fin-ack报文或者发送fin报文超时时,触发udp状态机的转换状态从发送fin报文状态转换为连接断开状态;
在识别出udp通信过程中模拟事件为断开连接时,触发udp状态机的状态从等待连接建立状态转换为连接断开状态。
与现有技术相比,本发明存在以下技术效果:本发明中通过模拟udp通信过程中的事件,通过事件触发udp状态转换机的状态转换,实现对udp的连接状态进行管理的目的。与传统的基于tcp的rssp-ii协议相比,本发明rssp-ii协议栈将udp视为与tcp等同的连接,使rssp-ii协议既适用于采用tcp方式通信的设备,也适用于采用udp方式通信的设备,极大的提高了rssp-ii协议的通用性。
附图说明
下面结合附图,对本发明的具体实施方式进行详细描述:
图1是本发明中一种基于udp通信的rssp-ii通信方法的流程示意图;
图2是本发明中udp状态机的状态转换示意图。
具体实施方式
为了更进一步说明本发明的特征,请参阅以下有关本发明的详细说明与附图。所附图仅供参考与说明之用,并非用来对本发明的保护范围加以限制。
如图1所示,本实施例公开了一种基于udp通信的rssp-ii通信方法,包括如下步骤:
s1、对udp通信过程中的事件进行编号,并通过对编号识别模拟udp通信过程中的事件;
s2、利用所述模拟的事件触发udp状态机的转换,得到udp状态机当前的转换状态;
s3、rssp-ii协议栈通过调用网络适配层提供的相应接口函数获取udp状态机的转换状态,并对udp状态机进行管理。
需要说明的是,本实施例中的网络适配层函数的作用是将udp的状态返回至rssp-ii协议栈。
进一步地,udp状态机的转换状态包括:连接断开、等待连接建立、连接已建立以及发送fin报文。
进一步地,所述模拟udp通信过程中的事件包括:发起连接、连接建立成功、断开连接、收到数据、收到fin报文、收到fin-ack报文以及发送fin报文超时。
具体地,在实际应用中,由于udp的通信方式实际上并不建立连接,因此本实施例通过对每个模拟事件进行编号,在状态管理过程中,在识别出事件编号时,即可触发udp相应状态的转换。
需要说明的是,发起连接时间指的是:rssp-ii协议栈调用网络适配层函数,想对方发送申请建立连接的数据。
连接建立成功事件指的是:调用rssp-ii协议栈提供的接口函数,告知协议栈连接已建立。
断开连接事件指的是:定义名为fin的报文,需要断开连接时,发送fin报文,通知对方连接断开。fin报文的作用是,在通信双方的某一方需要断开连接时,向对方发送fin报文以通知对方连接断开。
收到数据事件指的是:向rssp-ii协议栈报告接收到的数据。
收到fin报文事件指的是:接收到对方的fin报文,将本方连接状态设为断开。同时,定义名为fin-ack的报文,向对方回复fin-ack报文。
收到fin-ack报文事件指的是:将本方连接状态设为断开。
发送fin报文超时事件指的是:发送fin报文后,未在规定时间内收到fin-ack报文。
需要说明的是,在每次发送udp数据时,应记录发送时间并将数据保存到缓存区。协议栈检查规定时间内是否有数据发送,如超时仍无数据发送,则从缓存区中取出数据并重新发送。
需要说明的是,本实施例中设置一个计数器,发送fin报文后计数器开始计时,收到fin-ack报文时停止计时。如果检查到计数器超过规定时间,则说明未在规定时间内收到fin-ack报文。
进一步地,如图2所示,步骤s2,具体包括:
在识别出udp通信过程中模拟事件为发起连接时,触发udp状态机的转换状态从连接断开状态转换为等待连接状态;
在识别出udp通信过程中模拟事件为连接建立成功时,触发udp状态机的转换状态从等待连接建立状态转换为连接已建立状态;
在识别出udp通信过程中模拟事件为断开连接时,触发udp状态机的转换状态从连接已建立状态转换为发送fin报文状态;
在识别出udp通信过程中模拟事件为收到fin报文或者收到fin-ack报文或者发送fin报文超时时,触发udp状态机的转换状态从发送fin报文状态转换为连接断开状态;
在识别出udp通信过程中模拟事件为断开连接时,触发udp状态机的状态从等待连接建立状态转换为连接断开状态。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。