自组织网络中的短报文可靠传输方法技术

技术编号:3545571 阅读:250 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种Ad  Hoc网络中可靠地传输数据的方法,通过syn、data-ack和fin报文实现可靠传输,在发送方与接收方之间建立连接,接收方无需等待漫长的三次握手即可接收数据,收发双方采用data-ack交互方式进行通信,实现报文的发送,发送方在最后一包数据投递完毕后,即可发出连接关闭请求报文,接收方收到关闭请求后,启动关闭过程。应用本发明专利技术,能够实现减小报文数量,大幅减小连接建立的延迟与网络开销,并且根据实际使用的网络特性来配置报文格式,从而节省了网络开销;同时,减少了协议实现中使用的线程数目,提高了系统执行效率。

【技术实现步骤摘要】

本专利技术属于网络通信
,特别是指一种自组织网络中可靠的传输数据的方法。
技术介绍
Ad Hoc网络是不依赖于网络基础设施,节点之间通过无线通信相互协作进行路由,临时构成的一种多跳无线通信网络。由于Ad Hoc网络具有很高的生存能力和灵活性,故被广泛应用于军事、工业、商业、医疗、家庭、办公环境等领域,其典型应用场合包括军事通信、紧急搜救、移动会议、无线家庭网络、传感器网络等。作为Ad Hoc网络中必须解决的关键技术难题之一,传输层协议的主要任务包括可靠传输和拥塞控制。在传统网络中,TCP承担了Internet上网络传输总字节数的95%及总数据报文数的90%,其实现版本也异常丰富,从TCP-Tahoe,TCP-Reno,TCP-NewReno到TCP-Vegas,TCP-Veno,FAST-TCP。然而,当把传统网络中的TCP直接应用到无线网络中时,由于无线网络具有很高的差错率及移动性等异于有线网络的特点,其性能损失很大,具体表现为:过大的连接开销与建立延时问题,基于报文丢失的拥塞指示问题,网络分离后的TCP超时指数回退问题,隐藏终端与ACK依赖问题,LIMD拥塞控制与路由重选问题,可配置性低的臃肿头部问题。针对这些问题,国内外已经出现了很多技术试图改善传输层协议性能。这些技术可分为对TCP进行改进以及设计基于速率的新协议两大部分,其中前者又可细分为端到端方案与跨层方案两部分。端到端技术方案包括解决TCP超时指数回退问题的TCP Fixed RTO方案,考虑路由重建导致失序报文的TCP-DOOR方案,考虑短期异常与长期异常的TCP Freeze-Probing方案,避免STO(Spurious Time Out)的Eifel方法,区分误码丢包和拥塞丢包的Bias,mBias,Spike,Zigzag,TCP-DCR等方案,使用delay ack降低反向链路冲突的方案,如TCP-LDA,TCP-ADA,TCP-DAA,TCP-DBA等。跨层技术方案包括注重于区分网络拥塞丢包和路由失败丢包的TCP-F,TCP-ELFN,ATCP,TCP-BuS等方案,注重于降低路由失败影响的split TCP技术方案,综合考虑了网络处于拥塞、-->链路断开、信道差错、路由变化、正常等不同状态情况的ADTCP技术方案。基于速率的新协议以ATP,EXACT为代表,其技术路线是在路由时收集必要信息以选择合适的速率传递报文。在以上技术方案中,无论是重新设计的协议,还是在TCP基础上进行改进的协议,都只解决了Ad Hoc中网络传输的某一部分问题,并且都采用相同的连接建立机制:三次握手。由于三次握手机制在连接建立之前不能提交数据给接收方,这意味着任何数据被提交之前都必须经历RTT的额外时延,在实际使用的低速无线自组织网络中,这有可能长达若干秒。在某些移动自组网应用环境中,很多数据例如重要的环境测定值,短小命令信息仅占几个到几十个字节并且需要可靠实时传递,对于这种信息的传递进行3次握手无疑是巨大的浪费。即使对一般的报文,由于无线自组网中存在很大的延迟,以及节点动态加入、离开网络和节点移动产生的动态拓扑结构,也可能导致经常性的连接建立过程,此时使用三次握手机制建立连接带来的延时和过大的网络开销往往是不可忍受的。然而,三次握手建立连接是保证报文可靠传输的必要条件,如何绕开三次握手机制,缩短连接建立时间,减轻网络开销就成为了要解决的问题。在这方面,唯一接近的技术是T/TCP,它针对有线网中的事务支持设计,通过在连接报文中加入1~2个长达32位的CC选项,在某些情况下可以避免三次握手过程。但它需要接收方为每个远端主机保留一份历史记录,并且第一次连接或者主机重启后,所有到该主机的连接或者该主机发出的连接都会进入普通的三次握手过程,此时,T/TCP不但不能解决原有的问题,还会增加网络开销和主机处理的开销。在Ad Hoc网络的动态拓扑环境中,这种情况是可能经常出现的。另一个问题是,以上协议都针对一般情况设计,其报文头中包含的很多内容在实际使用时,要么使用了过多的字节,要么没有实际用处,设计一个相对紧凑的报文头是有必要的,并且能在低速Ad Hoc网络中节省可观的网络开销。在协议的实现中,传统的方法是采用自顶向下的设计方式,大部分采用过程化语言C作为其实现技术,通过庞大的分支跳转语句实现复杂的协议状态机。90年代以后,软件设计方式得到了长足的发展,具体表现为面向对象设计方式的普及,设计模式的使用,以及自底向上的事件编程模型的出现。事件是对象内部状态发生了某些变化,或者对象做某些动作时,向外界发出的通知。外部环境应对这些事件的发生,会做出相应的反应。相对于自顶向下的过程化编程模型,自底向上的事件编-->程模型更适用于发生顺序不确定的实时事件响应系统,例如网络协议的设计与实现中。基本上,Windows的消息编程模型可看作事件模型的雏形,然而Windows处理事件的方式完全是通过窗口过程以及一成不变的WPARAM/LPARAM参数,以现代编程标准而言,简陋而粗糙。为了传递事件,甚至需要创建不可见窗口。严格说来,窗口过程并不是真正意义上的事件机制,因为每个窗口只允许拥有一个窗口过程,而在真正的事件系统中,相同的事件可以不分等级地注册多个接收者。新出现的C#和Java语言中集成了事件模型,在.Net框架中的也集成了事件,并使用委托来实现。然而,C#和Java语言编写的程序执行效率并不高,并且其事件机制是针对一般情况下设计,没有针对网络协议的特殊情况进行定制,例如不提供数据传递方法,传递复杂数据只能通过设置全局变量的方式进行,因此并不适合用于开发网络协议。C++语言编写的程序执行效率高,由于能够直接控制内存,因此更适合于进行底层开发,并且由于其面向对象的特性,可以使用封装,设计模式等现代方法来提供更好的模块化,使得协议易于理解,修改和扩展,因此是设计协议的首选语言。遗憾的是,C++语言并没有集成事件机制。
技术实现思路
有鉴于此,本专利技术的目的在于提供了一种Ad Hoc网络中可靠地传输数据的方法,提高数据的传输效率和实时性。为了达到上述目的,本专利技术的技术方案是这样实现的:一种Ad Hoc网络中高效可靠地传输数据的方法,通过syn、ack和fin报文实现可靠传输,该方法包括以下步骤:发送方发起连接,发送报文syn1(data,syn,syn-ts1),其中data表示数据,syn表示连接建立请求标志,syn-ts1=当前时刻+超时计时器定时,为该报文的超时重传时刻;接收方收到syn1(data,syn,syn-ts1)后,取出syn-ts1,如果syn-ts1>当前时刻,则接受报文并建立连接,否则,拒绝建立连接;发送方与接收方随后采用data-ack交互方式进行通信;发送方在最后一包数据投递完毕后,即可发出连接关闭请求报文fin(data,fin,fin-ts),其中data表示数据,fin表示连接关闭请求标志,fin-ts=max(当前时刻,连接最后发送的syn报文中包含的时戳),为结束时间戳;接收方收到关闭请求后,启动关闭过程,在不早于fin-ts的某时刻关闭连接。更进一步的,如果在syn-ts1时刻尚未成功建立连接,发送方则判断为发送报-->文本文档来自技高网
...

【技术保护点】
一种AdHoc网络中可靠地传输数据的方法,通过syn、ack和fin报文实现可靠传输,其特征在于包括以下步骤:A.发送方发起连接,发送报文syn1(data,syn,syn-ts1),其中data表示数据,syn表示连接建立请求 标志,syn-ts1=当前时刻+超时计时器定时,为该报文的超时重传时刻;B.接收方收到syn1(data,syn,syn-ts1)后,取出syn-ts1,如果syn-ts1>当前时刻,则接受报文并建立连接,否则,拒绝建立连接;   C.发送方与接收方随后采用data-ack交互方式进行通信;D.发送方在最后一包数据投递完毕后,即可发出连接关闭请求报文fin(data,fin,fin-ts),其中data表示数据,fin表示连接关闭请求标志,fin-ts=ma x(当前时刻,连接最后发送的syn报文中包含的时戳),为结束时间戳;E.接收方收到关闭请求后,启动关闭过程,在不早于fin-ts的某时刻关闭连接。

【技术特征摘要】
1.一种Ad Hoc网络中可靠地传输数据的方法,通过syn、ack和fin报文实现可靠传输,其特征在于包括以下步骤:A.发送方发起连接,发送报文syn1(data,syn,syn-ts1),其中data表示数据,syn表示连接建立请求标志,syn-ts1=当前时刻+超时计时器定时,为该报文的超时重传时刻;B.接收方收到syn1(data,syn,syn-ts1)后,取出syn-ts1,如果syn-ts1>当前时刻,则接受报文并建立连接,否则,拒绝建立连接;C.发送方与接收方随后采用data-ack交互方式进行通信;D.发送方在最后一包数据投递完毕后,即可发出连接关闭请求报文fin(data,fin,fin-ts),其中data表示数据,fin表示连接关闭请求标志,fin-ts=max(当前时刻,连接最后发送的syn报文中包含的时戳),为结束时间戳;E.接收方收到关闭请求后,启动关闭过程,在不早于fin-ts的某时刻关闭连接。2.如权利要求1所述的方法,其特征在于进一步包括以下步骤:如果在syn-ts1时刻尚未成功建立连接,发送方则判断为发送报文syn1(data,syn,syn-ts1)超时,并在syn-ts1时刻发送syn2(data,syn,syn-ts2),重新请求建立连接,其中syn-ts2=当前时刻+超时计时器定时,它是发送方超时后,下一个syn报文的发送时刻。3.如权利要求1所述方法,其特征在于:syn和fin报文中还分别包括syn-no和fin-no参数,其中syn-no为初始序列号,根据硬时钟生成,fin-no为结束序列号。4.如权利要求1所述方法,其特征在于:ack报文中含有其确认数据所对应的序列号,当ack返回时,在其确认的数据之前发送的所有数据均被确认。5.如权利要求1所述方法,其特征在于:接收方接收syn报文后启动被动打开过程,设收到报文syn(syn-no,data,syn,syn-ts)的时刻为now,如果now>syn-ts或者连接存在但最后一个ack中的序列号大于syn-no,则拒绝此报文,否则接收并新建连接。6.如权利要求5所述方法,其特征在于:接收方接收到报文fin(fin-no,...

【专利技术属性】
技术研发人员:王宇亮章洋郑昌文何晓新
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1