1 方案简介
1.1 背景
一体化工具中包含多个不同设备间的通信,如上位机与嵌入端、服务器与嵌入端、嵌入端与众节点的通信,如果不同设备间通信采用不同的协议,会造成通信混乱和难以维护的结果,因此,标准通用型的协议就显得尤为重要。
标准通信协议是面向设备控制、设备编程和自动测试等场景设计的,服务于服务端、应用端、设备端之间的交互,具备通用性广、安全性高、可靠性强等特点。
1.2 约束
1.3 术语
应用端,
服务端,
终端设备,
节点设备,
中继通信,
桥接通信,
2 需求分析
2.1 通用需求
协议需要兼顾流控与非流控需求,像UART传输过程中,会出现数据丢失的问题,但是BT传输就很稳定
协议需要考虑转义
标准协议需要在保证高效传输的条件下,也需要考虑到不同应用场景的特点:
-
稳定需求,标准协议设计过程中需要考虑流控需求,避免因传输丢包或者应用繁忙而引发重要数据或事件的丢失。
-
可靠需求,标准协议设计过程中,需要考虑到有些通信数据传输通道的不可靠引入,如串口串口有可能传输出错,因此协议设计过程中,需要做数据校验和格式转义等冗余操作。
-
安全需求,考虑到重要数据在开放环境中传输,可能会被中间人非法采集,而造成不可预知的后果,因此协议设备过程中应该考虑到认证与加密的需求。
-
高效需求,协议设计过程中,应最大可能考虑到协议中有效载荷在通信帧中的占比,为此应该避免过多的冗余设计。
2.2 认证需求
认证是指通信双方按照自行约定的信息,进行握手确定的过程。考虑到通信的安全性,认证通常是不可避免的过程。这里对认证的需求做如下汇总:
-
连接认证,是指应用端、嵌入端、服务端三方之间发起连接过程中,所必须进行的认证交互。这里认证需要双方参与,避免一方认证而造成中间人利用协议漏洞破解。
-
设备认证,是指节点设备接入到终端设备,或者应用端间接访问节点设备,所需要进行的认证。
-
隐形认证,是指认证双方可以约定认证规则,然后以方案编号的形式体现在彼此交互过程中,这样就可大大提高安全性。
2.3 加密需求
加密是通信安全的必备保障,加密相关的需求汇总如下:
-
直连加密,是指直接通信的双方的加密。
-
中继加密,一般走设备包交互,有两层加密,首先是直连方的加密,其次是交互方的加密。直连方加密是对整个数据包进行加密,交互方的加密是对数据段进行加密。
-
普通加密,AES
-
高级加密,AES-CCM,SM3-CCM,加密需要流控,每一个包的加密都不相同。
-
密钥生成,密钥需要动态生成,
-
中间保护,密钥生成的一个中间保护过程,如可以引入第三方输入,来提高密钥的安全性。
2.4 扩展需求
标准协议执行过程中,还需要考虑到一些扩展应用场景,如:
-
多设备,是指终端下辖多个设备,其中设备的性质可能不同,比如板载驱动、板载设备、挂载设备、无线设备等。
-
多场景,协议制定过程中,需要考虑自动编程、自动测试、文件下载等多种不同的应用场景。
-
多角色,协议制定过程中,需要考虑多个角色同时登陆设备的场景。
-
多协议,需要考虑兼容目前市场上主流的一些协议,如TCP、UDP、HTTP等。
委托服务:设备可以委托服务器对客户端接入进行认证
3 协议设计
3.1 设计思想
为了满足应用需求,标准协议制定过程中,按照如下设计思想进行设计:
-
标准协议采用“数据帧->数据包->数据段”的形式,来满足兼容性和扩展性的需求。
-
数据帧具备便捷的裁剪性,即在传输通道有保证的场景,如BT传输、WiFi传输等,可以将帧的头标识、校验码和未标识去掉。
-
数据包具有较强的兼容性,即数据包有数据段组成,每个数据段都有对应的段编号,可以通过新增不同的段,来对协议进行拓展。
-
数据段具备丰富的扩展性,即数据段中通过消息编号来区分不同的应用场景,同时消息编号预留扩展空间,方便拓展功能。
-
-
标准协议采用转义表述方式,如一个完整的帧中,头标识和尾标识是唯一的,帧中其他数据中出现这类字段,就被转义,如帧头标识为AC,在帧数据中如果出现AC则被转义为DC 02。需要注意的是:
-
转义会在校验和加密之后进行。
-
在稳定的传输通道中,如BT传输,则不需要进行转义传输。
-
-
标准协议引入重置流程,即直接通信的双方,在加解密出错或者出现其他错误的时候,可以通过重置流程,快速重启。应用重启流程需要注意以下事项:
-
重启之后,缓存中的通信数据都将丢失,因此非必要不要启动重启流程。
-
-
标准协议支持流控传输,流控可以在通信过程中自行打开;在流控过程中,考虑到补报重传和归位重传两种情况:
-
补报重传,接收端只向发送重传当前包,其余包仍然按照原有顺序发送。
-
归位重传,接收端的发送序号需要归位到发送端制定的发送位置。
-
3.2 协议框架
下图所示为目前的整体协议框架,从图中可以看出:
-
协议的最大载体是协议帧,协议帧中包含协议包,数据包中包含协议段。
-
协议目前定义了控制包、指令包、中继包和数据包等协议包。
-
控制包可以再有重置段、信息段、认证端和安全端等。
3.3 协议格式
3.3.1 协议帧
协议帧是协议数据的载体。
如图所示,标准协议的通信帧的结构如下:
-
头标识,长度为1字节,固定为0xAC,用以指示帧的开始。
-
帧属性,长度为2字节,主要由包类型和包长度组成,其中包长度仅指的,转义之前,加密或压缩之后的长度。
-
数据体,长度由“帧属性”字段中的包长度决定,主体是协议包,目前有控制包、指令包、中继包和数据包。
-
校验码,长度为2字节,用来对帧中,除帧头标识、帧尾标识和校验码以外的数据,进行校验,来确保通信数据的可靠性。
-
尾标识,长度为1字节,固定为0xCA,用以指示帧的结束。
协议帧使用时需要注意以下事项:
-
协议帧传输支持流控传输与非流控传输,是否采用流控传输,需要针对具体的消息包而定。
-
协议帧传输支持转义传输,转义是将帧的头尾标识进行转义,即帧属性、数据体和校验码中,出现与头尾标识一样的数据时,将强制进行转义处理。
-
协议帧默认数据体的最小长度为96字节,最大长度为3512字节,最大长度根据实现端的资源和双方握手来决定。
-
对于UART、IIC、SPI等,传输过程中通道本身没有校验的场景,需要使用校验码确认和转义传输。
-
对于基于BT、WiFi等,本身具有完整性校验的单包传输的场景,传输过程中不需要使用校验码确认和转义传输,也不需要携带帧头标识和帧尾标识。(目前本协议方案默认全部采用校验码+转义传输)
-
中继包是对指令包的扩展,其沿用指令包的段,根据中继通道来传输数据。
-
一个协议帧中可以携带一个或多个协议包。
现有包类型有:
-
0x00 -- 控制包,对于交互的关键流程,如流控、认证等,进行控制的数据的载体。
-
0x01 -- 指令包,交互双方有效控制交互的载体。
-
0x02 -- 数据包
3.3.2 控制包
3.3.2.1 包结构
控制包用于对数据交互的关键且不保密的流程进行综合控制的数据的载体。控制包结构如下:
-
包属性,定义包的属性信息。其中,段长度字段是指段数据体的长度。
-
桥接通道,定义桥接连接时的通道编号,桥接通道的生成将在后续章节中介绍。
-
中继通道,定义中继数据传输时的通道编号,中继通道的生成将在后续章节中介绍。
-
段类型,定义段的类型编号,通常每个段都对应一个关键流程。
-
校验码,对包头信息进行校验,确保包头信息的正确性。
-
段数据,与段类型匹配的数据体,按照段类型进行封装。
目前系统已定义段类型如下:
-
0x01-重置段,用来控制通信双方重新连接的载体。
-
0x02-流控段,用来控制通信双方传输完整性的数据的载体。
-
0x03-连接段,用来控制通信双方建立连接的数据的载体。
3.3.2.2 重置段
重置段是用来控制通信双方第一次连接、或者连接过程中,出现异常后,进行重置恢复流程的消息集合。重置流程可以参考本文档中的“4.3.1 重置流程”,
3.3.2.3 流控段
3.3.2.4 连接段
3.3.3 指令包
3.3.3.1 包结构
指令包是用来携带通信双方指令数据的载体,指令包的结构如下:
-
包属性,用来定义包的属性元素的字段,如是否含有桥接通道、是否含有中继通道、以及当前发送序号和期待接收的序号。
-
桥接通道,定义桥接连接时的通道编号,桥接通道的生成将在后续章节中介绍。
-
中继通道,定义中继数据传输时的通道编号,中继通道的生成将在后续章节中介绍。
-
段类型,定义段的类型编号,通常每个段都对应一个关键流程。
-
校验码,对包头信息进行校验,确保包头信息的正确性。
-
段数据,与段类型匹配的数据体,按照段类型进行封装。
使用指令包的时候,需要注意以下流程:
-
一个指令包中可以发送多个协议段,但是所有的协议段都是指向同一个接收端。
-
协议包的加密是对段类型、校验和和段数据的加密。
3.3.3.2 控制段
指令包中的控制段,用于控制建立非直连连接,如桥接连接、中继连接和路由连接等,控制段是整个系统网络得以建立的关键。控制段中字段类型及说明如下:
-
段属性,用来指示控制段的属性信息,目前只有段长度的属性,指示段数据体的长度。
-
消息编码,用来指示消息属性以及段数据格式的唯一识别码。
-
校验码,对端头数据进行加和校验,确保数据信息的完整性和正确性。
-
段数据,消息类型对应的数据实体。
3.3.3.3 直通段
直控段,是直接控制段的简称,用于传输通信双方直接进行指令交互的控制数据,通常通信的双方都支持本协议。
3.3.3.4 路由段
间控段,是间接控制段的简称,用于传输通信双方间接进行指令交互的控制数据,通常通信中有一方支持该协议,而另一方不支持该协议。间控段可以用于设备编程。
3.3.4 数据包
3.3.4.1 包结构
数据包是用来传输数据的包的载体,数据包的结构如下:
-
数据属性,用来定义数据属性的字段,有数据体长度、序号长度、编号长度、中继通道位、桥接通道位等属性。
-
桥接通道,定义桥接连接时的通道编号,桥接通道的生成将在后续章节中介绍。
-
中继通道,定义中继数据传输时的通道编号,中继通道的生成将在后续章节中介绍。
-
数据编号,定义数据的编号,系统中有两种编号,即固定编号和动态编号。固定编号是由系统已定义的数据类型的编号;动态编号是在连接过程中,动态生成的编号。目前0x00~0x40为固定数据编号。
-
传输序号,用来定义传输需要长度的字段,传输序号通常是用来检测数据是否丢失的依据。
-
数据载荷,编号所对应的数据的有效载荷,是传输的实体。数据的格式以及是否压缩和加密由上层协议确定 。
目前固定的数据传输通道有:
-
0x01-实时数据,实时采集数据的传输通道,在实时数据通道打开后,实时数据会按照该通道进行上传。
-
0x02-调试数据,调试信息传输通道,在调试通道打开后,调试信息即可走该通道上传。
3.3.4.2 实时数据
实时数据通道是用来传输实时采集到的数据的通道。
实时数据一般采用LTV结构,其中L和T的定义都是采用高位扩展的方法,如:长度为64,表达为0x40;长度为0x80,表达为0x0180;长度为0xC101,表达为0x038281。
3.3.4.3 调试数据
4 流程设计
4.1 方案简介
4.1.1 方案描述
本协议方案是一种涵盖领域广、适配范围大、通信效率高的通信协议方案,协议方案的特点如下:
-
支持应用端直接连接终端设备;
-
支持应用端通过服务端连接终端设备;
-
支持应用端通过终端设备连接终端设备下的标准节点设备;
-
支持应用端通过终端设备连接中断设备下的非标准节点设备。
-
支持分流流控和合流流控,分流流控是指通信双方各自控制自己的流控,合流流控是指通过通信只由直连通信的双方进行维护。
-
支持分流加密和合流加密,分流加密是指通信双方各自控制自己的加密,合流加密是指通过通信只由直连通信的双方进行维护。
4.1.2 角色描述
协议方案中的角色按照角色定位分为:
-
应用端,client,应用端也称之为客户端,是指提供指令收发和展示的前台应用程序。
-
服务器,service,服务器是指提供数据保存和转发服务的后台应用程序。
-
终端设备,device,终端设备也称之为设备端,是指提供基础服务的本地终端。
-
节点设备,node,是指辅助终端设备,实现特定功能的设备。节点设备是对终端设备的扩展。
-
路由设备,route,是指负责直接与不支持标准协议的设备进行数据交互的标准节点设备。
协议方案中的角色按照连接类型分为:
-
服务端:通信双方中被动连接一方,称之为服务端。服务端是相对角色:一般应用端肯定是客户端;服务器肯定是服务端;设备端与服务器连接时,设备端是客户端;应用端与设备端连接时,设备端是服务端;终端设备与节点设备连接时,终端设备是服务端。
-
客户端:通信双方中,主动发起连接的一方,称之为客户端。一般认证加密流程是由服务端发起,当然客户端也可以请求发起认证加密流程。
4.1.3 通道描述
通道是通信双方进行数据通信的传输载体,为了适配各种场景,协议定义了如下通道:
-
基础通道:基础通道是指通信双方需要直接建立的第三方通道,如应用端与服务器之间的TCP通道、应用端与设备端的UART通道等。
-
直连通道:直连通道是协议虚拟的通道,泛指通过基础通道建立连接的传输通道,也就是通信双方直接交互的通道。
-
桥接通道:桥接通道是通信双方需要通过支持标准协议的第三方提供桥接服务进行通信的通道,如应用端与设备端,通过服务器进行桥接的连接。桥接通道一般是由第三方(如服务器)进行维护,并基于被访问端(如设备端)建立一张表。
-
中继通道:中继通道是指应用端通过终端设备,访问节点设备的通信通道。中继通道一般是在节点设备与终端设备建立时生成,中继通道一般是由终端设备维护,客户端需要建立一张终端设备与中继通道的表。
-
路由通道:路由通道是指终端设备或标准节点设备与非标准节点设备进行通信的通道,路由通道由非标准节点设备的父设备维护,由父设备在启动时自动生成。非标准设备的认证也是由父设备端进行配置和发起。
4.3 控制流程
4.3.1 重置流程
4.3.1.1 流程简介
重置是对通信双方的连接进行重置,清楚过程参数的流程。重置具有如下特点:
-
重置数据走的是“协议帧->控制包->重置段”。
-
重置一般用于设备之间初步建立连接之后,立即进行参数对齐操作。
-
如果连接过程中,有一方出错,就可以发起重置,在不断开基础连接的情况下,将传输通道进行归位。
-
流控模式下,重置双方需要在重置请求/响应阶段,将彼此的确认接收序号发送给对方,双方在再次连接和加密完成之后,将继续按照原有序号进行数据的发送与接收。(若序号出错,则丢掉所有已发送的数据,并将序号进行归位)
-
非流控模式,重置后,则需要将所有已发送完成的数据丢掉。
-
如果在加密完成之后,进行重置流程,则重置完成之后,可跳过认证阶段,直接开启加密。(若加密出错,则重新进行重置、认证、加密)
-
重置请求一般是由服务端发起,如果客户端想重置通道,则客户端发送一个空的通道重置请求给服务端,从而触发服务端开启重置流程。
4.3.1.2 流程示意
4.3.1.3 协议详解
通道重置请求/响应:
通道确认请求/响应:
4.3.2 流控流程
4.3.2.1 流程简介
流控流程是为了保证数据包的完整性,防止丢包而设计的控制流程。流程流程具有以下特点:
-
流控数据走的是“协议帧->控制包->流控段”
-
数据的发送方的缓存中有数据时,则应启动定时(刷新时间)确认流程,即将Poll位置起。
-
数据的发送方一旦确认数据已被接收,则可以丢掉该数据。
-
数据的接收方一旦检测到数据丢失,则需要将R位置起,请求对方重传。(重传时,需要定时发送,避免频繁发送引发通信异常)
-
数据的接收方对于接收到的重复数据,直接丢弃。
-
当R位和PR位都置起时,数据的发送方只需要发送当前丢掉的数据包。
-
当R位置起,PR位未置起时,数据的发送方需要将发送序号重置到对方要求重传的包的序号。
-
当R位置起时,数据发送方检测到对方期待接收的序号有问题时,则对通道进行重置,并丢掉已发送的所有数据。(保留未发送的数据)
4.3.2.2 流程示意
如下图所示,与流控相关的流程主要有三个,即发送方发起包接收确认流程、接收方检测到丢包并请求归位重传流程、接收方检测到丢包并请求补包重传示意。
发送方发起包接收确认流程:
接收方检测到丢包,请求归位重传示意:
接收方检测到丢包,请求补包重传示意:
4.3.2.3 协议详解
流控流程只走流控段,流控段的说明可以参考第三章节。
4.3.3 配对流程
4.3.3.1 流程简介
4.3.3.2 流程示意
4.3.3.3 协议详解
4.3.4 认证流程
4.3.4.1 流程简介
4.3.4.2 流程示意
4.3.4.3 协议详解
4.3.5 加密流程
4.3.5.1 流程简介
-
客户端和服务端在加密完成之前,都不应该向对方发送有效数据
4.3.5.2 流程示意
4.3.5.3 协议详解
通信加密请求:
通信加密响应:
开始加密请求:
开始加密响应:
4.2 连接流程
4.2.1 直连通信
4.2.1.1 流程简介
直连通信是指通信的两方直接通过基础通道进行连接和交互的通信,在本协议方案中,直连通信的例子有:
-
应用端与服务器的连接(通过TCP、管道等方式)。
-
设备端与服务器的连接(通过TCP、UART等方式)。
-
应用端与设备端的连接(通过TCP、UART等方式)。
-
终端设备与节点设备的连接(通过UART、SPI、IIC、IIS等方式)。
-
直连通信的连接建立和连接断开走“协议帧->控制包->连接段”。
-
直连通信的指令交互走“协议帧->指令包->直通段”。
-
直连通信的数据交互走“协议帧->数据包”。
4.2.1.2 连接建立
直连通信的连接建立流程如下:
-
基础通道建立:是指底层通信链路建立,如TCP连接、USB连接等,建立之后(UART则可以跳过基础通道的连接阶段),并经过重置达到握手的流程。
-
连接建立阶段:是指通信双方发送连接建立请求和响应的指令,来达到连接真实建立的流程。
-
执行认证流程:是指通信双方依据连接建立请求消息中的字段,进行相互认证的阶段。
-
执行加密流程:是指通信双方依据连接建立请求消息中的字段,进行密钥交换的阶段。
4.2.1.3 连接断开
直接连接的双方,断开连接有两种场景:客户端发送连接断开请求来断开链路;服务端发送断开连接指示来断开链路。注意,如果通信双方的基础通路断开,则视为连接断开,基础通路接通后,需要重新连接。
4.2.1.4 指令交互
4.2.1.5 协议详解
连接建立请求:
连接建立响应:
连接断开请求:
连接断开响应:
连接断开指示:
4.2.2 桥接通信
4.2.2.1 流程简介
桥接通信是指通信双方需要通过支持标准协议的第三方提供桥接服务进行的通信,如应用端与设备端,通过服务器进行桥接的连接。桥接通信有以下特点:
-
桥接通信的指令交互走“协议帧->指令包->直通段”。
-
桥接通信的数据交互走“协议帧->数据段”。
-
桥接通信的双方有一个唯一识别的桥接通道,该通道由第三方生成。第三方首先面向被连接端寻找可用的通道,并与发起端进行协商,如果发起端检测通道没有被占用,则桥接通道确定。
-
桥接通道一般是由第三方(如服务器)进行维护,并基于被访问端(如设备端)建立一张表。
-
桥接通道的设计可以满足多个应用端与多个设备端的映射,如桥接端E、应用端A/B、设备端C/D,A和B都可以同时访问C和D。
-
服务端需要维护一张桥接关系表:设备端编号+通道编号+应用端编号
-
应用端需要维护一张桥接关系表:设备端编号+通道编号
-
设备端需要只需要记录桥接编号即可。
-
桥接连接完成后,通信双方利用桥接通道,开启双方间的直连通信流程。
-
桥接通信的连接建立和连接断开走“协议帧->指令包->控制段”。
4.2.2.2 连接建立
以应用端和设备端的桥接连接为例,桥接连接需要经历以下三个阶段:
-
三方连接建立:是指应用端和设备端分别与服务端进行完整的连接建立阶段(参考直连通信)。
-
桥接通道协商:是指应用端、服务端、设备端,通过服务端来确认桥接通道,并发起桥接连接请求的阶段。桥接通道是服务端检测“设备编号-桥接通道”表,寻找可用通道,或者根据应用端提供的参考桥接通道,作为协商通道,然后分别与应用端、设备端进行协商确定。
-
连接建立阶段:是指应用端与设备端的连接过程。连接建立阶段可以参考直连通信,由应用端作为连接的客户端,设备端作为连接的服务端,借助桥接通道,经由服务器转发,进行连接。
4.2.2.3 连接断开
正常断开
异常断开
4.2.2.4 指令交互
4.2.2.5 协议详解
桥接连接建立请求:
桥接连接建立响应:
桥接通道确认请求:
桥接通道确认响应:
桥接连接断开请求:
桥接连接断开响应:
桥接连接断开指示:
4.2.3 中继通信
4.2.3.1 流程简介
中继通信是指应用端通过终端设备,来访问和控制终端设备的板载设备或外挂设备的通信。中继通信有以下特点:
-
中继通信的指令交互走“协议帧->指令包->直通段”。
-
中继通信的数据交互走“协议帧->数据段”。
-
中继通信的双方均支持标准协议,即应用端、终端设备和节点设备都支持标准协议,并采用标准协议进行通信。
-
与应用端直接连接的设备我们称之为终端设备,终端设备上扩展的其他设备都称之为节点设备。后续,所讲的设备端均指终端设备。
-
应用端与终端设备的通信不需要进行中继通信,应用端与标准节点设备的通信需要进行中继。
-
应用端与非标准节点设备间的通信,需要采用路由通信。(将在后续章节讲解)
-
中继通信的双方有一个唯一的中继通道,该通道由终端设备生成,并由终端设备以及终端设备下的节点设备维护。一般是在节点设备接入终端设备时,由终端设备自动生成。
-
中继通道建立后,中继的双方即可发起通信交互,并根据需要进行双方间的直连通信流程,建立连接(也可直接开启通信)。
-
终端设备将维护一张“中继通道-应用编号”的表格,一个中继通道可以对应多个应用编号,也就是一个节点设备可以允许多个应用端访问。
-
中继通信也可用于跨设备的节点设备间的通信。但是通信的双方必须位于同一个终端设备网络。
-
中继通信的连接建立和连接断开走“协议帧->指令包->控制段”。
4.2.3.2 连接建立
以应用端和节点设备的中继连接为例,中继连接需要经历以下三个阶段:
-
三方连接建立:是指应用端和设备端、节点设备与终端设备分别进行完整的连接建立阶段(参考直连通信)。
-
中继连接阶段:是指应用端与终端设备协商、终端设备与节点设备协商,建立中继连接通道的过程。该阶段过程中,如果节点设备有委托终端设备进行认证确认,则终端设备还会进行一次中继认证过程。
-
连接建立阶段:是指应用端与节点设备的连接过程。连接建立阶段可以参考直连通信,由应用端作为连接的客户端,节点设备作为连接的服务端,借助中继通道,经由终端设备转发,进行连接。
4.2.3.3 连接断开
正常断开
异常断开
4.2.3.4 指令交互
4.2.3.5 协议详解
中继连接建立请求/响应:
中继连接认证请求/响应:
中继连接断开请求/响应:
中继断开认证请求/响应:
中继连接断开指示:
4.2.4 路由通信
4.2.4.1 流程简介
路由通信是指支持标准协议的一方与不支持标准协议的一方,通过支持标准协议的第三方(路由设备)进行的通信,路由通信需要具备以下特点:
-
路由通信的指令交互走“协议帧->指令包->路由段”。
-
路由通信的数据交互走“协议帧->数据段”。路由的数据通信的通道是由路由设备与发起方决定。
-
路由通信建立需要支持标准协议的第三方(如终端设备)的参与才能完成。
-
路由通信也可用于跨设备的节点设备间的通信。但是通信的双方必须位于同一个终端设备网络。
-
除终端设备下的直接节点外,应用端通过路由访问节点设备时,还需要携带待访问节点设备的父节点的中继通道,经由父节点进行路由转发。
-
路由通信根据节点能力,可以分为单发路由和并发路由:单发路由是指该设备同一时间,只能被一个其他设备访问;并发路由是指该设备同一时间,可以被多个其他设备访问。
-
路由通信需要通过路由通道进行交互,路由通道一般有待访问设备的父设备生成并维护,在父设备中唯一。
-
路由通信的连接建立和连接断开走“协议帧->指令包->控制段”。
4.2.4.2 连接建立
以支持标准协议的标准方(发起方)、支持标准协议的第三方和不支持标准协议的非标方(被访问方)的通信为例,路由通信的建立有两个阶段:
-
三方连接建立:是指标准方与第三方建立连接(参考直连通信),以及第三方与非标方根据协议确定连接(可以仅指基础通道建立)。
-
路由连接阶段:是指标准方与第三方进行路由连接协商的过程。路由连接阶段,标准方需要根据需要与第三方进行路由认证。
4.2.4.3 连接断开
4.2.4.4 指令交互
4.2.4.5 协议详解
路由连接建立请求:
路由连接建立响应:
路由连接认证请求:
路由连接认证响应:
路由连接断开请求:
路由连接断开响应:
路由连接断开指示:
路由断开认证请求:
路由断开认证响应:
4.4 数传流程
4.4.1 传输设计
通道设计:固定通道、动态通道
4.4.2 固定传输
4.4.2.1 通道简介
固定通道的传输,如实时数据、调试数据
4.4.2.2 通道打开
4.4.2.3 通道关闭
4.2.2.4 协议详解
4.4.3 动态传输
4.4.3.1 通道简介
浮动通道的传输:如文件传输
4.4.3.2 通道建立
4.4.3.3 通道断开
4.2.3.4 协议详解
数传通道打开请求/响应:
数传通道认证请求/响应:
数传通道关闭请求/响应:
数传通道关闭指示: