基于窗口滑动协议的UDP传输研究
2016-12-20任雁
任雁
(长治学院计算机系,山西长治046011)
基于窗口滑动协议的UDP传输研究
任雁
(长治学院计算机系,山西长治046011)
文章解释了滑动窗口传输协议的概念,并与传统的UDP传输方式进行了比较,针对其在传输网络中的应用进行了探讨。并模仿了窗口滑动协议传输方式,完整、高效的对数据进行了实时传输,确保了数据文件在网络传输应用中的可靠性和高效性,为P2P网络传输提供了参考。
UDP,窗口滑动协议,C++
1 窗口滑动传输协议概述
窗口滑动协议[1]一般应用于大数据实时传输。为确保数据传输的可靠与高效,协议允许发送端在传输过程中可以一次性发送多个数据分组,在接收端确认收到所有数据包,并规定只有接收端向前滑动窗口时,发送端才能向前滑动窗口。接收方和发送方按照上面的规律不断向前滑动。
与传统的传输方式(发送端每发送一个数据包后,必须等待接收端的确认,才能继续发送下一个数据包)相比较,窗口滑动协议可以在未接收到确认消息之前,一次发送多个数据包,避免了发送端在数据传输过程中频繁的等待确认,从而大大提高了传输效率。此外,窗口传输协议还可以很好的解决端到端的通信流量控制问题,它允许接收端在拥有足够数据缓冲之前对传输进行限制。在实时传输中,滑动窗口的大小可以随时调整,接收端在进行分组确认时,还可以交换滑动窗口控制信息,使收发两端的窗口大小可以根据需要动态调整,在高效率传输数据的同时,避免拥塞的发生。
2 协议分类
2.1停止等待协议
当发送端窗口和接收端窗口的大小都等于1时。
2.2回退N步协议
当发送端窗口大于1,接收端窗口等于1时。
2.3选择重发协议
当发送端窗口和接收端窗口大小都大于1时。
3 实现构想
假设发送窗口和接收窗口尺寸都为2。
首先,发送端无数据发出,发送窗口前后沿重合,接收端0号、1号窗口打开,等待接收0号、1号帧;发送方打开0号、1号窗口,表示0、1帧均在等待确认队列,发送方此时打开的窗口数已经达到最大,在未收到新的确认回复帧之前,将暂停发送新的数据帧。
接收方收到0号、1号帧,0、1号窗口关闭,2号、3号窗口打开,表示准备接收2号、3号帧数据;
发送方收到从接收方发来的0号、1号帧确认回复信息后,关闭0号、1号窗口,表示从重发表中删除0号、1号帧数据,发送方继续发送2、3号数据帧,2号、3号窗口打开,2、3号帧进入等待确认队列。此时,发送方打开的窗口数已经达到最大值,在未收到新的确认回复帧之前,将暂停发送新的数据帧。
接收方收到2、3号数据帧,2、3号窗口关闭,4、5号窗口打开,表示准备接收4、5号帧。
发送方收到从接收方发来的2号、3号帧确认回复信息后,关闭2号、3号窗口,表示从重发表中删除2号、3号帧数据,发送方继续发送4、5号数据帧,4号、5号窗口打开。像这样,窗口一直持续不断的向前递延,直到最后一帧数据被发送完成。如发送方发送的帧数据在设定时间内未得到响应,将启动超时重发机制,对该数据进行重发,直至收到对方确认回复信息。
4 具体实现
文章采用C++编程语言进行具体实现。
首先定义帧数据相关数据结构,格式如下:
在程序开始,需将上面相关数据初始化为0,这里不在一一列举。接收端需建立相关监听程序,用来监听是否收到信息,并对接收到的帧信息进行处理,例如拷贝数据段信息:
设置标记为已接收:slot->recevied=TRUE。
回传帧头部信息:send_socket(LINK,m,ALEN)。
发送端需建立相关处理程序,用来接收确认回复信息:slot=&state->sendQ[state->LAR++% SWS]。
删除超时重发队列相关信息:evCancel (&slot->timeout)。
发送端在未接收到新的回复信息时,需等待发送窗口的打开:wait_for_semaphore= WaitForSingleObject(*sendWindowNotFull,-1);当有消息进入,并已确认可以发送下一帧数据时,需将帧序号加1,state->hdr.SeqNum=state->LFS++;并拷贝相关信息,msgAddHdr(frame,hbuf);msgSaveCopy (slot->msg,frame);发送并同时打开计时器slot->timeout=evSchedule(frame,SWP_SEND_ TIMEOUT);send_socket(LINK,frame,HLEN+DLEN)。如果在设定时间内,未收到对方确认接收信息,那么,该条信息将被重新发送,程序则会一直重复下去,新的窗口被不断的打开,直到所有数据传输完毕。
因篇幅所限,例如端口设置、创建绑定与监听线程、捕获异常等基础功能将不再赘述。
5 结论
UDP是一种高效的传输协议,为了弥补它在传输过程中很容易丢包的缺点,文章引入了滑动窗口传输协议。与普通的传输方式相比,它的传输更加的有效,也更加的灵活。在数据传输和通信服务与日俱增的今天,滑动窗口协议不失为一种较好的选择。
[1]陈川,林亚平.滑动窗口协议分析及其在微机上的模拟实现[J].计算机应用,2000,2(2):24-26.
[2]Debbie Leung,Jonathan Oppenheim,Andreas Winter.Quantum Network Communication-TheButterfly and Beyond.IEEE Transactions on Information Theory.2010.
(责任编辑张剑妹)
TP393.021
A
1673-2014(2016)05-0040-02
长治学院校级科研课题“基于IPv4向IPv6过渡的NAT穿越技术研究”(201520)。
2016—09—06
任雁(1984—),女,山西长治人,实验师,主要从事无线宽带通信研究。