1.本技术涉及通信技术领域,具体涉及一种配置传输数据包最大长度的方法及设备。
背景技术:2.智能家居被认为是新的“生态”环境的典范,用户通过网络和传输协议对家电设备、家用电器、车辆等进行管理及远程控制,其数据传输的安全性显得尤为重要。无线wifi模组在接入云服务端或是空中下载(over the air,ota)服务端时,增加一层加密协议是保护数据有效方式。使用加密协议连接云服务端或ota服务端时,目前wifi模组和服务端的握手都会占用32kb内存(输入/输出数据量),此时由wifi模组向服务端或由服务端向wifi模组传输数据的最大数据量(最大片段长度)为16kb,使得wifi模组连接云服务端时,由于内存不足导致握手失败。若将最大片段长度的值直接减小固定值,wifi模组在接入云端后,若接入oat服务端,执行ota固件升级流程,此时在wifi模组接入ota服务端时,wifi模组向ota服务端或由ota服务端向wifi模组传输数据的最大数据量(最大片段长度)为减小后的最大片段长度,则会出现最大片段的值过小造成接收不到完整数据包,导致升级失败。
技术实现要素:3.为了解决若将最大片段长度的值直接减小固定值,wifi模组在接入云端后,在接入wifi模组接入ota服务端时,wifi模组向ota服务端或由ota服务端向wifi模组传输数据的最大数据量(最大片段长度)为减小后的最大片段长度,则会出现最大片段的值过小造成接收不到完整数据包,导致升级失败的问题,本技术提供了一种配置传输数据包最大长度的方法及设备。
4.第一方面,本技术提供了一种配置传输数据包最大长度的方法,应用于wifi模组端,所述方法包括:
5.向云服务端发送握手请求,根据所述云服务端的反馈确定所述云服务端是否支持数据包长度协商;
6.确定所述云服务端支持数据包长度协商时,在之后与所述云服务端每次握手交互过程中,根据配置为变量的基准数据包长度的取值利用对应长度的数据包向云服务端发送数据,并抓取所述云服务端传输的数据包的最大长度;
7.根据所述最大长度与当前基准数据包长度的取值的对比结果,在满足调整条件时调整基准数据包长度的取值至握手过程结束;
8.收到云服务端空中下载ota升级指令时,利用预设的最大基准数据包长度的取值与ota服务端进行握手及数据包下载。
9.在一种可能的实施方式中,向云服务端发送握手请求,包括:
10.根据配置指示,获取被配置为变量的基准数据包长度的初始取值;
11.根据所述基准数据包长度的初始取值,利用对应长度的数据包向云服务端发送握
手请求,触发执行握手过程。
12.在一种可能的实施方式中,确定所述云服务端不支持数据包长度协商业务时,根据所述云服务端的反馈确定云服务端预先配置的最大传输数据长度的取值;
13.在之后与所述云服务端每次握手交互过程中,根据配置为变量的基准数据包长度的取值、云服务端预先配置的最大传输数据长度的取值中的最小取值,利用对应长度的数据包向云服务端发送数据。
14.在一种可能的实施方式中,根据所述最大长度与当前基准数据包长度的取值的对比结果,在满足调整条件时调整数据包长度的取值至握手过程结束,包括:
15.根据所述最大长度与当前基准数据包长度的取值的对比结果,确定所述最大长度不小于当前基准数据包长度的取值时,对所述基准数据包长度的取值按照预设步长递增一次。
16.在一种可能的实施方式中,根据配置为变量的基准数据包长度的取值利用对应长度的数据包向云服务端发送数据,包括:
17.确定递增后的基准数据包长度的取值达到配置的传输数据包长度阈值时,在之后与所述云服务端每次握手交互过程中,根据传输数据包长度阈值利用对应长度的数据包向云服务端发送数据至握手过程结束;
18.确定递增后的基准数据包长度的取值未达到配置的传输数据包长度阈值时,根据配置为变量的基准数据包长度的取值利用对应长度的数据包向云服务端发送数据。
19.在一种可能的实施方式中,所述利用预设的最大基准数据包长度的取值与ota服务端进行握手及数据包下载,包括:
20.向ota服务端发送握手请求,根据所述ota服务端的反馈确定所述ota服务端支持数据包长度协商;
21.确定所述ota服务端支持数据包长度协商时,利用预设的最大基准数据包长度的取值与ota服务端进行握手及数据包下载;
22.确定所述ota服务端不支持数据包长度协商时,根据所述ota服务端的反馈确定ota服务端配置的最大传输数据长度的取值,利用所述配置的最大传输数据包长度的取值与ota服务端进行握手及数据包下载。
23.第二方面,本技术提供了一种配置传输数据包最大长度的方法,应用于云服务端,所述方法包括:
24.接收wifi模组端发送的至少一次数据包长度协商请求,并向wifi模组端发送支持数据包长度协商的结果;
25.接收wifi模组端发送的至少一次携带传输数据包长度取值的握手请求,并向wifi模组端反馈每一次握手结果。
26.第三方面,本技术提供了一种配置传输数据包最大长度的装置,应用于wifi模组端,所述装置包括:
27.发送模块,用于向云服务端发送握手请求,根据所述云服务端的反馈确定所述云服务端是否支持数据包长度协商;
28.抓取模块,用于确定所述云服务端支持数据包长度协商时,在之后与所述云服务端每次握手交互过程中,根据配置为变量的基准数据包长度的取值利用对应长度的数据包
向云服务端发送数据,并抓取所述云服务端传输的数据包的最大长度;
29.调整模块,用于根据所述最大长度与当前基准数据包长度的取值的对比结果,在满足调整条件时调整基准数据包长度的取值至握手过程结束;
30.握手模块,用于收到云服务端空中下载ota升级指令时,利用预设的最大基准数据包长度的取值与ota服务端进行握手及数据包下载。
31.第四方面,本技术提供了一种配置传输数据包最大长度的装置,应用于云服务端,所述装置包括:
32.接收模块,用于接收wifi模组端发送的握手请求,确定是否支持数据包长度协商的结果并反馈给所述wifi模组;
33.传输模块,用于确定支持数据包长度协商时,在之后的与所述云服务端每次握手交互过程中,根据wifi模组端最近一次发送数据所采用的基准数据包长度的取值,确定本次握手过程传输的数据包的长度,并利用确定数据包的长度向所述wifi模组传输数据。
34.第五方面,本技术提供了一种wifi模组设备,所述设备包括:
35.存储器,用于存储指令;
36.处理器,用于读取所述存储器中的指令能够执行如上述第一方面中的方法。
37.第六方面,本技术提供了一种云服务设备,所述设备包括:
38.存储器,用于存储指令;
39.处理器,用于读取所述存储器中的指令能够执行如上述第二方面中的方法。
40.第七方面,本技术提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序用于使计算机执行如上述第一方面或第二方面中的方法。
41.本技术提供了一种配置传输数据包最大长度的方法及设备,通过将固定的最大传输数据包的长度的取值设置为一个变量,可以分别设置wifi模组与云服务端和ota服务端握手时的最大传输数据包长度,使得wifi模组连接云服务端时,不会由于内存不足导致握手失败,以及,wifi模组与ota端握手时,不会出现使用之前过小的最大片段的值,进而造成接收不到完整数据包,导致升级失败的情况。
附图说明
42.图1为根据本发明示例性实施例示例的一种配置传输数据包最大长度的方法的应用场景图;
43.图2为根据本发明示例性实施例示例的另一种配置传输数据包最大长度的方法的应用场景图;
44.图3为根据本发明示例性实施例示例的wifi模组接入云服务端流程图;
45.图4为根据本发明示例性实施例示例的现有的一种wifi模组接入云服务端的具体流程图;
46.图5为根据本发明示例性实施例示例的一种wifi模组接入ota服务端的具体流程图;
47.图6为根据本发明示例性实施例示例的一种配置传输数据包最大长度方法的流程示意图;
48.图7为根据本发明示例性实施例示例的wifi模组进行ota固件升级的流程图;
49.图8为根据本发明示例性实施例示例的一种配置传输数据包最大长度方法的确定递增流程示意图;
50.图9为根据本发明示例性实施例示例的一种ota服务端配置传输数据包最大长度方法的流程示意图;
51.图10为根据本发明示例性实施例示例的一种云服务端配置传输数据包最大长度方法的具体流程示意图;
52.图11为根据本发明示例性实施例示例的一种云服务端配置传输数据包最大长度方法的递增流程示意图;
53.图12为根据本发明示例性实施例示例的一种云服务端配置传输数据包最大长度方法的判断长度不足流程示意图;
54.图13为根据本发明示例性实施例示例的一种wifi模组与云服务端握手流程示意图;
55.图14为根据本发明示例性实施例示例的一种ota服务端配置传输数据包最大长度方法的具体流程示意图;
56.图15为根据本发明示例性实施例示例的一种wifi模组与ota服务端握手流程示意图;
57.图16为根据本发明示例性实施例示例的另一种配置传输数据包最大长度方法的流程示意图;
58.图17为根据本发明示例性实施例示例的一种配置传输数据包最大长度的装置示意图;
59.图18为根据本发明示例性实施例示例的另一种配置传输数据包最大长度的装置示意图;
60.图19为根据本发明示例性实施例示例的一种wifi模组设备结构示意图;
61.图20为根据本发明示例性实施例示例的一种云服务设备结构示意图。
具体实施方式
62.下面将结合附图对本技术实施例中的技术方案进行清楚、详尽地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
63.在一种可能的实施方式中,本技术实施例提供的一种配置传输数据包最大长度的方法可以应用于与云服务端进行握手,即与云服务端建立安全通信的场景,如图1所示,包括:云服务端101,数据库102,至少一个无线模组,(图中示例的无线模组103_1、无线模组103_2、无线模组103_n)。其中,无线模组端与云服务端101进行数据交互,数据库102存储上述云服务端101执行配置传输数据包最大长度方法所需的数据和程序。
64.在一种可能的实施方式中,本技术实施例提供的一种配置传输数据包最大长度的方法可以应用于与空中下载ota服务端进行握手,即与ota服务端建立安全通信的场景,如图2所示,包括:云服务端101,空中下载服务端201,数据库202,至少一个无线模组,(图中示例的无线模组203_1、无线模组203_2、无线模组203_n)。其中,云服务端101向无线模组发送
执行ota升级指令,无线模组端与ota服务端201进行数据交互,数据库202存储上述ota服务端201执行配置传输数据包最大长度方法所需的数据和程序。
65.在wifi模组与云服务端进行握手之前,需要对一些文件或参数预先进行配置,其过程如图3所示:
66.s301:通过蓝牙或无线配网的方式获取路由器信息;
67.s302:无线模组连接上配网路由器;
68.s303:连接加密云服务端,无线模组加密协议网络文件描述符创建及初始化;
69.s304:无线模组通过配网获取域名和433端口访问服务端;
70.s305:无线模组端加密协议上下文初始化、参数配置;
71.s306:无线模组与云服务端握手操作。
72.对于现有技术而言,握手的具体实现流程如图4所示:
73.s401:创建、初始化网络上下文,目前仅用文件描述符fd;
74.s402:通过配网信息拼接完整域名,将域名和433端口初始化,终端控制程序连接获取有文件描述有效符;
75.s403:初始化加密协议tls/ssl上下文为后面调用写入配置函数(mbedtls_ssl_setup()),以写入配置的参数,或调用释放使用内存函数(mbedtls_ssl_free()),以清除tls/ssl使用的内存做准备。
76.s404:初始化加密协议tls/ssl配置上下文,为后面调用加载默认配置函数(mbedtls_ssl_config_defaults()),以加载默的认配置,或调用释放配置函数(mbedtls_ssl_config_free())释放加载过的配置做准备;
77.s405:采用堵塞输入/输出i/o配置,配置无线模组从云服务端读取数据超时时间;
78.s406:调用设置函数(mbedtls_ssl_set_bio)为无线模组写入/读取/超时读取云端数据配置回调函数,其中,写入回调函数为:mbedtls_net_send,读取回调函数为:mbedtls_net_recv,超时读取回调函数为:mebedtls_net_recv_timeout;
79.s407:加载ssl.h文件中默认的最大传输数据包长度的取值,一般为16kb;
80.s408:配置证书校验,默认值:none:在服务器端,required在客户端;配置随机函数;配置调试回调函数;
81.s409:调用写入配置函数(mbedtls_ssl_setup())将s405-s408中所有配置参数进行写入;
82.s410:无线模组与云服务端进行握手;
83.s411:判断握手过程是否成功,若成功执行s413,若不成功,执行s412;
84.s412:释放网络文件描述、释放加密协议配置上下文、释放加密协议上下文,并清除该连接内存;
85.s413:无线模组成功接入云服务端。
86.其中,s403中mbedtls_ssl_setup()函数,用于准备ssl传输数据包的数据格式,针对不同的套接字方式,定义不同的参数值,在进行握手初始化函数返回0表示成功,返回字符串“mbedtls_eer_ssl_alloc_failed”表示在内存中申明失败。
87.s404中mbedtls_ssl_config_defaults()函数表明接入云服务端的wifi模组作为ssl的客户端,采用tls属于需要连接的方式套接字选择字符串“stream”,ssl默认公共参数
预置涉及鉴权请求模式选择、是否需要协、ssl的使用版本以及加密组件信息等,函数返回0标识成功,返回参数
““
mbedtls_eer_xxx_alloc_failed”表示在内存中申明失败。
88.现有技术中,wifi模组与ota服务端的握手过程中初始化的步骤为“将云端下发的数据包地址和443端口初始化,终端控制程序连接获取有效的文件描述符”,与云服务端中s402存在差异,其余步骤基本一致,如图5所示,此处不再赘述。
89.对于现有技术的握手流程来说,s407中的最大传输数据包长度的取值为16k,可能会由于16k过大,造成握手失败,若直接减小该值,例如将16k减小到10k,那么在无线模组与ota服务端握手时,可能会由于10k太小,造成接收数据包不完整,因此本技术实施例提出了一种配置传输数据包最大长度的方法,如图6所示,所述方法包括:
90.s601:向云服务端发送握手请求,根据所述云服务端的反馈确定所述云服务端是否支持数据包长度协商。
91.当wifi模组端向云服务端发送握手请求后,会与云服务端协商基准数据包的长度,即wifi模组与云服务端数据包传输的过程中数据包最大可以达到的长度,而云服务端存在支持协商业务和不支持协商业务两种情况。
92.当云服务端支持协商数据包长度时,根据wifi每一次确定的数据包长度的取值利用对应长度的数据包向云服务端发送数据。
93.在一种可能的实施方式中,确定所述云服务端不支持数据包长度协商业务时,根据所述云服务端的反馈确定云服务端预先配置的最大传输数据长度的取值;
94.在之后与所述云服务端每次握手交互过程中,根据配置为变量的基准数据包长度的取值、云服务端预先配置的最大传输数据长度的取值中的最小取值,利用对应长度的数据包向云服务端发送数据。
95.其中,云服务端中也包括参数“最大传输数据包长度的取值”,当云服务端不支持协商数据包长度时,云服务端会将预先配置的最大传输数据包长度的取值反馈给wifi模组端,wifi模组端会对比当前基准数据包长度的取值与云服务端发送的最大传输数据包长度的取值,选择两者中的最小值并利用所述最小值与云服务端进行握手。
96.s602:确定所述云服务端支持数据包长度协商时,在之后与所述云服务端每次握手交互过程中,根据配置为变量的基准数据包长度的取值利用对应长度的数据包向云服务端发送数据,并抓取所述云服务端传输的数据包的最大长度。
97.与现有技术s407中不同,本技术实施例中将基准数据包长度(最大传输数据包长度)的取值配置为一个可变量“len”,其中基准数据包长度的取值在wifi模组与云服务端握手过程中起到的作用为令握手过程传输数据包的长度不超过该基准,但是在该值确定下来之前,传输数据包的长度可能会比该基准大,那么此时握手将会失败,需要重新确定基准数据包长度的取值并重新执行握手过程,直至握手成功。
98.在一种可能的实施方式中,向云服务端发送握手请求,包括:
99.根据配置指示,获取被配置为变量的基准数据包长度的初始取值;
100.根据所述基准数据包长度的初始取值,利用对应长度的数据包向云服务端发送握手请求,触发执行握手过程。
101.为变量“len”设置一个初始值,例如4kb,具体可以根据wifi模组的内存大小进行设置,为了避免过多的数据交互浪费服务器资源,该初始值不宜设置过小。
102.在根据配置为变量的基准数据包长度的取值利用对应长度的数据包向云服务端发送数据时,利用抓取传输数据包最大长度函数(mbedtls_ssl_get_max_record_payload())抓取所述云服务端传输的数据包的最大长度。
103.s603:根据所述最大长度与当前基准数据包长度的取值的对比结果,在满足调整条件时调整基准数据包长度的取值至握手过程结束。
104.在与云服务端握手的过程中,wifi模组端会将携带着所述基准数据包长度的取值的数据包(ssl.h头文件)发送到云服务端,并指示握手过程中传输数据包的长度,当存在传输数据包的长度超过该基准时,握手将会失败。
105.在一种可能的实施方式中,根据所述最大长度与当前基准数据包长度的取值的对比结果,在满足调整条件时调整数据包长度的取值至握手过程结束,包括:
106.根据所述最大长度与当前基准数据包长度的取值的对比结果,确定所述最大长度不小于当前基准数据包长度的取值时,对所述基准数据包长度的取值按照预设步长递增一次。
107.在确定基准数据包长度的取值的过程中,可能会出现与云服务端协商多次以及进行多次握手过程的情况。此过程中会不断调整所述基准数据包长度的取值,直至握手成功。
108.s604:收到云服务端空中下载ota升级指令时,利用预设的最大基准数据包长度的取值与ota服务端进行握手及数据包下载。
109.wifi模组ota固件下载过程如图7所示,包括4步:
110.第一步:wifi模组与云服务端建立连接(握手)成功后,云服务端向wifi模组发送ota升级的命令;
111.第二步:wifi模组接收云服务端发送的ota升级命令后,与云服务端断开连接;
112.第三步:wifi模组与ota服务端建立连接(握手),发送新固件数据包,其中,握手的过程中将在ssl.h头文件中携带最大基准数据包长度的取值,而且为了与ota服务端握手成功,需要提前将wifi模组端其它一些多余进程(例如蓝牙)关闭;
113.第四步:wifi模组下载新固件包数据。
114.wifi模组与云服务端握手成功后,接收到ota升级指令时,与ota服务端进行握手以及数据包的下载过程,在这个过程中,与云服务端握手过程类似,需要将最大基准数包长度的取值携带在传输数据包(ssl.h头文件)中,用于指示传输包的长度,当存在传输数据包的长度大于该基准时,会导致握手或下载数据包失败。
115.本技术实施例提供了一种配置传输数据包最大长度的方法,通过将固定的最大传输数据包的长度的取值设置为一个变量,可以分别设置wifi模组与云服务端和ota服务端握手时的最大传输数据包长度,使得wifi模组连接云服务端时,既不会由于内存不足导致握手失败,当wifi模组与ota端握手时,也不会出现使用之前过小的最大片段的值,进而造成接收不到完整数据包,导致升级失败的情况。
116.上述s602中根据配置为变量的基准数据包长度的取值利用对应长度的数据包向云服务端发送数据,具体可以根据如下实施方式,如图8所示:
117.根据配置为变量的基准数据包长度的取值利用对应长度的数据包向云服务端发送数据,包括:
118.s801:确定递增后的基准数据包长度的取值达到配置的传输数据包长度阈值时,
在之后与所述云服务端每次握手交互过程中,根据传输数据包长度阈值利用对应长度的数据包向云服务端发送数据至握手过程结束;
119.s802:确定递增后的基准数据包长度的取值未达到配置的传输数据包长度阈值时,根据配置为变量的基准数据包长度的取值利用对应长度的数据包向云服务端发送数据。
120.首先根据基准数据包长度的初始取值利用对应长度的数据包与云服务端进行握手,在利用初始值与云服务端握手失败时,按照预设的步长,例如1kb,对所述基准数据包长度的初始取值进行递增操作,然后根据递增后的基准数据包的取值利用对应长度的数据包与云服务端进行握手,若握手不成功,则还需要执行上述流程,直至握手成功为止。
121.当基准数据包长度的取值递增至配置的传输数据包长度阈值,例如8k,根据传输数据包长度阈值利用对应长度的数据包向云服务端发送数据至握手过程结束,此时不会再对基准数据包长度的取值进行递增操作。
122.其中,上述预设步长与阈值的取值具体可以根据wifi模组的性能或用户需求确定,此处不作具体限定。
123.上述s604中所述利用预设的最大基准数据包长度的取值与ota服务端进行握手及数据包下载,具体可以通过如下实施方式,如图9所示:
124.在一种可能的实施方式中,所述利用预设的最大基准数据包长度的取值与ota服务端进行握手及数据包下载,包括:
125.s901:向ota服务端发送握手请求,根据所述ota服务端的反馈确定所述ota服务端支持数据包长度协商;
126.s902:确定所述ota服务端支持数据包长度协商时,利用预设的最大基准数据包长度的取值与ota服务端进行握手及数据包下载;
127.s903:确定所述ota服务端不支持数据包长度协商时,根据所述ota服务端的反馈确定ota服务端配置的最大传输数据长度的取值,利用所述配置的最大传输数据包长度的取值与ota服务端进行握手及数据包下载。
128.与云服务端类似,当wifi模组与ota服务端握手以及下载数据包的过程中,同样需要与ota服务端进行数据包长度的协商,ota服务端也存在支持协商业务和不支持协商业务两种情况。
129.与云服务端握手不同的是,在此过程中,wifi模组无需对基准数据包长度进行调整,而是根据本技术实施例提供的方法(mbedtls_ssl_dynamic_max_content_len宏定义)将现有技术中最大基准数据包长度(define mbedtls_ssl__max_content_len 16384)这个参数设置为一个变量,使得在与不同的服务端进行握手时,支持设置不同的最大基准数据包长度。
130.若所述ota服务端支持数据包长度协商,则wifi模组确定利用预设的最大基准数据包长度的取值与ota服务端进行握手及数据包下载;若所述ota服务端不支持数据包长度协商,则由ota服务端配置一个最大传输数据包长度的取值反馈给wifi模组端,wifi模组确定利用所述的最大传输数据包长度的取值与ota服务端进行握手及数据包下载。
131.本技术实施例提供的一种应用于wifi模组与云服务握手场景的配置传输数据包最大长度的方法具体实现流程如图10-图12所示:
132.s1001:创建、初始化网络上下文,目前仅用文件描述符fd;
133.s1002:通过配网信息拼接完整域名,将域名和433端口初始化,终端控制程序连接获取有文件描述有效符;
134.s1003:初始化加密协议tls/ssl上下文为后面调用写入配置函数(mbedtls_ssl_setup()),以写入配置的参数,或调用释放使用内存函数(mbedtls_ssl_free()),以清除tls/ssl使用的内存做准备。
135.s1004:初始化tls/ssl配置上下文,为后面调用加载默认配置函数(mbedtls_ssl_config_defaults()),以加载默的认配置,或调用释放配置函数(mbedtls_ssl_config_free())释放加载过的配置做准备;
136.s1005:采用堵塞输入/输出i/o配置,设置无线模组读取数据超时时间;
137.s1006:调用设置函数(mbedtls_ssl_set_bio)为模组写入/读取/超时读取云端数据配置回调函数,其中,写入回调函数为:mbedtls_net_send,读取回调函数为:mbedtls_net_recv,超时读取回调函数为:mebedtls_net_recv_timeout;
138.s1007:加载默认加密配置参数,调用调整最大基准传输数据包长度函数(mbedtls_ssl_dynamic_max_content_len);
139.s1008:配置证书校验,默认值:none:在服务器端,required在客户端;配置随机函数;配置调试回调函数;
140.s1009:通过调用调整最大基准传输数据包长度函数配置基准数据包长度;
141.s1010:将所有配置参数写进回调函数中;
142.s1011:无线模组与云服务端握手;
143.s1012:通过对比抓取所述云服务端传输的数据包的最大长度与当前基准数据包长度的取值判断是否基准传输数据包长度不足,若是,则执行s1013,否则执行s1014;
144.s1013:按照预设步长递增基准数据包长度的取值;
145.s1014:判断与云服务端握手是否成功,若是,则确定成功接入云服务端,否则,执行s1015;
146.s1015:释放网络文件描述、释放加密协议配置上下文、释放加密协议上下文,并清除该连接内存。
147.其中上述s1011无线模组与云服务端握手的具体流程如图13所示:
148.1、wifi模组端向云服务端发送你好客户端“hello client”,其中包括所tls/ssl版本信息、加密算法以及随机数;
149.2、云服务端向wifi模组端反馈服务器客户端“sever client”其中包括tls/ssl版本信息、随机数以及云服务端证书;
150.3、wifi模组端校验云服务端证书是否合法;
151.4、wifi模组端向云服务端发送支持的至少一个加密算法供服务端选择;
152.5、云服务端选择加密方式;
153.6、云服务端向wifi模组端以文明形式反馈加密方式;
154.7、wifi模组端接收到云服务端反馈的加密方式后,产生随机数作为对称加密秘钥,使用服务端公钥加密后发送给云服务端;
155.8、云服务端接收到加密的数据后,使用私钥对加密信息进行解密,获取对称加密
秘钥,完成握手。
156.本技术实施例提供的一种应用于wifi模组与ota服务握手场景的配置传输数据包最大长度的方法具体实现流程如图14所示:
157.s1401:创建、初始化网络上下文,目前仅用文件描述符fd;
158.s1402:将云端下发的数据包地址和433端口初始化,终端控制程序连接获取有文件描述有效符;
159.s1403:初始化加密协议tls/ssl上下文为后面调用写入配置函数(mbedtls_ssl_setup()),以写入配置的参数,或调用释放使用内存函数(mbedtls_ssl_free()),以清除tls/ssl使用的内存做准备。
160.s1404:初始化tls/ssl配置上下文,为后面调用加载默认配置函数(mbedtls_ssl_config_defaults()),以加载默的认配置,或调用释放配置函数(mbedtls_ssl_config_free())释放加载过的配置做准备;
161.s1405:采用堵塞输入/输出i/o配置,设置无线模组读取数据超时时间;
162.s1406:调用设置函数(mbedtls_ssl_set_bio)为模组写入/读取/超时读取云端数据配置回调函数,其中,写入回调函数为:mbedtls_net_send,读取回调函数为:mbedtls_net_recv,超时读取回调函数为:mebedtls_net_recv_timeout;
163.s1407:加载默认加密配置参数,调用调整基准传输数据包长度函数;
164.s1408:配置证书校验、配置随机函数、配置调试回调函数;
165.s1409:配置最大基准传输数据包;
166.s1410:将所有配置参数写进回调函数中;
167.s1411:无线模组与ota服务端握手;
168.s1412:判断握手是否成功,若是则确定wifi模组成功接入ota服务端,若否,执行s1413;
169.s1413:释放网络文件描述、释放加密协议配置上下文、释放加密协议上下文,并清除该连接内存。
170.与云服务端不同的是,当wifi模组与ota端进行握手时,只需要利用预设的最大基准传输数据包长度与ota服务端进行握手和数据包的下载,无需对所述最大基准传输数据包长度的取值进行调整。
171.其中s1411中握手过程如图15所示:
172.1、wifi模组端向ota服务端发送你好客户端“hello client”,其中包括所tls/ssl版本信息、加密算法以及随机数;
173.2、ota服务端向wifi模组端反馈服务器客户端“sever client”其中包括tls/ssl版本信息、随机数以及ota服务端证书;
174.3、wifi模组端校验ota服务端证书是否合法;
175.4、wifi模组端向ota服务端发送支持的至少一个加密算法供服务端选择;
176.5、ota服务端选择加密方式;
177.6、ota服务端向wifi模组端以文明形式反馈加密方式;
178.7、wifi模组端接收到ota服务端反馈的加密方式后,产生随机数作为对称加密秘钥,使用服务端公钥加密后发送给ota服务端;
179.8、ota服务端接收到加密的数据后,使用私钥对加密信息进行解密,获取对称加密秘钥,完成握手。
180.基于相同的发明构思,本技术实施例还提供了一种配置传输数据包最大长度的方法,应用于云服务端,如图16所示,所述方法包括:
181.s1601:接收wifi模组端发送的握手请求,确定是否支持数据包长度协商的结果并反馈给所述wifi模组;
182.s1602:确定支持数据包长度协商时,在之后的与所述云服务端每次握手交互过程中,根据wifi模组端最近一次发送数据所采用的基准数据包长度的取值,确定本次握手过程传输的数据包的长度,并利用确定数据包的长度向所述wifi模组传输数据。
183.其中,协商和握手过程可能包括多次,具体的配置传输数据包最大长度的方法如前所述,此处不再赘述。
184.基于相同的发明构思,本技术实施例提供了一种配置传输数据包最大长度的装置,如图17所示,应用于wifi模组端,所述装置1700包括:
185.发送模块1701,用于向云服务端发送握手请求,根据所述云服务端的反馈确定所述云服务端是否支持数据包长度协商;
186.抓取模块1702,用于确定所述云服务端支持数据包长度协商时,在之后与所述云服务端每次握手交互过程中,根据配置为变量的基准数据包长度的取值利用对应长度的数据包向云服务端发送数据,并抓取所述云服务端传输的数据包的最大长度;
187.调整模块1703,用于根据所述最大长度与当前基准数据包长度的取值的对比结果,在满足调整条件时调整基准数据包长度的取值至握手过程结束;
188.握手模块1704,用于收到云服务端空中下载ota升级指令时,利用预设的最大基准数据包长度的取值与ota服务端进行握手及数据包下载。
189.在一种可能的实施方式中,发送模块用于向云服务端发送握手请求,包括:
190.根据配置指示,获取被配置为变量的基准数据包长度的初始取值;
191.根据所述基准数据包长度的初始取值,利用对应长度的数据包向云服务端发送握手请求,触发执行握手过程。
192.在一种可能的实施方式中,握手模块用于:
193.确定所述云服务端不支持数据包长度协商业务时,根据所述云服务端的反馈确定云服务端预先配置的最大传输数据长度的取值;
194.在之后与所述云服务端每次握手交互过程中,根据配置为变量的基准数据包长度的取值、云服务端预先配置的最大传输数据长度的取值中的最小取值,利用对应长度的数据包向云服务端发送数据。
195.在一种可能的实施方式中,调整模块用于根据所述最大长度与当前基准数据包长度的取值的对比结果,在满足调整条件时调整数据包长度的取值至握手过程结束,包括:
196.根据所述最大长度与当前基准数据包长度的取值的对比结果,确定所述最大长度不小于当前基准数据包长度的取值时,对所述基准数据包长度的取值按照预设步长递增一次。
197.在一种可能的实施方式中,抓取模块用于根据配置为变量的基准数据包长度的取值利用对应长度的数据包向云服务端发送数据,包括:
programmable gate array,简称fpga),通用阵列逻辑(generic array logic,简称gal)或其任意组合。
212.基于相同的发明构思,本技术实施例还提供了一种云服务设备,如图20所示,所述设备包括:
213.存储器,用于存储指令;
214.处理器,用于读取所述存储器中的指令,执行下列过程:
215.接收wifi模组端发送的握手请求,确定是否支持数据包长度协商的结果并反馈给所述wifi模组;
216.确定支持数据包长度协商时,在之后的与所述云服务端每次握手交互过程中,根据wifi模组端最近一次发送数据所采用的基准数据包长度的取值,确定本次握手过程传输的数据包的长度,并利用确定数据包的长度向所述wifi模组传输数据。
217.下面参照图20来描述根据本技术的这种实施方式的云服务设备130。图20显示的云服务设备130仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
218.如图20所示,云服务设备130以通用电子设备的形式表现。云服务设备130的组件可以包括但不限于:上述至少一个处理器131、上述至少一个存储器132、连接不同系统组件(包括存储器132和处理器131)的总线133。
219.所述处理器131用于读取所述存储器132中的指令并执行,以使所述至少一个处理器能够执行上述实施例提供的一种配置传输数据包最大长度的方法。
220.总线133表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
221.存储器132可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)1321和/或高速缓存存储器1322,还可以进一步包括只读存储器(rom)1323。
222.存储器132还可以包括具有一组(至少一个)程序模块1324的程序/实用工具1325,这样的程序模块1324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
223.云服务设备130也可以与一个或多个外部设备134(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与云服务设备130交互的设备通信,和/或与使得该云服务设备130能与一个或多个其它电子设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口135进行。并且云服务设备130还可以通过网络适配器136与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器136通过总线133与用于云服务设备130的其它模块通信。应当理解,尽管图中未示出,可以结合云服务设备130使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
224.在一些可能的实施方式中,本技术提供的配置传输数据包最大长度方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本技术各种示例性实施方式的一种配置传输数据包最大长度方法的步骤。
225.另外,本技术还提供一种计算机可读存储介质,存储器可以包括易失性存储器形
式的可读介质,例如随机存取存储器(ram)1321和/或高速缓存存储器1322,还可以进一步包括只读存储器(rom)1323。
226.存储器132还可以包括具有一组(至少一个)程序模块1324的程序/实用工具1325,这样的程序模块1324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
227.所述计算机存储介质存储有计算机程序所述计算机程序用于使计算机执行上述实施例中任何一项所述的方法。
228.这些计算机程序指令也可存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
229.这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
230.尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。
231.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。