CN101325539A - 一种局域网内可靠通信的方法 - Google Patents

一种局域网内可靠通信的方法 Download PDF

Info

Publication number
CN101325539A
CN101325539A CNA2007101110850A CN200710111085A CN101325539A CN 101325539 A CN101325539 A CN 101325539A CN A2007101110850 A CNA2007101110850 A CN A2007101110850A CN 200710111085 A CN200710111085 A CN 200710111085A CN 101325539 A CN101325539 A CN 101325539A
Authority
CN
China
Prior art keywords
packet
communication unit
sequence number
link
wait
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
Application number
CNA2007101110850A
Other languages
English (en)
Other versions
CN101325539B (zh
Inventor
王新余
高克林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Global Innovation Polymerization LLC
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN2007101110850A priority Critical patent/CN101325539B/zh
Publication of CN101325539A publication Critical patent/CN101325539A/zh
Application granted granted Critical
Publication of CN101325539B publication Critical patent/CN101325539B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种局域网内可靠通信的方法,包括:第一通信单元与第二通信单元通过三次握手机制建立传输链路,第一通信单元判断应用进程提交的待发送的数据包是否需要进行拆包,若是,则将其拆分成若干个子包后发送给第二通信单元,否则,直接将其发送给第二通信单元,第二通信单元判断接收到的数据包的包序号与等待接收序号是否相同,若相同且该数据包未经过拆包处理,则直接将该数据包提交给应用进程,否则,在该数据包的包序号位于接收窗口内时,将该数据包存放到接收队列中。本发明使得局域网内的通信单元在进行通信时能够同时兼顾传输效率及传输可靠性。

Description

一种局域网内可靠通信的方法
技术领域
本发明涉及通信技术,尤其涉及一种局域网内可靠通信的方法。
背景技术
在网络通信中,两个通信单元之间进行通信时,为保证通信的可靠性,一般采用TCP(传输控制协议)协议。TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次握手才能建立起来,TCP协议通过三次握手,序列化应答和必要时重发数据包为应用程序提供了可靠的连接服务和传输流服务。TCP协议是在不可靠网络和协议上实现的高可靠性通信协议。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议,它是面向非连接的协议,“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。
在局域网内的网络通信中,由于局域网内部网络的结构较简单,不如城域网和广域网的网络结构复杂,因此其通信环境较好,丢包率和误码率较低。如果局域网内的通信单元之间采用TCP协议进行通信,虽然传输可靠性得到了保证,但其传输速度很慢,传输效率较低。而如果局域网内的通信单元之间采用UDP协议进行通信,则其传输的可靠性较差,无法保证不出现乱序包,重复包,丢包等现象。
发明内容
本发明提供一种局域网内可靠通信的方法,使得局域网内的通信单元在进行通信时能够同时兼顾传输效率及传输可靠性。
一种局域网内可靠通信的方法,包括步骤:
A、第一通信单元与第二通信单元通过三次握手机制实现发送序号和接收序号的同步,完成传输链路的建立;
B、第一通信单元判断应用进程提交的待发送的数据包是否需要进行拆包,若是,则将其拆分成若干个子包后发送给第二通信单元,否则,直接将其发送给给第二通信单元;
C、第二通信单元判断接收到的数据包的包序号与等待接收序号是否相同,若相同且该数据包未经过拆包处理,则直接将该数据包提交给应用进程,否则,在该数据包的包序号位于接收窗口内时,将该数据包存放到接收队列中。
较佳的,所述步骤A具体包括步骤:
链路在初始态时,第一通信单元对链路结构进行初始化操作,初始化完成后向第二通信单元发送同步包;
第二通信单元从收到的同步包中获取第一通信单元的发送序号,将该序号加一后赋予等待接收序号,然后向第一通信单元返回同步包,链路进入同步态;
第一通信单元从接收到的同步包获取第二通信单元的发送序号,将该序号加一后赋予等待接收序号,然后向第二通信单元返回应答包;
第二通信单元从接收到的应答包中获取第一通信单元的发送序号,将其赋予等待接收序号,链路进入完成态。
较佳的,所述链路在完成态时,当空闲时长超过第一预设时长时,通信单元通过发送同步包检测链路的可用性;
若间隔第二预设时长后仍没有收到针对所述同步包的应答包,则将等待发送队列中的数据包和接收队列中的数据包清除,进行链路重建。
较佳的,所述链路在完成态时,若通信单元收到的同步包的序号与等待接收序号不一致,则将等待发送队列中的数据包和接收队列中的数据包清除,进行链路重建。
较佳的,所述拆包后的各子包包头的包类型中设置有拆包标志。
较佳的,所述步骤C中,当接收到的数据包的包序号与等待接收序号不同时,若数据包的包序号不在接收窗口内,则将该数据包丢弃;
当接收到的数据包的包序号与等待接收序号相同,但该数据包为拆分后的子包,则将该数据包存放到接收队列中,待全部子包接收完成后,根据其包头中携带的拆包标志对其进行组包处理。
较佳的,所述步骤C中还包括步骤:
第二通信单元将数据包提交给应用进程后,将等待接收序号加一;
第二通信单元判断接收队列中是否存在包序号与当前等待接收序号相同的数据包,若存在,则将该数据包提交给应用进程,将等待接收序号加一,重复执行本步骤,否则,等待接收第一通信单元发出的数据包。
较佳的,所述步骤C中,若当前链路的包传输速率小于第一阈值,则第二通信单元每接到一个数据包即向第一通信单元返回相应的应答包,或者在未应答的数据包的累计值达到第三阈值时向第一通信单元返回相应的应答包;
若当前链路的包传输速率大于第二阈值,则第二通信单元每间隔预设时长向第一通信单元返回一个应答包,或者在未应答的数据包的累计值达到第四阈值时向第一通信单元返回相应的应答包;
其中第一阈值小于第二阈值,第三阈值小于第四阈值。
较佳的,所述第一通信单元收到对数据包的应答包时,判断应答包的序号是否在等待应答范围内,若是,将该数据包从等待应答队列中删除,否则,丢弃该应答包。
较佳的,链路在完成态时,在发送数据包同时,需设置相应的应答等待时长,若应答等待时长超时后仍没有收到相应的应答包,则重发该数据包,并将包重发计数值加一。
较佳的,所述重发计数值大于预设数值时,第一通信单元与第二通信单元进行链路重建。
较佳的,链路在完成态时,当成功发送一个非重发的数据包时,将发送窗口的值增加第一预设值,将重发超时时长减少第二预设值,当数据包超时重发时,将发送窗口的值减少第三预设值,将等待应答时长增加第四预设值。
本发明方法依据局域网内通信环境的特点,在UDP协议基础上移植了TCP协议的高效和可靠性控制,与现有技术相比,使得局域网内的通信单元在进行通信时能够同时兼顾传输效率及传输可靠性,大大降低了通信单元在满负荷工作时的CPU占有率,提高局域网内通信单元的通信能力。
附图说明
图1为本发明局域网内可靠通信的方法的流程图;
图2为本发明中通信单元之间建立传输链路的流程图;
图3为本发明中发送方通信单元对欲发送的数据包进行处理的的流程图;
图4为本发明中通过调用链路的发送队列发送过程进行数据包发送的流程图;
图5为本发明中接收方通信单元接收数据包的流程图。
具体实施方式
本发明依据局域网内通信环境的特点,在UDP协议基础上移植了TCP协议的高效和可靠性控制,大大降低了通信单元的CPU占有率,实现了一种在局域网内高效安全可靠的通信方法,提高局域网内通信单元的通信能力。
下面结合各个附图对本发明的具体实施过程进行进一步详细的说明。
本发明中通信单元的通信链路有三种状态,分别是:初始态(INIT_STATE),同步态(SYN_STATE)和完成态(FIN_STATE)。其中通信单元启动时链路状态为初始态,同步态用于与对端同步双方包序号,包序号同步完成后,通信链路进入完成态。在初始态和同步态,链路不能接收数据包。
在通信链路上,有三种包类型:分别是同步包(SYN_PACKAGE)、数据包(DATA_PACKAGE)和应答包(ACK_PACKAGE),下面分别对其予以说明:
同步包在开始建链时发送,用于向通信对端告诉本端的起始发送序号,在链路空闲超过预设时间(如2秒)后,也会发送同步包,用于检测链路;
数据包用于携带应用数据,当数据包的长度大于预设长度时,需要将其拆分为若干个子包后发送;
在链路进入完成态后,通信单元收到对端发送的数据包或同步包后,向对端返回应答包。
本发明中链路传输的同步包、数据包和应答包使用统一的包头结构,如下:
typedef struct
{
   long package_no;            /*发送包序号*/
   long package_ack;           /*对应答的包序号*/
   unsigned short sunit_no;    /*通信单元编号*/
   unsigned short package_type;/*包类型*/
   unsigned short bufflen;     /*内容长度*/
}packagehead;
其中,同步包和数据包在发送时都占一个发送序号,而应答包不占序号,大数据包在经过拆包后,每个子包也各占用一个序号。数据包拆包的标志使用位域方式来标识,没有拆包的数据包的包类型为DATA_PACKAGE,而数据拆包后第一个子包的包类型值为DATA_PACKAGE|SPLIT_START,中间子包的包类型值为DATA_PACKAGE|SPLIT_FLAG,最后一个子包的包类型值为DATA_PACKAGE|SPLIT_END。内容长度用于指示链路包所携带的数据长度,不含包头,对于同步包和应答包,其值为0。
本发明中定义的链路包发送队列的结构如下:
typedef struct
{
   unsigned char rescount;/*重发计数*/
   unsigned short timelen;/*重发剩余时长*/
   unsigned char*buff;    /*内容缓冲区*/
}udpsque;
发送队列结构中的重发计数(rescount)用于记录链路包的重复发送次数,如果一个包(包括数据包和同步包)重发次数超过预设次数(如6次),则认为该链路异常,需要重新建立链接。重发剩余时长(timelen)是一个链路包在链路上发出后,等待对端应答的最大时长,超过该时长后就将该包重发,同时将重发计数(rescount)加1。内容缓冲区(buff)用于保存发送信息的指针,包括包头和包内容。
本发明中定义的链路包接收队列的结构如下:
typedef struct
{
   unsigned char*buff;    /*内容缓冲区*/
}udprque;
接收队列中内容缓冲区(buff)用于保存从网络上接收信息的指针,包括包头和包内容。
本发明中定义的链路结构如下:
typedef struct
{
   unsigned short state;        /*链路状态*/
   struct sockaddr_in PeerAddr; /*对端通信单元IP地址*/
   unsigned short timeout_len;  /*重发超时时长*/
   unsigned short swindow;      /*发送窗口大小*/
   long           snext_no;     /*等待发送序号*/
   long           sunack_no;    /*等待应答序号*/
   unsigned short rwindow;      /*接收窗口大小*/
   long          rnext_no;      /*下一个接收包序号*/
   /*发送队列*/
   unsigned short sendque_len;  /*发送队列长度*/
   unsigned short sendque_start;/*开始位置,已发送未应答位置*/
   unsigned short sendque_snext;/*等待发送位置*/
   unsigned short sendque_end;  /*结束位置*/
   udpsque sendque[MAX_UDP_QUEUE];
   /*接收队列*/
   unsigned short recvque_len;  /*接收队列长度*/
   unsigned short recvque_start;/*起始位置*/
   unsigned short recvque_end;  /*结束位置*/
   udprque recvque[MAX_UDP_QUEUE];
}udplink;
链路结构中的重发超时时长(timeout_len)和发送窗口大小(swindow)用于拥塞控制。接收窗口(rwindows)为固定值,为发送窗口的最大值。发送队列用于临时存放需要应答的包,队列由3部分组成:1)空白部分,没有存放数据,从结束位置(sendque_end)开始到开始位置(sendque_start);2)未发送部分,还没有在链路上发出的包,从等待发送位置(sendque_snext)开始到结束位置(sendque_end);3)等待应答部分,已在链路上发出等待对方应答,从开始位置(sendque_start)开始到等待发送位置(sendque_snext)。接收队列用于存放从链路层接收到的还没有提交给应用层的包,有两种情况的链路包需要入队列:1)经过分拆的数据包,将各子包存放在相应的接收队列中,待全部子包接收完成后,再进行组包;2)乱序的包,后面的包先收到,将其存放到接收队列中,等待前面的包收到后,再处理提交。
请参阅图1,该图为本发明局域网内可靠通信的方法的流程图,其主要包括步骤:
步骤10、通信单元启动时,创建本端通信的套接字(SOCKET),用于发送和接收数据,对链路结构进行清零操作,通信链路进入初始态,启动建链过程。
本发明中可为每个通信单元分配一个序号,或利用通信单元配置的IP地址中的主机标识计算出通信单元的序号。
本实施例中采取大序号通信单元主动向小序号通信单元发起建链,小序号通信单元被动应答的建链策略,下述第一通信单元为大序号通信单元,第二通信单元为小序号通信单元。
步骤11、第一通信单元与第二通信单元通过三次握手机制实现发送序号和接收序号的同步,完成传输链路的建立。
局域网内通信单元间的链路建立使用三次握手机制,通过发送同步包和应答包实现。请参阅图2,该图为本发明中通信单元之间建立传输链路的流程图,其主要实现过程如下:
1)链路在初始态时,第一通信单元对链路结构进行初始化操作,初始化完成后向第二通信单元发送同步包;
第一通信单元对链路结构进行初始化操作的具体过程为:第一通信单元获取第二通信单元的IP地址,将发送窗口(swindow)置预设值(如1),重发超时时长(timeout_len)置预设值(如2秒),预置本端链路结构的发送序号(snext_no)为随机值,并把该值赋给等待应答序号(sunack_no),下一个接收包序号(rnext_no)置为-1,表示未与对端同步序号,将接收窗口(rwindow)的值设置为发送窗口(swindow)的最大值(如100),对发送队列和接收队列进行初始化。
2)第二通信单元从收到的同步包中获取第一通信单元的发送序号,将该序号加一后赋予链路结构的等待接收序号(rnext_no),然后向第一通信单元返回同步包,链路进入同步态。
3)第一通信单元从接收到的同步包获取第二通信单元的发送序号,将该序号加一后赋予链路结构中的等待接收序号(rnext_no),然后向第二通信单元返回应答包。
4)第二通信单元从接收到的应答包中获取第一通信单元的发送序号,将其赋予链路结构中的等待接收序号(rnext_no),链路进入完成态。
步骤12、第一通信单元向第二通信单元发送数据包,同时设定相应的应答等待时长;
请参阅图3,该图为本发明中发送方通信单元对欲发送的数据包进行处理的的流程图,其具体实现过程为:
步骤120、第一通信单元中的应用进程要发送数据包时,调用协议层接口函数,接口函数先判断链路状态是否为完成态,若是,执行步骤122,否则,执行步骤121;
步骤121、接口函数向应用进程返回失败消息;
步骤122、接口函数判断应用进程提交的待发送的数据包的长度是否大于预设的长度MAX_PACKET_UNIT,若是,执行步骤125,否则,执行步骤123;
步骤123、申请数据包长度的缓冲区,把包类型(package_type)置为数据包类型,通信单元编号(sunit_no)置为本端编号;
步骤124、将数据包添加到发送队列尾,通过调用链路的发送队列发送过程进行数据包的发送;
步骤125、接口函数对数据包进行拆包处理,将其拆分成若干个子包,并在各子包包头的包类型中设置拆包标志,其中拆包后第一个子包的包类型值为DATA_PACKAGE|SPLIT_START,中间子包的包类型值为DATA_PACKAGE|SPLIT_FLAG,最后一个子包的包类型值为DATA_PACKAGE|SPLIT_END、以便第二通信单元接收到包时,能够进行组包处理;
步骤126、为各个子包申请缓冲区,把包类型(package_type)置为数据包类型,通信单元编号(sunit_no)为本端编号,其中起始子包和中间子包的内容长度为MAX_PACKET_UNIT减去包头长度,结束包的内容长度为剩余长度;
步骤127、将各个子包依次添加到发送队列尾,通过调用链路的发送队列发送过程进行数据包的发送。
请参阅图4,该图为本发明中通过调用链路的发送队列发送过程进行数据包发送的流程图,主要包括步骤:
步骤220、通过判断发送队列中的等待发送位置(sendque_snext)是否和队列尾位置(sendque_end)相等确定发送队列中是否有数据包未发送,若是,则返回,否则,执行下一步骤;
步骤221、通过判断发送队列中已发送未应答数据包的数目是否超过链路当前的发送窗口(swindow)确定发送窗口是否已满,所述已发送未应答数据包的数目为发送队列起始位置(sendque_start)和等待发送位置(sendque_snext)之间的包数目,若是,则返回,否则,执行下一步骤;
步骤222、对包头置上包序号和应答序号,从SOCKET发送出去。
步骤223、将发送队列的重发计数置1,将重发剩余时长置为链路结构中的重发超时时长,将链路结构的发送序号加1,将发送队列中的等待发送位置(sendque_snext)指向下一个位置。
步骤13、第二通信单元接收第一通信单元发出的数据包;
请参阅图5,该图为本发明中接收方通信单元接收数据包的流程图,其具体过程为:
步骤130、判断接收到的数据包的包序号(package_no)与等待接收序号(rnext_no)是否相同,若相同,执行步骤133,否则,执行步骤131;
步骤131、判断接收到的数据包的包序号是否在接收窗口内,若是,执行步骤132,否则,将该数据包丢弃;
步骤132、将该数据包存放到接收队列中。
步骤133、判断所述数据包是否经过拆包处理,若是,执行步骤132,否则,执行步骤134;
步骤134、将该数据包提交给应用进程,将等待接收序号(rnext_no)加一;
步骤135、判断接收队列中是否存在包序号与当前等待接收序号(rnext_no)相同的数据包,若存在,则返回步骤134,否则,执行步骤136;
步骤136、等待接收第一通信单元发出的数据包。
步骤14、第二通信单元在第一通信单元的应答等待时长超时前向第一通信单元返回应答包;
若当前链路的包传输速率小于第一阈值,则第二通信单元每接到一个数据包即向第一通信单元返回相应的应答包,或者在未应答的数据包的累计值达到第三阈值时向第一通信单元返回相应的应答包;
若当前链路的包传输速率大于第二阈值,则第二通信单元每间隔预设时长向第一通信单元返回一个应答包,或者在未应答的数据包的累计值达到第四阈值时向第一通信单元返回相应的应答包;
其中第一阈值小于第二阈值,第三阈值小于第四阈值。
发送应答包时,将包类型(package_type)置为应答包类型,内存长度(bufflen)置为0,通信单元编号(sunit_no)置为本端编号,把链路结构中等待发送序号(snext_no)赋给发送包序号(package_no),链路结构中下一个接收包序号(rnext_no)赋给对应答的包序号(package_ack),然后直接将应答包从SOCKET发送出去即可。
步骤15、第一通信单元接收应答包;
第一通信单元在接收到对数据包的应答包时,应判断应答包的序号(package_ack)是否在等待应答范围内,即(package_ack)在链路的等待应答序号(sunack_no)和等待发送序号(snext_no)之间,若是,则将该数据包从等待应答队列中删除,否则,丢弃该应答包。
若第一通信单元在应答等待时长超时后仍没有收到相应的应答包,则重发该数据包,并将包重发计数值加一,当所述重发计数值大于预设数值时,第一通信单元与第二通信单元进行链路重建。
本发明所述方法中,两种情况下需要发送同步包,第一种情况时在链路建立时;第二中情况是在链路处于完成态时,当链路空闲超过第一预设时长(如2秒)后,需要通过发送同步包检测链路的可用性,这两种情况下均要求发送队列为空。
上述第二种情况下发送同步包时,可采用由大序号通信单元向小序号通信单元发送同步包的同步包发送机制,若间隔第二预设时长(如10秒)后大序号通信单元仍没有收到针对所述同步包的应答包,则说明链路异常,大序号通信单元将等待发送队列中的数据包和接收队列中的数据包清除后,进行链路重建。
所述链路在完成态时,若通信单元收到的同步包的序号与等待接收序号不一致,则将等待发送队列中的数据包和接收队列中的数据包清除后,进行链路重建。
本发明中发送同步包的主要实现过程为:
步骤301、判断发送队列是否为空,若是,执行步骤302,否则,直接返回;
步骤302、申请包头结构(packagehead)长度的缓冲区,把包类型(package_type)设置为同步包类型,内存长度(bufflen)置零,通信单元编号(sunit_no)设置为本端编号,把等待发送序号(snext_no)赋予发送包序号(package_no),将下一个接收包序号(rnext_no)赋予对应答的包序号(package_ack);
步骤303、将同步包添加到发送队列中,调用链路发送该同步包。
本发明通过链路结构中的重发超时时长(timeout_len)字段和发送窗口(swindow)字段实现拥塞控制。其中发送窗口(swindow)用于控制向链路上同时发送数据包不必马上等待应答包的数目;重发超时时长(timeout_len)用于控制包重发的时间长度,值越大等待的时间越长。链路刚建立时,发送窗口大小为初始值(如1),重发超时时长为UDP_NORMALRXT(2秒)。在发送成功一个没有重发的数据包时,将发送窗口的值增加第一预设值(如1),将重发超时时长减少第二预设值(如200ms),当数据包超时重发时,将发送窗口的值减少第三预设值(如5),将等待应答时长增加第四预设值(如400ms)。
链路在完成态时,当成功发送一个非重发的数据包时,将发送窗口的值增加第一预设值,将重发超时时长减少第二预设值,当数据包超时重发时,将发送窗口的值减少第三预设值,将等待应答时长增加第四预设值。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (12)

1、一种局域网内可靠通信的方法,其特征在于,包括步骤:
A、第一通信单元与第二通信单元通过三次握手机制实现发送序号和接收序号的同步,完成传输链路的建立;
B、第一通信单元判断应用进程提交的待发送的数据包是否需要进行拆包,若是,则将其拆分成若干个子包后发送给第二通信单元,否则,直接将其发送给给第二通信单元;
C、第二通信单元判断接收到的数据包的包序号与等待接收序号是否相同,若相同且该数据包未经过拆包处理,则直接将该数据包提交给应用进程,否则,在该数据包的包序号位于接收窗口内时,将该数据包存放到接收队列中。
2、如权利要求1所述的方法,其特征在于,所述步骤A具体包括步骤:
链路在初始态时,第一通信单元对链路结构进行初始化操作,初始化完成后向第二通信单元发送同步包;
第二通信单元从收到的同步包中获取第一通信单元的发送序号,将该序号加一后赋予等待接收序号,然后向第一通信单元返回同步包,链路进入同步态;
第一通信单元从接收到的同步包获取第二通信单元的发送序号,将该序号加一后赋予等待接收序号,然后向第二通信单元返回应答包;
第二通信单元从接收到的应答包中获取第一通信单元的发送序号,将其赋予等待接收序号,链路进入完成态。
3、如权利要求1所述的方法,其特征在于,所述链路在完成态时,当空闲时长超过第一预设时长时,通信单元通过发送同步包检测链路的可用性;
若间隔第二预设时长后仍没有收到针对所述同步包的应答包,则将等待发送队列中的数据包和接收队列中的数据包清除,进行链路重建。
4、如权利要求1所述的方法,其特征在于,所述链路在完成态时,若通信单元收到的同步包的序号与等待接收序号不一致,则将等待发送队列中的数据包和接收队列中的数据包清除,进行链路重建。
5、如权利要求1所述的方法,其特征在于,所述拆包后的各子包包头的包类型中设置有拆包标志。
6、如权利要求5所述的方法,其特征在于,所述步骤C中,当接收到的数据包的包序号与等待接收序号不同时,若数据包的包序号不在接收窗口内,则将该数据包丢弃;
当接收到的数据包的包序号与等待接收序号相同,但该数据包为拆分后的子包,则将该数据包存放到接收队列中,待全部子包接收完成后,根据其包头中携带的拆包标志对其进行组包处理。
7、如权利要求6所述的方法,其特征在于,所述步骤C中还包括步骤:
第二通信单元将数据包提交给应用进程后,将等待接收序号加一;
第二通信单元判断接收队列中是否存在包序号与当前等待接收序号相同的数据包,若存在,则将该数据包提交给应用进程,将等待接收序号加一,重复执行本步骤,否则,等待接收第一通信单元发出的数据包。
8、如权利要求1所述的方法,其特征在于,所述步骤C中,若当前链路的包传输速率小于第一阈值,则第二通信单元每接到一个数据包即向第一通信单元返回相应的应答包,或者在未应答的数据包的累计值达到第三阈值时向第一通信单元返回相应的应答包;
若当前链路的包传输速率大于第二阈值,则第二通信单元每间隔预设时长向第一通信单元返回一个应答包,或者在未应答的数据包的累计值达到第四阈值时向第一通信单元返回相应的应答包;
其中第一阈值小于第二阈值,第三阈值小于第四阈值。
9、如权利要求8所述的方法,其特征在于,所述第一通信单元收到对数据包的应答包时,判断应答包的序号是否在等待应答范围内,若是,将该数据包从等待应答队列中删除,否则,丢弃该应答包。
10、如权利要求1所述的方法,其特征在于,链路在完成态时,在发送数据包同时,需设置相应的应答等待时长,若应答等待时长超时后仍没有收到相应的应答包,则重发该数据包,并将包重发计数值加一。
11、如权利要求1所述的方法,其特征在于,所述重发计数值大于预设数值时,第一通信单元与第二通信单元进行链路重建。
12、如权利要求1所述的方法,其特征在于,链路在完成态时,当成功发送一个非重发的数据包时,将发送窗口的值增加第一预设值,将重发超时时长减少第二预设值,当数据包超时重发时,将发送窗口的值减少第三预设值,将等待应答时长增加第四预设值。
CN2007101110850A 2007-06-15 2007-06-15 一种局域网内可靠通信的方法 Expired - Fee Related CN101325539B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007101110850A CN101325539B (zh) 2007-06-15 2007-06-15 一种局域网内可靠通信的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007101110850A CN101325539B (zh) 2007-06-15 2007-06-15 一种局域网内可靠通信的方法

Publications (2)

Publication Number Publication Date
CN101325539A true CN101325539A (zh) 2008-12-17
CN101325539B CN101325539B (zh) 2012-01-11

Family

ID=40188877

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101110850A Expired - Fee Related CN101325539B (zh) 2007-06-15 2007-06-15 一种局域网内可靠通信的方法

Country Status (1)

Country Link
CN (1) CN101325539B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102325084A (zh) * 2011-07-21 2012-01-18 航天科工深圳(集团)有限公司 一种iec104通讯规约转发中实现数据交换的方法及系统
CN102823207A (zh) * 2012-05-18 2012-12-12 华为技术有限公司 一种数据包的转发方法和设备
CN104079371A (zh) * 2013-03-27 2014-10-01 成都鼎桥通信技术有限公司 一种数据通信方法、设备及系统
CN105263165A (zh) * 2015-09-08 2016-01-20 天津光电聚能专用通信设备有限公司 一种基于fpga的网络数据连包拆分方法
CN107370639A (zh) * 2017-08-14 2017-11-21 苏州众天力信息科技有限公司 一种基于梯形时间算法的网关多场景控制方法
CN112165355A (zh) * 2020-10-23 2021-01-01 中国电子科技集团公司第三十研究所 一种面向卫星网络的基于udp的可靠数据传输方法
CN113467413A (zh) * 2021-06-16 2021-10-01 深圳市道通科技股份有限公司 一种检测汽车故障的方法、检测设备及检测系统
CN114356825A (zh) * 2021-12-17 2022-04-15 郑州信大捷安信息技术股份有限公司 一种基于芯片的spi双路通信方法和系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100484052C (zh) * 1999-07-09 2009-04-29 马利布网络有限公司 无线点对多点通信系统及在其中分配共享无线带宽的方法
CN1326347C (zh) * 2002-12-30 2007-07-11 成都三零盛安信息系统有限公司 一种网络环境中实现多级安全访问控制的技术方法
CN100459611C (zh) * 2004-08-06 2009-02-04 华为技术有限公司 超文本传输协议服务的安全管理方法

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102325084A (zh) * 2011-07-21 2012-01-18 航天科工深圳(集团)有限公司 一种iec104通讯规约转发中实现数据交换的方法及系统
CN102325084B (zh) * 2011-07-21 2014-04-02 航天科工深圳(集团)有限公司 一种iec104通讯规约转发中实现数据交换的方法及系统
CN102823207A (zh) * 2012-05-18 2012-12-12 华为技术有限公司 一种数据包的转发方法和设备
CN104079371B (zh) * 2013-03-27 2018-05-08 成都鼎桥通信技术有限公司 一种数据通信方法、设备及系统
CN104079371A (zh) * 2013-03-27 2014-10-01 成都鼎桥通信技术有限公司 一种数据通信方法、设备及系统
CN105263165A (zh) * 2015-09-08 2016-01-20 天津光电聚能专用通信设备有限公司 一种基于fpga的网络数据连包拆分方法
CN105263165B (zh) * 2015-09-08 2019-01-29 天津光电聚能专用通信设备有限公司 一种基于fpga的网络数据连包拆分方法
CN107370639A (zh) * 2017-08-14 2017-11-21 苏州众天力信息科技有限公司 一种基于梯形时间算法的网关多场景控制方法
CN112165355A (zh) * 2020-10-23 2021-01-01 中国电子科技集团公司第三十研究所 一种面向卫星网络的基于udp的可靠数据传输方法
CN112165355B (zh) * 2020-10-23 2022-03-22 中国电子科技集团公司第三十研究所 一种面向卫星网络的基于udp的可靠数据传输方法
CN113467413A (zh) * 2021-06-16 2021-10-01 深圳市道通科技股份有限公司 一种检测汽车故障的方法、检测设备及检测系统
CN114356825A (zh) * 2021-12-17 2022-04-15 郑州信大捷安信息技术股份有限公司 一种基于芯片的spi双路通信方法和系统
CN114356825B (zh) * 2021-12-17 2024-02-13 郑州信大捷安信息技术股份有限公司 一种基于芯片的spi双路通信方法和系统

Also Published As

Publication number Publication date
CN101325539B (zh) 2012-01-11

Similar Documents

Publication Publication Date Title
CN101325539B (zh) 一种局域网内可靠通信的方法
US9325810B2 (en) Thin network protocol
CN102217258B (zh) 探测处理方法、数据发送端、数据接收端以及通信系统
US20020054570A1 (en) Data communication system, data communication method, and recording medium with data communication program recorded thereon
CN108881008A (zh) 一种数据传输的方法、装置和系统
KR102046792B1 (ko) 송신 노드로부터 목적지 노드로의 데이터 전송 방법
CN106210924B (zh) 视频网络传输控制方法和系统
CN107204834A (zh) 一种基于udt协议的高速网络可靠传输的控制方法
JP4648457B2 (ja) 適当な通信プロトコルを用いてメッセージ送信を提供する方法
CN105530686B (zh) 一种基于udp协议实现智能车载终端的接入方法
WO2008092242A1 (en) Improved data transfer method, system and protocol
CN102694810B (zh) 一种卫星网络tcp地面加速方法
CN107743057A (zh) 一种数据传输系统和方法
KR100804082B1 (ko) 통신 구축동안 중복 협상들을 회피하기 위한 방법 및 장치
CN108234087A (zh) 数据传输方法及发送端
CN100428745C (zh) 一种数据的传输方法和装置
US8943362B2 (en) Control and monitoring for fast millimeter-wave link using out-of-band wireless channel
CN100442755C (zh) 一种保证通用路由封装隧道传输可靠的方法
CN101605128A (zh) Linux主从设备通过以太网接口进行通信的方法
CN109067506A (zh) 一种基于多滑动窗口并发的轻量级异步消息实现方法
WO2013152614A1 (zh) 一种基于应用层数据的网络接入系统和方法
CN116963175A (zh) 数据传输方法、装置及系统
JPH1070523A (ja) パケット伝送方法及び装置
EP1505759A2 (en) Method and device for transmitting/receiving data using acknowledged transport layer protocols
Fang et al. Design and implementation of embedded rudp

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
TR01 Transfer of patent right

Effective date of registration: 20180705

Address after: California, USA

Patentee after: Global innovation polymerization LLC

Address before: 518057 Nanshan District high tech Industrial Park, Shenzhen, Guangdong, Ministry of justice, Zhongxing Road, South China road.

Patentee before: ZTE Corp.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120111

CF01 Termination of patent right due to non-payment of annual fee