[发明专利]一种协议栈和应用程序间传输数据的方法及装置有效
申请号: | 201310657148.8 | 申请日: | 2013-12-06 |
公开(公告)号: | CN103905420B | 公开(公告)日: | 2017-10-10 |
发明(设计)人: | 冯璐 | 申请(专利权)人: | 北京太一星晨信息技术有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06 |
代理公司: | 北京安信方达知识产权代理有限公司11262 | 代理人: | 王丹,栗若木 |
地址: | 100193 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 协议 应用程序 传输 数据 方法 装置 | ||
技术领域
本发明涉及网络领域,尤其涉及一种协议栈和应用程序间传输数据的方法及装置。
背景技术
目前比较常用的专用协议栈大致分为两种,一种是以linux或者FreeBSD标准协议栈为基础的商用专有协议栈,另一种是遵守TCP协议栈标准,按照某种系统框架进行修改而得出的开源的轻量级协议栈,最常见的能够移植商用的就是LWIP协议栈。其他的协议栈类似OpenTCP这些开源的协议栈大多适用于理论研究以及协议栈教学使用,其实现虽然提出一些比较实用的技术和概念,但缺乏一些具体实现方案,商业化难度较大。
传统TCP协议栈在接收和发送数据的时候至少存在有三次数据内存复制,报文从网卡接收到内核空间需要一次复制,内核空间传递到用户空间需要一次复制,从用户空间把数据交给应用程序需要一次复制;发送的过程与之类似。现有各种协议栈基本都是考虑到兼容各种不同的应用程序,因此协议栈中的一些内存复制操作其实是不可避免的,而内存复制是会造成一定的性能下降的。
目前LWIP协议栈由于其资源消耗小,处理流程实现简洁而被广泛使用在嵌入式的数据处理终端上,例如图像采集终端,可视化监控终端设备上。
LWIP协议栈使用mbuf(存储器缓存)作为接收和发送数据的数据载体来传递数据,虽然避免了从内核空间传递到用户空间这一次复制,但是仍然没有能够避免另外两次复制的发生。
发明内容
本发明的技术解决问题是如何在协议栈和应用程序间传输数据的过程中避免复制,提高处理性能。
为了解决上述问题,本发明提供了一种协议栈和应用程序间传输数据的方法,包括:
S101、接收应用程序发送给协议栈的单链表形式的第一数据;
S102、将所述第一数据中各数据块按照单链表的顺序依次映射到传输控制协议TCP段中,在一个TCP段中映射的数据块的长度小于或等于预定长度;所述映射是指将表示所述数据块在发送数据缓冲区中起止位置的信息写入所述TCP段;将映射得到的TCP段依次加入发送队列。
可选地,所述步骤S102包括:
S201、当接收到所述第一数据后,创建TCP段作为当前TCP段;
S202、将所述第一数据中未映射完成的数据块按照所述单链表的顺序依次映射到所述当前TCP段中,当映射到所述当前TCP段中的数据块的数据长度达到预定长度或所述第一数据已全部映射完成时进行步骤S203;
S203、将所述当前TCP段加入发送队列的末尾;
S204、判断所述第一数据中是否还存在未映射的数据块,如果不存在则指示映射结束;如果存在则进行步骤S205;
S205、创建新的TCP段,将新创建的TCP段的地址记录在所述当前TCP段中;将新创建的TCP段作为当前TCP段,返回步骤S202。
可选地,所述步骤S202包括:
S202A、在当前TCP段中创建分片,所述分片包括数据首地址和数据长度;创建分片后根据所述单链表的顺序,查找所述第一数据中第一个未映射完的数据块;将所查找到的数据块内未映射数据在发送缓冲区的起始地址写入所创建的分片的数据首地址;
S202B、比较该数据块内未映射数据的长度与当前TCP段的剩余长度;所述剩余长度为所述预定长度与所述当前TCP段中已映射的数据块的总长度之差;如果该数据块内未映射数据的长度小于所述剩余长度,则进行步骤S202C;如果该数据块内未映射数据的长度等于所述剩余长度,则将数据块的长度或所述剩余长度写入所创建的分片的数据长度,进行步骤S203;如果该数据块内未映射数据的长度大于所述剩余长度,则将所述剩余长度写入所创建的分片的数据长度,进行步骤S203;
S202C、将数据块内未映射数据的长度写入所创建的分片的数据长度;判断所述第一数据中是否还存在未映射的数据块,如果不存在则指示映射结束;如果存在则返回步骤S202A。
可选地,所述TCP段各包括一个用于描述本TCP段的结构体tcp_seg;所述tcp_seg包含本TCP段中所映射的数据块的数据总长度,其值等于该TCP段中所有分片的数据长度的总和;所述tcp_seg还包含本TCP段中第一个分片的地址;
所述将新创建的TCP段的地址记录在当前TCP段中的步骤包括:
将新创建的TCP段的tcp_seg的地址记录在当前TCP段的tcp_seg中;
所述分片还包括本TCP段中前一个和下一个分片的地址。
可选地,所述的方法还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京太一星晨信息技术有限公司,未经北京太一星晨信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310657148.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:水下螺母防护装置
- 下一篇:一种防范远控类木马病毒的方法及系统
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置