首页> 中国专利> 安全套接层协议实体访问非连续内存的方法及接口装置

安全套接层协议实体访问非连续内存的方法及接口装置

摘要

一种SSL协议实体访问非连续内存的方法及接口装置,其中的接口装置包括抽象IO接口和非连续内存IO接口,相应的方法包括:SSL协议实体创建连接时,通过抽象IO接口调用非连续内存IO接口创建写数据链和读数据链,及将该连接与读数据链和写数据链绑定;SSL协议实体向下层协议实体发送SSL处理区中该连接的待发送数据时,通过抽象IO接口调用非连续内存IO接口,将待发送数据承载在数据单元中并插入写数据链;SSL协议实体接收下层协议实体发送的该连接的数据时,通过抽象IO接口调用非连续内存IO接口,将读数据链中数据单元承载的数据读出并写入SSL处理区。本发明实现了SSL协议实体对非连续内存的访问。

著录项

  • 公开/公告号CN103973694A

    专利类型发明专利

  • 公开/公告日2014-08-06

    原文格式PDF

  • 申请/专利权人 北京太一星晨信息技术有限公司;

    申请/专利号CN201410204074.7

  • 发明设计人 李旻翊;

    申请日2014-05-14

  • 分类号H04L29/06;

  • 代理机构北京安信方达知识产权代理有限公司;

  • 代理人王丹

  • 地址 100193 北京市海淀区东北旺西路8号21号306号

  • 入库时间 2023-12-17 01:24:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-05-10

    授权

    授权

  • 2014-09-03

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20140514

    实质审查的生效

  • 2014-08-06

    公开

    公开

说明书

技术领域

本发明涉及互联网通讯,更具体地,涉及互联网数据加密传输中SSL (Secure Sockets Layer:安全套接层)访问非连续内存的方法及相应的接口 装置。

背景技术

目前SSL等7层加密协议基于TCP协议,绝大部分的7层加解密应用 必须依赖TCP层的套接字接口(SOCKET)作为其数据出入口。即SSL协议 栈与底层协议栈的关联是通过SOCKET实现的,SSL应用程序需要绑定一个 SOCKET来使TCP层接收的数据能顺序的传入SSL协议实体(指执行SSL 协议功能的实体),同时SSL协议实体的输出也依赖于SOCKET将数据最 终发送出去。

现有SSL的IO设计对于底层协议栈的要求比较多。对于传统TCP协议 栈而言,其本身功能比较完善,对上层的接口也很丰富,但是,一些网络设 备使用的专用TCP协议栈是在传统协议栈基础上的优化和裁剪,从功能和 对外接口来讲不如传统协议栈丰富。另外,专用TCP协议栈的一大特点是处 理单位以及对外输出一般是零散的数据报文,并且缺少SOCKET。在这种 环境下,就需要为SSL协议提供一套不同于SOCKET的IO接口,允许SSL 以非连续内存的方式访问数据。

发明内容

本发明要解决的技术问题是提供一种SSL访问非连续内存的方法及接口 装置。

为了解决的上述技术问题,本发明提供了一种安全套接层SSL协议实体 访问非连续内存的方法,包括:

SSL协议实体创建连接时,通过抽象IO接口调用非连续内存IO接口创 建写数据链和读数据链,及将该连接与所述读数据链和写数据链绑定;

所述SSL协议实体向下层协议实体发送SSL处理区中该连接的待发送数 据时,通过所述抽象IO接口调用所述非连续内存IO接口,将所述待发送数 据承载在数据单元中并插入所述写数据链;

所述SSL协议实体接收所述下层协议实体发送的该连接的数据时,通过 抽象IO接口调用非连续内存IO接口,将所述读数据链中数据单元承载的数 据读出并写入SSL处理区;

所述读数据链和写数据链是数据单元依次链接而成的使用非连续内存的 数据结构,所述数据单元包括头部和负载,其中,头部记载了数据单元承载 的数据的长度,负载即数据单元承载的数据。

较佳地,

所述抽象IO接口遵循SSL协议的IO接口标准,与SSL协议兼容;

所述下层协议实体为专用TCP协议实体,所述非连续内存IO接口与所 述专用TCP协议兼容。

较佳地,

所述SSL协议实体通过抽象IO接口调用非连续内存IO接口创建写数据 链和读数据链,及将该连接与所述读数据链和写数据链绑定,包括:

所述SSL协议实体调用抽象IO接口以打开接口,以该连接的连接标识 为参数;

所述抽象IO接口调用所述非连续内存IO接口创建读数据链和写数据 链,所述非连续内存IO接口完成读数据链和写数据链的创建后,将所述读 数据链的标识和写数据链的标识返回所述抽象IO接口;

所述抽象IO接口保存所述连接标识与所述读数据链的标识和写数据链 的标识的对应关系,通知所述SSL协议实体打开接口成功。

较佳地,

所述SSL协议实体通过所述抽象IO接口调用所述非连续内存IO接口, 将所述数据承载在数据单元中并插入所述写数据链,包括:

所述SSL协议实体调用所述抽象IO接口发送所述待发送数据,以该连 接的连接标识和所述待发送数据的长度、地址信息为参数;

所述抽象IO接口查找到所述连接标识对应的写数据链的标识,调用所 述非连续内存IO接口写数据,以所述写数据链的标识和所述待发送数据的 长度、地址信息为参数;

所述非连续内存IO接口根据所述待发送数据的长度申请内存,申请成 功后,根据所述地址信息读取所述待发送数据并添加相应的头部以生成数据 单元,然后将生成的数据单元插入到所述写数据链的尾部。

较佳地,

所述SSL协议实体通过抽象IO接口调用非连续内存IO接口,将所述读 数据链中数据单元承载的数据读出并写入SSL处理区,包括:

所述SSL协议实体调用所述抽象IO接口接收数据,以该连接的连接标 识、待读取数据长度和写入地址为参数;

所述抽象IO接口查找到所述连接标识对应的读数据链的标识,调用所 述非连续内存IO接口读数据,以所述读数据链的标识、待读取数据长度和 写入地址为参数;

所述非连续内存IO接口根据待读取的数据长度,从所述读数据链头部 的数据单元中读取相应长度的数据并根据所述写入地址写入SSL处理区,然 后对所述读数据链进行裁剪和/或对所述读数据链的数据单元进行整形,以释 放所读取的数据使用的内存。

相应地,本发明还提供了一种SSL协议实体访问非连续内存的接口装置, 包括抽象IO接口和非连续内存IO接口,其中:

所述抽象IO接口用于根据SSL协议实体的指令,调用非连续内存IO接 口,完成写数据链和读数据链的创建并将所述读数据链和写数据链与相应连 接绑定,及完成该连接的数据在SSL处理区和所述读数据链、写数据链之间 的传输;

所述非连续内存IO接口用于根据所述抽象IO接口的指令,创建写数据 链和读数据链,及将该连接在SSL处理区的数据承载在数据单元中插入所述 写数据链,将所述读数据链中数据单元承载的数据读出并写入SSL处理区;

所述读数据链和写数据链是数据单元依次链接的非连续内存数据结构, 所述数据单元包括头部和负载,其中,头部记载了数据单元承载的数据的长 度,负载即数据单元承载的数据。

较佳地,所述抽象IO接口包括:

接口管理单元,用于在接收到SSL协议实体创建连接时打开接口的第一 指令后,调用非连续内存IO接口创建写数据链和读数据链,将所述非连续 内存IO接口返回的写数据链的标识和读数据链的标识与第一指令中的连接 标识对应保存,及通知所述SSL协议实体打开接口成功;

抽象写接口,用于在接收到SSL协议实体向下层协议实体发送该连接的 待发送数据的第二指令后,根据其中的连接标识查找到对应的写数据链的标 识,然后调用所述非连续内存IO接口写数据,以所述写数据链的标识和所 述第二指令中的待发送数据的长度、地址信息为参数。

抽象读接口,用于在接收到SSL协议实体接收下层协议实体发送的该连 接的数据的第三指令后,根据其中的连接标识查找到对应的读数据链的标识, 然后调用所述非连续内存IO接口读数据,以所述读数据链的标识和所述第 三指令中的待接收数据长度、写入地址为参数。

较佳地,所述非连续内存IO接口包括数据操作单元、实际写接口和实 际读接口,其中:

所述实际写接口,用于根据所述抽象IO接口写数据的指令,调用所述 数据操作单元写数据,以所述写数据链的标识和所述待发送数据的长度、地 址信息为参数;

所述实际读接口,用于根据所述抽象IO接口读数据的指令,调用所述 数据操作单元以执行读数据操作,以所述读数据链的标识和所述第三指令中 的待接收数据长度、写入地址为参数;

数据操作单元,又包括:

数据链创建子单元,用于在接受到所述抽象IO接口创建写数据链和读 数据链的指令后,创建写数据链和读数据链,并将所述写数据链的标识和所 述读数据链的标识返回所述抽象IO接口;

写数据操作子单元,用于在接收到所述实际写接口写数据的指令后,根 据所述待发送数据的长度申请内存,申请成功后,根据所述地址信息读取所 述待发送数据并添加相应的头部以生成数据单元,然后将生成的数据单元插 入到所述写数据链的尾部;

读数据操作子单元,用于在接收到所述实际读接口读数据的指令后,根 据待读取的数据长度,从所述读数据链头部的数据单元中读取相应长度的数 据并根据所述写入地址写入SSL处理区,然后对所述读数据链进行裁剪和/ 或对所述读数据链的数据单元进行整形,以释放所读取的数据使用的内存。

较佳地,所述抽象IO接口遵循SSL协议的IO接口标准,与SSL协议 兼容;

所述下层协议实体为专用TCP协议实体,所述非连续内存IO接口与所 述专用TCP协议兼容。

上述方案实现了SSL协议实体对非连续内存的访问,从而为SSL协议实 体与缺少SOCKET的下层协议实体对接提供了基础。而由于SSL协议实体 可以直接从非连续内存读取下层协议实体输出的数据,与SOCKET方式相 比,减少了内存拷贝,使得性能更好。此外,通过使用遵循SSL协议IO接 口标准的抽象IO接口,上层应用可以方便地与非连续内存IO接口绑定,从 而整体移植到无法使用SOCKET的平台上。

附图说明

图1是本发明实施例接口装置的结构示意图;

图2是本发明实施例SSL协议实体访问非连接内存的流程图;

图3是本发明实施例接口装置的模块示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图 对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本发 明中的实施例及实施例中的特征可以相互任意组合。

如图1所示,本实施例的接口装置包括抽象IO接口10和非连续内存IO 接口20,SSL协议实体(如OPENSSL协议实体)可以通过抽象IO接口10 调用非连续内存IO接口20,实现数据在SSL处理区(供SSL协议实体处理 的数据缓冲区)和非连续内存之间的传递。

SSL协议允许用户自定义SSL的IO接口,本实施例的抽象IO接口遵循 SSL协议的IO接口标准,与SSL协议兼容。上层应用通过SSL协议的API 就可以选择使用本发明的抽象IO接口,实现SSL协议实体与非连接内存IO 接口的对接,对上层应用的影响很小。

当下层协议实体支持非连续内存访问时,通过该接口装置就可以实现 SSL协议实体与下层协议实体之间的数据传输。如图所示,本实施例的下层 协议实体为专用TCP协议实体(缺少SOCKET的TCP协议实体),但本发 明不局限于此。专用TCP协议与非连续内存IO接口20兼容,可以直接调用 非连续内存IO接口20实现数据在TCP处理区(供专用TCP协议实体处理 的数据缓冲区)和非连接内存之间的传递。

如图2所示,本实施例SSL协议实体访问非连续内存的流程包括:

步骤110,SSL协议实体创建连接时,通过抽象IO接口调用非连续内存 IO接口创建写数据链和读数据链,及将该连接与所述读数据链和写数据链绑 定;

在一个通信连接建立过程中,各个协议层之间也要创建连接,将协议层 之间的接口打开,并将该连接与其使用的数据结构绑定。

本步骤可包括:SSL协议实体调用抽象IO接口以打开接口,以该连接 的连接标识为参数;抽象IO接口调用非连续内存IO接口创建读数据链和写 数据链,非连续内存IO接口完成读数据链和写数据链的创建后,将读数据 链的标识和写数据链的标识返回抽象IO接口;抽象IO接口保存连接标识与 读数据链的标识和写数据链的标识的对应关系,通知SSL协议实体打开接口 成功。

文中,数据单元包括头部和负载,其中,头部记载了数据单元承载的数 据的长度,负载即数据单元承载的数据。而读数据链和写数据链是数据单元 依次链接而成的使用非连续内存的数据结构,可以是单向链接(正向或反向), 也可以双向链接。在向链表插入数据单元之前,为每个数据单元分别申请内 存,故不同数据单元使用的内存可以是非连续的。

步骤120,SSL协议实体向下层协议实体发送SSL处理区中该连接的待 发送数据时,通过抽象IO接口调用非连续内存IO接口,将待发送数据承载 在数据单元中并插入写数据链;

本步骤可包括:SSL协议实体调用抽象IO接口发送所述待发送数据, 以该连接的连接标识和待发送数据的长度、地址信息为参数;抽象IO接口 查找到连接标识对应的写数据链的标识,调用非连续内存IO接口写数据, 以写数据链的标识和待发送数据的长度、地址信息为参数;非连续内存IO 接口根据待发送数据的长度申请内存,申请成功后,根据地址信息读取待发 送数据并添加相应的头部以生成数据单元,然后将生成的数据单元插入到写 数据链的尾部。

步骤130,SSL协议实体接收下层协议实体发送的该连接的数据时,通 过抽象IO接口调用非连续内存IO接口,将读数据链中数据单元承载的数据 读出并写入SSL处理区。

本步骤可包括:SSL协议实体调用抽象IO接口接收数据,以该连接的 连接标识、待读取数据长度和写入地址为参数;抽象IO接口查找到连接标 识对应的读数据链的标识,调用非连续内存IO接口读数据,以读数据链的 标识、待读取数据长度和写入地址为参数;非连续内存IO接口根据待读取 的数据长度,从读数据链头部的数据单元中读取相应长度的数据并根据写入 地址写入SSL处理区,然后对读数据链进行裁剪和/或对读数据链的数据单元 进行整形,以释放所读取的数据使用的内存。其中,读取的数据可能来自一 个数据单元,也可能来自多个数据单元,而一个数据单元可能只有部分数据 被读取,也可能全部数据已被读取。当读取的数据来自一个以上的数据单元 时,需要将数据已被全部读取的数据单元从读数据链上裁剪掉;而如果存在 部分数据被读取的数据单元,则需要对这些数据单元整形,包括:删除所述 数据单元负载部分中已被读取的部分数据,将所述数据单元头部记载的数据 长度改为剩余的部分数据的长度,以保证头部记载的数据单元长度与实际承 载的数据长度保持一致。

相应地,本实施例的SSL协议实体访问非连续内存的接口装置包括抽象 IO接口10和非连续内存IO接口20,如图3所示,其中:

抽象IO接口10用于根据SSL协议实体的指令,调用非连续内存IO接 口,完成写数据链和读数据链的创建并将读数据链和写数据链与相应连接绑 定,及完成该连接的数据在SSL处理区和读数据链、写数据链之间的传输;

非连续内存IO接口20用于根据抽象IO接口的指令,创建写数据链和 读数据链,及将该连接在SSL处理区的数据承载在数据单元中插入写数据链, 将读数据链中数据单元承载的数据读出并写入SSL处理区;

上述读数据链和写数据链是数据单元依次链接的非连续内存数据结构, 数据单元包括头部和负载,其中,头部记载了数据单元承载的数据的长度, 负载即数据单元承载的数据。

较佳地,抽象IO接口10包括:

抽象读接口101,用于在接收到SSL协议实体接收下层协议实体发送的 该连接的数据的第三指令后,根据其中的连接标识查找到对应的读数据链的 标识,然后调用所述非连续内存IO接口读数据,以所述读数据链的标识和 所述第三指令中的待接收数据长度、写入地址为参数。

接口管理单元102,用于在接收到SSL协议实体创建连接时打开接口的 第一指令后,调用非连续内存IO接口创建写数据链和读数据链,将所述非 连续内存IO接口返回的写数据链的标识和读数据链的标识与第一指令中的 连接标识对应保存,及通知所述SSL协议实体打开接口成功;

抽象写接口103,用于在接收到SSL协议实体向下层协议实体发送该连 接的待发送数据的第二指令后,根据其中的连接标识查找到对应的写数据链 的标识,然后调用所述非连续内存IO接口写数据,以所述写数据链的标识 和所述第二指令中的待发送数据的长度、地址信息为参数。

较佳地,非连续内存IO接口20包括实际读接口201、数据操作单元202 和实际写接口203,其中:

实际读接口201,用于根据抽象IO接口读数据的指令,调用数据操作单 元以执行读数据操作,以读数据链的标识和第三指令中的待接收数据长度、 写入地址为参数;

实际写接口203,用于根据抽象IO接口写数据的指令,调用数据操作单 元写数据,以写数据链的标识和待发送数据的长度、地址信息为参数;

数据操作单元202又包括:

数据链创建子单元,用于在接受到抽象IO接口创建写数据链和读数据 链的指令后,创建写数据链和读数据链,并将写数据链的标识和读数据链的 标识返回抽象IO接口;

写数据操作子单元,用于在接收到实际写接口写数据的指令后,根据待 发送数据的长度申请内存,申请成功后,根据地址信息读取待发送数据并添 加相应的头部以生成数据单元,然后将生成的数据单元插入到写数据链的尾 部;

读数据操作子单元,用于在接收到实际读接口读数据的指令后,根据待 读取的数据长度,从读数据链头部的数据单元中读取相应长度的数据并根据 写入地址写入SSL处理区,然后对读数据链进行裁剪和/或对读数据链的数据 单元进行整形,以释放所读取的数据使用的内存。

上述方案通过设计一套非连续内存IO接口以及适用于SSL的抽象IO接 口,实现了SSL协议实体对非连续内存的访问,从而为SSL协议实体与缺少 SOCKET的下层协议实体对接提供了基础。而由于SSL协议实体可以直接从 非连续内存读取下层协议实体输出的数据,与SOCKET方式相比,减少了内 存拷贝,并且具有比较稳定,效率更高的优点,使得性能更好。此外,通过 使用遵循SSL协议IO接口标准的抽象IO接口,上层应用可以方便地与非连 续内存IO接口绑定,从而整体移植到无法使用SOCKET的平台上,实现专 用TCP协议栈上的加密数据传输,同时最大限度的减少移植对OPENSSL以 及上层应用处理流程的影响。对于没有使用传统协议栈的网络设备来说显得 尤为重要。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序 来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读 存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用 一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采 用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于 任何特定形式的硬件和软件的结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本 领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和 原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护 范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号