本技术涉及通信领域,并且更具体地,涉及一种应用于物联网的数据接收方法和装置。
背景技术:
1、随着物联网技术的发展,安全通信逐渐成为最核心的通信能力之一,受限于物联网设备硬件资源,轻量级安全加解密软件成为诸多厂商的首选,mbedtls作为一款商业友好、移植简单、模块化配置方便的免费加解密通信开源软件受到了主流厂商的追捧。但是,随着使用mbedtls进行加解密通信的应用程序的增多,物联网设备仍然存在着硬件资源不足的瓶颈。其中,mbedtls是由arm公司开发的一种传输层安全性(transport layersecurity,tls)协议。
2、在典型的tls协议通信中,物联网设备作为客户(client)端,云服务器作为服务(server)端,由client端向server端主动发起tls握手,握手过程中双方协商后续加密通信中使用的加密算法、传输的数据包大小的上线等信息。其中,client端负责与server端进行tls握手和通信的就是mbedtls模块,协商出的数据包大小被mbedtls模块用作从缓存区申请用于存放server端发送的数据包的内存的依据。
3、目前,client端的mbedtls模块与server端协商数据包大小的上限默认是16k,这个数值对于内存有限的物联网设备来说比较大,因此,为了尽可能减少client端的内存压力,mbedtls模块在与server端握手时会携带扩展字段来协商一个更小的数据包大小上限,分为0.5k、1k、2k、4k四个档位。client端的mbedtls模块与server端协商双方通信的数据包大小上限,会存在两种可能的结果:协商失败或双方协商成功。若协商失败,mbedtls模块默认只能按照16k的大小来申请缓存区内存,但是在物联网通信中,数据包大小一般只有1k~4k、远小于16k,因此,这种情况下存在着严重的内存资源浪费的问题。若协商成功,mbedtls模块申请的缓存区内存大小是固定不变的,在实际的物联网通信中,数据包的大小不是固定的,而且大多数时候都比较小,因此,固定的缓存区内存也会导致内存资源的浪费。
技术实现思路
1、本技术提供了一种应用于物联网的数据接收方法和装置,能够在提高通信成功率的同时避免内存资源浪费、提高内存资源的利用率。
2、第一方面,提供一种应用于物联网的数据接收方法,该方法可以由网络设备或网络设备侧的芯片或芯片系统执行。该方法包括:第一物联网设备与第二物理网设备根据传输层安全性协议协商传输的数据包的大小的上限;所述第一物联网设备从所述第二物联网设备接收第一信息,所述第一信息用于指示所述第二物联网设备发送的第一数据包的大小;所述第一物联网设备根据所述第一信息,动态地调整所述第一物联网设备中用于存储所述第一数据包的第一内存的大小。
3、基于上述技术方案,第一物联网设备根据从第二物联网设备接收的第一信息可以确定第二物联网设备发送的第一数据包的大小,根据已申请的第一内存的大小和第一数据包的大小,动态地调整用于存储第一数据包的第一内存的大小。当第一数据包的大小大于当前已申请的第一内存的大小时,申请更大的第一内存,可以提高通信成功率;当第一数据包的大小小于当前已申请的第一内存的大小时,可以申请更小的第一内存,能够避免内存资源浪费、提高内存资源的利用率。因此,相比于现有技术中用于存储数据包的内存的大小固定不变,本技术实施例可以根据当前数据包的大小灵活地调整第一内存的大小,能够在提高通信成功率的同时避免内存资源浪费、提高内存资源的利用率。
4、结合第一方面,在第一方面的某些实现方式中,所述第一物联网设备根据所述第一信息,动态地调整第一内存的大小,包括:当所述第一数据包的大小大于所述第一内存的大小时,所述第一物联网设备调整所述第一内存的大小,调整后的所述第一内存的大小等于所述第一数据包的大小。可选的,调整后的所述第一内存的大小也可以大于所述第一数据包的大小。申请更大的第一内存,可以提高通信成功率。
5、结合第一方面,在第一方面的某些实现方式中,所述第一物联网设备根据所述第一信息,动态地调整第一内存的大小,包括:当所述第一数据包的大小小于或等于所述第一内存的大小时,所述第一物联网设备根据所述第一数据包的大小、周期内接收到的第二数据包的大小的均值以及所述第一物联网设备中可用内存的大小,确定目标内存的大小,其中,所述第二数据包是所述第一物联网设备在接收所述第一信息之前接收到的;所述第一物联网设备根据所述目标内存的大小和所述第一内存的大小,动态地调整所述第一内存的大小。
6、结合第一方面,在第一方面的某些实现方式中,所述第一物联网设备根据所述目标内存的大小和所述第一内存的大小,动态地调整所述第一内存的大小,包括:当所述目标内存的大小大于或小于所述第一内存的大小时,所述第一物联网设备调整所述第一内存的大小,调整后的所述第一内存的大小等于所述目标内存的大小;当所述目标内存的大小等于所述第一内存的大小时,所述第一物联网设备不调整所述第一内存的大小。
7、该情况下,第一物联网设备根据第一数据包的大小、周期内接收到的第二数据包的大小的均值以及所述第一物联网设备中可用内存的大小,确定目标内存的大小,再通过比较目标内存的大小和第一数据包的大小,可以适应性调整第一内存的大小,提高通信成功率的同时避免内存资源浪费。
8、结合第一方面,在第一方面的某些实现方式中,所述第一物联网设备根据所述第一信息,动态地调整所述第一内存的大小,包括:当所述第一数据包的大小小于所述第一内存的大小时,所述第一物联网设备调整所述第一内存的大小,调整后的所述第一内存的大小等于所述第一数据包的大小;当所述第一数据包的大小等于所述第一内存的大小时,所述第一物联网设备不调整所述第一内存的大小。
9、通过该方案可以保证每次接收的数据包的大小和第一内存的大小保持一致,不再给第一内存预留一定的内存空间,可以避免内存资源浪费、提高资源利用率。
10、结合第一方面,在第一方面的某些实现方式中,所述方法还包括:所述第一物联网设备从所述第二物联网设备接收所述第一数据包。
11、第二方面,提供了一种通信装置,该装置可以应用于第一方面所述的第一物联网设备中,该装置包括:通信电路,用于与第二物理网设备根据传输层安全性协议协商传输的数据包的大小的上限;所述通信电路还用于,从第二物联网设备接收第一信息,所述第一信息用于指示所述第二物联网设备发送的第一数据包的大小;处理电路,用于根据所述第一信息,动态地调整所述第一物联网设备中用于存储所述第一数据包的第一内存的大小。
12、结合第二方面,在第二方面的某些实现方式中,所述处理电路具体用于,当所述第一数据包的大小大于所述第一内存的大小时,调整所述第一内存的大小,调整后的所述第一内存的大小等于所述第一数据包的大小。
13、结合第二方面,在第二方面的某些实现方式中,所述处理电路具体用于:当所述第一数据包的大小小于或等于所述第一内存的大小时,根据所述第一数据包的大小、周期内接收到的第二数据包的大小的均值以及所述处理电路所在的物联网设备中可用内存的大小,确定目标内存的大小,其中,所述第二数据包是所述通信电路在接收所述第一信息之前接收到的;根据所述目标内存的大小和所述第一内存的大小,动态地调整所述第一内存的大小。
14、结合第二方面,在第二方面的某些实现方式中,所述处理电路具体用于:当所述目标内存的大小大于或小于所述第一内存的大小时,调整所述第一内存的大小,调整后的所述第一内存的大小等于所述目标内存的大小;当所述目标内存的大小等于所述第一内存的大小时,不调整所述第一内存的大小。
15、结合第二方面,在第二方面的某些实现方式中,所述处理电路具体用于:当所述第一数据包的大小小于所述第一内存的大小时,调整所述第一内存的大小,调整后的所述第一内存的大小等于所述第一数据包的大小;当所述第一数据包的大小等于所述第一内存的大小时,不调整所述第一内存的大小。
16、结合第二方面,在第二方面的某些实现方式中,所述通信电路还用于,从所述第二物联网设备接收所述第一数据包。
17、第三方面,提供一种通信设备,包括:处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述存储器中存储的计算机程序,以使得所述通信设备执行如第一方面或第一方面任意可能的实现方式中的方法。
18、第四方面,提供了一种通信设备,包括:输入输出接口和处理器,该输入输出接口,用于获取输入信息和/或输出信息;该处理器用于执行上述第一方面或第一方面任意可能的实现方式所述的方法,根据输入信息进行处理和/或生成输出信息。
19、第五方面,提供了一种计算机可读存储介质,所述计算机可读介质存储有计算机程序;所述计算机程序在计算机上运行时,使得计算机执行上述第一方面以及第一方面中任一种可能实现方式中的方法。
20、第六方面,提供一种包含指令的计算机程序产品,所述指令被计算机执行时使得通信装置实现上述第一方面以及第一方面中任一种可能实现方式中的方法。