CN102685243A - 一种轻量级tcp/ip协议栈的实现方法 - Google Patents
一种轻量级tcp/ip协议栈的实现方法 Download PDFInfo
- Publication number
- CN102685243A CN102685243A CN2012101613780A CN201210161378A CN102685243A CN 102685243 A CN102685243 A CN 102685243A CN 2012101613780 A CN2012101613780 A CN 2012101613780A CN 201210161378 A CN201210161378 A CN 201210161378A CN 102685243 A CN102685243 A CN 102685243A
- Authority
- CN
- China
- Prior art keywords
- protocol
- network
- protocol stack
- processing module
- implementation method
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提出了一种轻量级TCP/IP协议栈的实现方法,其包括如下步骤:首先,socket编程接口处理模块接收应用程序请求并对不兼容的应用程序请求进行格式转换;然后,TCP协议处理模块或UDP协议处理模块对网络数据包进行处理;再后,IP协议处理模块对网络数据包进行打包、拆包和分片;最后,对网卡驱动进行统一的数据抽象。本发明的轻量级TCP/IP协议栈的实现方法在专用操作系统的内核中实现轻量级的TCP/IP协议栈层,使得专用操作系统能够与其他通用操作系统进行网络通信,增强了系统的可扩展性。
Description
技术领域
本发明属于通信技术领域,涉及轻量级TCP/IP协议栈实现方法,特别涉及一种在专用操作系统中使用的轻量级TCP/IP协议栈的实现方法。
背景技术
TCP/IP协议栈的任务是在不同的机器之间进行数据通信,使数据传输不受地域的限制。在TCP/IP协议栈中包含有一系列构成互联网基础的网络协议。目前,TCP/IP协议栈已经被广泛应用在互联网中,成为了事实上的互联网通信标准。
TCP/IP协议栈中包含有多种协议来满足网络应用的不同需求,而在专用操作系统中,作为内核的组成部分,如何在专用操作系统的内核中实现轻量级的TCP/IP协议栈层,使得专用系统能够与其他通用操作系统进行网络通信是一个需要解决的技术问题。
发明内容
本发明旨在至少解决现有技术中存在的技术问题,特别创新地提出了一种轻量级TCP/IP协议栈的实现方法。
为了实现本发明的上述目的,本发明提供了一种轻量级TCP/IP协议栈的实现方法,其包括如下步骤:
S1:socket编程接口处理模块接收应用程序请求并对不兼容的应用程序请求进行格式转换;
S2:TCP协议处理模块或UDP协议处理模块对网络数据包进行处理;
S3:IP协议处理模块对网络数据包进行打包、拆包和分片;
S4:对网卡驱动进行统一的数据抽象。
本发明的轻量级TCP/IP协议栈的实现方法在专用操作系统的内核中实现轻量级的TCP/IP协议栈层,使得专用操作系统能够与其他通用操作系统进行网络通信,增强了系统的可扩展性。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明轻量级TCP/IP协议栈的实现方法流程图;
图2是本发明一种优选实施方式中协议组织架构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
本发明提出了一种轻量级TCP/IP协议栈的实现方法,如图1所示,该轻量级TCP/IP协议栈的实现方法包括如下步骤:
S1:socket编程接口处理模块接收应用程序请求并对不兼容的应用程序请求进行格式转换;
S2:TCP协议处理模块或UDP协议处理模块对网络数据包进行处理;
S3:IP协议处理模块对网络数据包进行打包、拆包和分片;
S4:对网卡驱动进行统一的数据抽象。
在本实施方式中,本发明的轻量级的TCP/IP协议栈包括IP协议,ICMP协议,ARP协议,TCP协议和UDP协议。同时,为了增强可扩展性和应用程序的兼容性,增加了socket转换层和网卡驱动抽象层。其中,socket转换层是为了符合通用的网络socket编程接口,兼容大多数的网络应用程序;网卡驱动抽象层是对网卡驱动的统一管理层。数据在该轻量级的TCP/IP协议栈中进行处理后将通过网卡驱动抽象层发送到具体的网卡设备上。
在步骤S1中,socket编程接口处理模块接收应用程序请求并对不兼容的应用程序请求进行格式转换,应用程序通过调用socket系统调用完成网络编程,Socket编程接口处理模块根据应用程序调用的系统调用及参数完成网络数据包的初始化及参数的设置。在本实施方式中,socket编程接口处理模块只处理协议族为PF_INET及PF_INET6,即TCP/IP协议族的请求,其他协议族的请求不支持。并且,只支持SOCK_STREAM参数(可靠的面向连接的服务)和SOCK_DGRAM(数据包服务)参数。当使用bind调用时,若没有指定具体绑定端口,则会自动分配一个10000端口以上的没有占用的端口作为默认端口。
socket编程接口处理模块对应用程序请求进行转换后,进入步骤S2,即TCP协议处理模块或UDP协议处理模块对网络数据包进行处理,数据处理流程将会分别调用TCP协议处理模块或UDP协议处理模块。当网络采用TCP传输方式后,socket将调用TCP协议处理模块进行数据处理,所述TCP协议处理模块实现正常的TCP流程的状态机、通过窗口大小来完成流量和拥塞控制;当网络采用UDP传输方式后,socket将调用UDP协议处理模块进行数据处理,所述UDP协议处理模块完成数据包的UDP协议封装。
然后,进行步骤S3,IP协议处理模块对网络数据包进行打包、拆包和分片。IP协议包括IPv4和IPv6两个版本,两个版本的协议处理调用通过socket接口参数进行选择,IP协议只实现了IP数据包的打包和拆包,支持IP数据包的分片机制,不支持IP转发机制。在本实施方式中,还利用ARP协议和ICMP协议辅助IP协议工作,其中,ARP协议对MAC地址和IP地址进行解析,ICMP协议对网络控制数据包进行发送和解析。
最后,进行步骤S4,对网卡驱动进行统一的数据抽象,由于网络设备所采用的网卡众多,网卡驱动千差万别,通过驱动的数据抽象来规范网卡驱动的统一化管理。这一步主要维护当前可用网卡设备,当网卡设备启用时,需要向该网卡驱动的数据抽象进行注册,并完成网卡驱动数据抽象同网卡驱动的连接;当需要发送的数据到达网卡驱动数据抽象层时,通过本地维护的路由表选择具体使用的网卡设备从而完成数据发送。
本发明的轻量级TCP/IP协议栈的实现方法在专用操作系统的内核中实现轻量级的TCP/IP协议栈层,使得专用操作系统能够与其他通用操作系统进行网络通信,增强了系统的可扩展性。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (9)
1.一种轻量级TCP/IP协议栈的实现方法,其特征在于,包括如下步骤:
S1:socket编程接口处理模块接收应用程序请求并对不兼容的应用程序请求进行格式转换;
S2:TCP协议处理模块或UDP协议处理模块对网络数据包进行处理;
S3:IP协议处理模块对网络数据包进行打包、拆包和分片;
S4:对网卡驱动进行统一的数据抽象。
2.如权利要求1所述的轻量级TCP/IP协议栈的实现方法,其特征在于,在所述步骤S1中,应用程序通过调用socket系统调用完成网络编程,Socket编程接口处理模块根据应用程序调用的系统调用及参数完成网络数据包的初始化及参数的设置。
3.如权利要求2所述的轻量级TCP/IP协议栈的实现方法,其特征在于,所述参数为CK_STREAM和SOCK_DGRAM参数。
4.如权利要求1所述的轻量级TCP/IP协议栈的实现方法,其特征在于,在所述步骤S1中,处理协议族为PF_INET及PF_INET6的请求,即TCP/IP协议族的请求。
5.如权利要求1所述的轻量级TCP/IP协议栈的实现方法,其特征在于,在所述步骤S1中,当使用bind调用时,若没有指定具体绑定端口,则会自动分配一个10000端口以上的没有占用的端口作为默认端口。
6.如权利要求1所述的轻量级TCP/IP协议栈的实现方法,其特征在于,在所述步骤S2中,当网络采用TCP传输方式后,socket将调用TCP协议处理模块进行数据处理,所述TCP协议处理模块实现正常的TCP流程的状态机、通过窗口大小来完成流量和拥塞控制;
当网络采用UDP传输方式后,socket将调用UDP协议处理模块进行数据处理,所述UDP协议处理模块完成数据包的UDP协议封装。
7.如权利要求1所述的轻量级TCP/IP协议栈的实现方法,其特征在于,在所述步骤S3中,IP协议包括IPv4和IPv6两个版本,两个版本的协议处理调用通过socket接口参数进行选择。
8.如权利要求1所述的轻量级TCP/IP协议栈的实现方法,其特征在于,在所述步骤S3中,利用ARP协议和ICMP协议辅助IP协议工作,所述ARP协议对MAC地址和IP地址进行解析,所述ICMP协议对网络控制数据包进行发送和解析。
9.如权利要求1所述的轻量级TCP/IP协议栈的实现方法,其特征在于,在所述步骤S4中,维护当前可用网卡设备,当所述网卡设备启用时,向所述网卡驱动数据抽象进行注册,并完成所述网卡驱动数据抽象同网卡驱动的连接;当需要发送的数据到达网卡驱动数据抽象层时,通过本地维护的路由表选择具体使用的网卡设备从而完成数据发送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210161378.0A CN102685243B (zh) | 2012-05-22 | 2012-05-22 | 一种轻量级tcp/ip协议栈的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210161378.0A CN102685243B (zh) | 2012-05-22 | 2012-05-22 | 一种轻量级tcp/ip协议栈的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102685243A true CN102685243A (zh) | 2012-09-19 |
CN102685243B CN102685243B (zh) | 2015-03-04 |
Family
ID=46816596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210161378.0A Active CN102685243B (zh) | 2012-05-22 | 2012-05-22 | 一种轻量级tcp/ip协议栈的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102685243B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103491000A (zh) * | 2013-09-17 | 2014-01-01 | 烽火通信科技股份有限公司 | 虚拟路由器冗余协议虚拟ip和mac的管理系统及方法 |
CN103997500A (zh) * | 2014-06-04 | 2014-08-20 | 西北工业大学 | 一种轻量级实时tcp/ip协议栈的实现方法 |
CN112019491A (zh) * | 2019-05-31 | 2020-12-01 | 烽火通信科技股份有限公司 | 一种报文处理方法及系统 |
CN112506674A (zh) * | 2019-09-16 | 2021-03-16 | 北京华耀科技有限公司 | Linux系统下用户态TCP/IP协议栈与本地应用通信的系统及方法 |
CN114726924A (zh) * | 2022-05-17 | 2022-07-08 | 北京安盟信息技术股份有限公司 | 一种基于tcp/ip协议栈特性提高网络带宽利用率方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101951378A (zh) * | 2010-09-26 | 2011-01-19 | 北京品源亚安科技有限公司 | 用于ssl vpn的协议栈体系结构及数据处理方法 |
CN102055774A (zh) * | 2009-11-10 | 2011-05-11 | 腾讯科技(深圳)有限公司 | 基于包处理的http服务器及其数据处理方法 |
-
2012
- 2012-05-22 CN CN201210161378.0A patent/CN102685243B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102055774A (zh) * | 2009-11-10 | 2011-05-11 | 腾讯科技(深圳)有限公司 | 基于包处理的http服务器及其数据处理方法 |
CN101951378A (zh) * | 2010-09-26 | 2011-01-19 | 北京品源亚安科技有限公司 | 用于ssl vpn的协议栈体系结构及数据处理方法 |
Non-Patent Citations (3)
Title |
---|
吕俊龙等: "《基于无线嵌入式系统的轻量级TCP/IP协议栈》", 《计算机工程与设计》, no. 24, 31 December 2010 (2010-12-31) * |
王新建: "《微操作系统中轻量级TCP/IP协议的研究与实现》", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 November 2006 (2006-11-15) * |
王新建等: "《轻量级TCP/IP协议中缓冲区与内存管理技术的研究与实现》", 《计算机与信息技术》, no. 11, 30 November 2005 (2005-11-30) * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103491000A (zh) * | 2013-09-17 | 2014-01-01 | 烽火通信科技股份有限公司 | 虚拟路由器冗余协议虚拟ip和mac的管理系统及方法 |
CN103491000B (zh) * | 2013-09-17 | 2016-09-28 | 烽火通信科技股份有限公司 | 虚拟路由器冗余协议虚拟ip和mac的管理系统及方法 |
CN103997500A (zh) * | 2014-06-04 | 2014-08-20 | 西北工业大学 | 一种轻量级实时tcp/ip协议栈的实现方法 |
CN112019491A (zh) * | 2019-05-31 | 2020-12-01 | 烽火通信科技股份有限公司 | 一种报文处理方法及系统 |
CN112019491B (zh) * | 2019-05-31 | 2022-09-13 | 烽火通信科技股份有限公司 | 一种报文处理方法及系统 |
CN112506674A (zh) * | 2019-09-16 | 2021-03-16 | 北京华耀科技有限公司 | Linux系统下用户态TCP/IP协议栈与本地应用通信的系统及方法 |
CN112506674B (zh) * | 2019-09-16 | 2024-02-02 | 北京华耀科技有限公司 | Linux系统下用户态TCP/IP协议栈与本地应用通信的系统及方法 |
CN114726924A (zh) * | 2022-05-17 | 2022-07-08 | 北京安盟信息技术股份有限公司 | 一种基于tcp/ip协议栈特性提高网络带宽利用率方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102685243B (zh) | 2015-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2712127A1 (en) | Interconnection method, device and system | |
CN102447627B (zh) | 报文封装和解封装的装置及方法 | |
CN102685243A (zh) | 一种轻量级tcp/ip协议栈的实现方法 | |
EP2885898B1 (en) | Method and system for virtual and physical network integration | |
EP2676523B1 (en) | Method and system of providing internet protocol (ip) data communication in a nfc peer to peer communication environment | |
CN104125191B (zh) | 基于以太网的点对点协议的处理方法、设备和系统 | |
US11936562B2 (en) | Virtual machine packet processing offload | |
WO2012033117A1 (ja) | ネットワークシステム、及びネットワーク管理方法 | |
EP3550799A1 (en) | Heterogeneous multi-protocol stack method, device and system | |
US20120054316A1 (en) | Tcp multiplexing over a proxy | |
WO2015143802A1 (zh) | 业务功能链处理方法及装置 | |
CN106209553A (zh) | 报文处理方法、设备及系统 | |
WO2014019205A1 (zh) | 处理数据报文的方法、装置及系统 | |
US20160028860A1 (en) | Method for parsing network packets having future defined tags | |
CN111510513B (zh) | 一种map-e链路加速方法、装置、存储介质及网络设备 | |
CN105162674A (zh) | 一种物理机访问虚拟网络的方法及网卡 | |
WO2007066752A1 (ja) | 中継装置及びクライアント機器とサーバとの接続方法 | |
WO2007136101A1 (ja) | 通信モジュール及びこの通信モジュールを備えたアプリケーションプログラム | |
WO2017080590A1 (en) | Technique for exchanging datagrams between application modules | |
CN101895529B (zh) | 一种在驱动层判断tcp/ip包所属进程的方法 | |
CN105898892A (zh) | 利用wifi probe请求以及响应包实现快速通信的方法 | |
KR101481410B1 (ko) | 메모리 카드 장치 | |
WO2014180213A1 (zh) | 一种tcp会话建立方法、装置、宿主节点和卫星节点 | |
CN109005150B (zh) | 基于以太网mac地址的无链接通信方法及系统 | |
CN105847136B (zh) | 一种支持多协议的无线传感网通信方法及IPv6网关 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |