一种基于滑动窗口的半双工通信方法及系统
技术领域
本发明属于通信技术领域,尤其涉及一种基于滑动窗口的半双工通信方法及系统。
背景技术
为了保证数据在两个网络节点间数据的正确传输,需要在数据链路层或者传输层使用自动请求重传协议ARQ。ARQ协议是一种错误纠正协议,通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的错误传输。如果发送方在发送数据帧后一段时间之内没有收到确认帧,则发送方重新发送所述数据帧。常见的ARQ协议算法有停止等待算法、连续ARQ算法、退后N帧算法、选择重传算法以及滑动窗口算法。其中,滑动窗口算法是ARQ协议算法的集大成者,在接收到数据包时,接收方会立即回复确认帧,以告知发送发数据帧是发送成功还是发送失败。发送方在根据确认帧对发送失败的数据帧进行重传。
然而,现有的滑动窗口算法仅适用于全双工通信,而不适用于半双工通信。在半双工通信中,发送方和接收方共用一个信道,因此需要对收发双方进行信道的切换。若将滑动窗口算法应用与半双工结合,切换时由于安全间隔时间、信号保护窗口期、前导码等因素的影响,将导致切换消耗的时间多,进而降低了通信的传输效率。因此,半双工通信不适合对接收到的帧立即进行确认回复,需要对现有的滑动窗口算法进行改进。
发明内容
本发明的目的在于提供一种基于滑动窗口的半双工通信方法及系统,以实现在半双工通信中应用滑动窗口算法,提高半双工通信的收发效率以及吞吐率。
本发明是这样实现的,一种基于滑动窗口的半双工通信方法,应用于通过半双工进行通信的接收端和发送端,所述方法包括:
发送端向接收端发送连接请求信息,所述连接请求信息中包含待发送数据块的大小以及所述待发送数据块对应的块序号;
发送端接收到接收端根据所述连接请求信息回复的应答信息后,向接收端发送所述待发送数据块,所述待发送数据块包含多个数据帧;
接收端接收所述待发送数据块,对所述待发送数据块中的数据帧进行校验,将校验成功的数据帧存储至缓冲区中,并记录下数据帧的接收情况;
发送端在所述待发送数据块发送完后,向接收端发送块结束信息;
接收端根据所述块结束信息向发送端发送确认信息,所述确认信息中包括所接收到的数据块对应的块序号以及数据块中数据帧的接收情况。
进一步地,所述方法还包括:
发送端接收所述确认信息,根据确认信息对已发送的数据块中数据帧的接收情况进行记录。
进一步地,所述方法还包括:
在所发送的待发送数据块中的数据帧均发送成功时,发送端根据本次传输成功的数据块个数n将滑动窗口底部向前移动n个数据块,并将滑动窗口的顶部向前移动一个数据块,以获取下一个数据块,进行下一个数据块的发送。
进一步地,所述方法还包括:
在所发送的待发送数据块中存在未发送成功的数据帧时,发送端根据未发送成功的数据帧之前的在本次传输中传输成功的数据块个数m,将滑动窗口底部向前移动m个数据块。
进一步地,所述方法还包括:
在滑动窗口的块数有冗余时,将滑动窗口顶部向前移动一个数据块,以获取下一个数据块;发送端将所述未发送成功的数据帧添加到所述下一个数据块前端,构成下一个待发送数据块,向接收端发送所述下一个待发送数据块;
或者
在滑动窗口的块数没有冗余或者所述未发送成功的数据帧的个数大于预设阈值时,滑动窗口顶部保持不变,按发送的先后顺序将所述未发送成功的数据帧组成下一个待发送数据块,向接收端发送所述下一个待发送数据块,以重传所述未发送成功的数据帧。
本发明的第二方面提供了一种基于滑动窗口的半双工通信系统,所述系统包括至少一个发送端和至少一个接收端;所述发送端和接收端之间建立半双工通信;
所述发送端,用于向接收端发送连接请求信息,所述连接请求信息中包含待发送数据块的大小以及所述待发送数据块对应的块序号,所述待发送数据块包含多个数据帧;接收到接收端根据所述连接请求信息回复的应答信息后,向接收端发送所述待发送数据块;
所述接收端,用于接收发送端发送的连接请求信息,向发送所述连接请求信息的发送端反馈应答信息;接收所述待发送数据块,对数据块中的数据帧进行校验,将校验成功的数据帧存储至缓冲区中,并记录下数据帧的接收情况;
所述发送端还用于,在所述待发送数据块发送完后,向接收端发送块结束信息;
所述接收端还用于,根据所述块结束信息向发送端发送确认信息,所述确认信息中包括所接收到的数据块对应的块序号以及数据块中数据帧的接收情况。
进一步地,所述发送端还用于:
接收所述确认信息,根据确认信息对已发送的数据块中数据帧的接收情况进行记录。
进一步地,发送端还用于:
在所发送的待发送数据块中的数据帧均发送成功时,根据本次传输成功的数据块个数n将滑动窗口底部向前移动n个数据块,并将滑动窗口的顶部向前移动一个数据块,以获取下一个数据块,进行下一个数据块的发送。
进一步地,所述发送端还用于:
在所发送的待发送数据块中存在未发送成功的数据帧时,根据未发送成功的数据帧之前的在本次传输中传输成功的数据块个数m,将滑动窗口底部向前移动m个数据块。
进一步地,所述发送端还用于:
在滑动窗口的块数有冗余时,将滑动窗口顶部向前移动一个数据块,以获取下一个数据块;将所述未发送成功的数据帧添加到所述下一个数据块前端,构成下一个待发送的数据块,向接收端发送所述下一个待发送数据块;
或者
在滑动窗口的块数没有冗余或者所述未发送成功的数据帧的个数大于预设的阈值时,滑动窗口顶部保持不变,按发送的先后顺序将所述未发送成功的数据帧组成下一个待发送数据块,向接收端发送所述下一个待发送数据块,以重传所述未发送成功的数据帧。
本发明实施例与现有技术相比存在的有益效果是:通过改进现有的滑动窗口算法,使得发送端在发送数据时是以数据块的形式批量发送数据帧,接收端以数据块的形式批量接收发送端发送的数据帧,然后再以确认帧的形式向发送端反馈数据块中数据帧的接收情况;发送端根据所述数据帧的接收情况,以数据块为单位来移动窗口,以准备下一个待发送数据块,从而解决了滑动窗口算法在半双工通信中发送端和接收端不能同时进行数据帧的发送和接收的问题,改进后的滑动窗口算法能够适用于半双工通信,并且提高了半双工通信的收发效率以及吞吐率。
附图说明
图1是本发明实施例一提供基于滑动窗口的半双工通信方法的第一实现流程图;
图2是本发明实施例二提供的基于滑动窗口的半双工通信方法的第二实现流程图;
图3是本发明实施例二提供的滑动窗口示意图;
图4是本发明实施例二提供的基于滑动窗口的半双工通信方法中步骤S208的具体实现流程;
图5是本发明实施例三提供的基于滑动窗口的半双工通信系统的组成结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明通过改进现有的滑动窗口算法,使得发送端在发送数据时是以数据块的形式批量发送数据帧,接收端以数据块的形式批量接收发送端发送的数据帧,然后再以确认帧的形式向发送端反馈数据块中数据帧的接收情况;发送端根据所述数据帧的接收情况,以数据块为单位的来移动窗口,以准备下一个待发送数据块,从而解决了滑动窗口算法在半双工通信中发送端和接收端不能同时进行数据帧的发送和接收的问题,改进后的滑动窗口算法能够适用于半双工通信,并且提高了半双工通信的收发效率以及吞吐率。
实施例一
图1示出了本发明实施例一提供的基于滑动窗口的半双工通信方法的第一实现流程。所述方法应用于由至少一个发送端和至少一个接收端组成的系统,并且发送端和接收端之间通过半双工进行通信。
由于在半双工通信类的无线通信中,或者其他类似频段窄带通信情况,例如短波、超短波、微波等传输方式,其主要特点为使用无线电波的某个频段,发送端和接收端为半双工通信,双方共用一个频点。该频点同一时间只允许一端进行操作,发送和接收需要进行切换。在本发明中,在发送端和接收端通过传输控制命令报文来进行切换。控制命令报文非常短,且自身采用简单停止等待协议算法,并根据需要降低降低控制命令报文的传输速率低(优选为小于传输数据报文的速率),以降低控制命令报文的丢包率。因此,本发明适用于通过半双工通信来传输数据量大的文件或数据流,否则控制命令报文的存在会导致效率的降低。所述数据量大的文件优选为大于32KB,甚至大至几MB或更大的文件。
所述方法包括:
在步骤S101中,发送端向接收端发送连接请求信息。
所述连接请求信息中包含待发送数据块的大小以及所述待发送数据块对应的块序号,所述待发送数据块中包含多个数据帧。
在本实施例中,一个数据块包含多个数据帧,其中的帧个数可以预先自定义。在发送端与接收端的“握手”时,发送端向接收端发送连接请求信息,以告知接收端要发送的待发送数据块大小及所述待发送数据块对应的块序号。所述待发送数据块包含多个数据帧,以实现批量地传输数据帧。
在步骤S102中,发送端接收到接收端根据所述连接请求信息回复的应答信息后,向接收端发送待发送数据块。
发送端向接收端发送连接请求信息,接收端接收到所述连接请求信息后,根据所述连接请求信息进行适应性的调整,比如根据待发送数据块的大小,开辟足够大的滑动窗口块数来满足数据帧缓冲的需求。示例性的,当发送端发送的待发送数据块大小为100帧,滑动窗口大小为5块,此时接收端可设置滑动窗口的大小为8块(即最大可同时实现缓存800帧数据),大于发送端窗口为5块时对应的对大可传输500帧数据。
调整结束后,接收端向发送该连接请求信息的发送端回复应答信息。发送端接收所述应答信息,并且确认无误后,则握手成功,开始向接收端发送待发送数据块。在本实施例中,发送端对每一个数据帧都编上号,得到帧号,帧号长度以1字节或者2字节存放在数据帧前面,在数据帧的后面加上2字节的CRC16校验码,然后将多个数据帧组合成一个待发送数据块,依次不间断地将所述待发送数据块中的数据帧传输到接收端。
在这里,设待发送数据块中包含100个数据帧,则发送端依次不间断地将所述待发送数据块中的数据帧传输到接收端可以为发送端连续进行100次任务发送该待发送数据块中的100个数据帧,也可以为一次任务发送该待发送数据块中的100个数据帧。若采用后一种方式,则要保证足够的处理时间,以及缓冲区能够容纳一个待发送数据块(即100帧数据)的大小。
优选地,发送端接收所述应答信息,若确认有误时,则重复向接收端发送连接请求信息,直至收到正确的应答信息或者发送连接请求信息超过规定次数。
在步骤S103中,接收端接收所述待发送数据块,对所述待发送数据块中的数据帧进行校验,将校验成功的数据帧存储至缓冲区中,并记录下数据帧的接收情况。
接收端接收到所述待发送数据块中的数据帧后,对每一个数据帧,采用CRC16校验算法计算其校验码,若校验成功,则将该校验成功的数据帧存储至缓冲区中,若校验失败,则丢弃该校验失败的数据帧;并且记录每一个数据帧的接收情况,以记录哪些数据帧发送成功,哪些数据帧发送失败。
作为本发明的一个实施示例,在发送端发送完待发送数据块后,接收端对所述待发送数据块中的数据帧进行确认。为了在发送确认信息时减少报文的长度,以降低误传的可能性,接收端通过标志位来记录每一个数据帧的接收情况,按照数据帧的接收顺序,对校验成功的数据帧,将其对应的标志位设置为1;否则,对校验失败的数据帧,将其对应的标志位设置为0。假设发送端发送了20帧,其中帧2、帧8、帧15、帧18丢失,则可记录为:
【20】【1|1|0|1,|1|1|1|1,|0|1|1|1,|1|1|1|0,|1|1|0|1,|0|0|0|0】
其中,【20】表示帧个数,大小为1字节,帧数后面为标志位,大小为3字节,使用第1字节的8个位,第二字节的8个位,第三个字节的前4个位,第三个字节的后4个位不使用,默认填0。
在步骤S104中,发送端在所述待发送数据块发送完后,向接收端发送块结束信息。
在本实施例中,发送端在待发送数据块中的数据帧发送完毕后,向接收端发送块结束信息,同时根据所述块结束信息调整传输速率。所述块结束信息中包含本次发送中数据帧对应的数据块序号。
通过将传输速率调整为最低速率或者比数据报文的传输速率低一至两个级别,保证了控制命令报文传输的正确性,降低丢包的概率,以提高传输的效率。
进一步地,所述块结束信息采用停止等待协议发送,其中还包含一时间阈值。所述时间阈值给出了发送端重发块结束信息的时间间隔。在发送端向接收端发送块结束信息后,若未在时间阈值之内接收到接收端回复的确认信息,则发送端重发所述块结束信息,直至在时间阈值内收到接收端回复的确认信息。
在步骤S105中,接收端根据所述块结束信息向发送端发送确认信息,所述确认信息中包括所接收到的数据块对应的序号以及数据块中数据帧的接收情况。
在本实施例中,接收端根据所述块结束信息中的数据块序号,将数据块序号对应的数据块中的数据帧的接收情况记录通过确认信息返回给发送端。其中,所述确认信息中还包含无线信道的解调质量、信噪比等内容。优选地,为了减少确认信息所占用的时间,所述确认信息为一个数据帧,即确认帧。所述确认帧中包含所接收到的数据块对应的序号以及数据块中数据帧的接收情况。
通过发送端向接收端发送块结束信息,以获取接收端返回的确认信息,从而使得发送端每发送完一次待发送数据块后,均能根据接收端返回的确认信息获知所发送的数据块中数据帧的接收情况,实现了发送端和接收端对数据帧接收情况的记录,以提供数据帧发送失败时重传的判断依据。
本发明通过改进现有的滑动窗口算法,使得发送端在发送数据时是以数据块的形式批量发送数据帧,接收端以数据块的形式批量接收发送端发送的数据帧,然后再以确认帧的形式向发送端返回数据块中数据帧的接收情况;发送方根据所述数据帧的接收情况,以数据块为单位的来移动窗口,以准备下一个待发送数据块,从而解决了滑动窗口算法在半双工通信中发送端和接收端不能同时进行数据帧的发送和接收的问题,改进后的滑动窗口算法能够适用于半双工通信,并且提高了半双工通信的收发效率以及吞吐率。
实施例二
图2示出了本发明实施例二提供的基于滑动窗口的半双工通信方法的第二实现流程,为了便于说明,仅示出了与本发明实施例相关的部分。所述方法应用于由至少一个发动端和至少一个接收端组成的系统,并且发送端和接收端之间建立半双工通信。
本实施例在通信之前,设置发送端的滑动窗口大小为x个数据块,发送端的滑动窗口表征发送端在还没收收到确认信息的情况下最多可以发送x个数据块。接收端的滑动窗口与发送端的滑动窗口一样大小。设置每一个数据块包含k个数据帧,优选为100个数据帧,则对于大小能够确定的文件,可以根据待发送的数据帧总量,按照每k个数据帧一个块来将其划分成多个数据块。
图3示出了滑动窗口的一个示意图。为了便于说明,这里设发送端和接收端的滑动窗口为4个数据块,设置每一个数据块大小为100帧,则根据待发送的数据帧总量2000帧,将其按照每100帧每块来划分成20个数据块。
在步骤S201中,发送端向接收端发送连接请求信息。
所述连接请求信息中包含待发送数据块的大小以及所述待发送数据块对应的块序号,所述待发送数据块包含多个数据帧。
在本实施例中,所述待发送数据块包含多个数据帧为所述待发送数据块中包含一个数据块中的100个数据帧,或者一个数据块中的100个数据帧与需要重发的数据帧。
在步骤S202中,接收端接收所述连接请求信息,并向发送端回复应答信息。
在步骤S203中,发送端接收到接收端根据所述连接请求信息回复的应答信息后,向接收端发送待发送数据块。
在步骤S204中,接收端接收所述待发送数据块,对所述待发送数据块中的数据帧进行校验,将校验成功的数据帧存储至缓冲区中,并记录下数据帧的接收情况。
在步骤S205中,发送端在所述待发送数据块发送完后,向接收端发送块结束信息。
在本实施例中,发送端向接收端发送块结束信息,并根据所述块结束信息降低传输速率,以降低控制命令报文的传输速率。所述块结束信息中包含本次发送中数据帧对应的数据块序号。
在步骤S206中,接收端根据所述块结束信息向发送端发送确认信息。
优选地,所述确认信息为一个数据帧,即确认帧。所述确认帧包括接收端所接收到的数据块对应的块序号以及数据块中数据帧的接收情况。
在步骤S207中,发送端接收所述确认信息,根据确认信息对已发送的数据块中数据帧的接收情况进行记录。
在本实施例中,接收端和发送端都要对数据帧的发送情况进行记录。其中,接收端的记录是动态变化的,只记录发送端当前所发送的数据块中数据帧的接收情况;而发送端根据确认信息对数据块所发送的数据帧的接收情况进行记录,并且存储所述记录,以实现对所有数据帧的记录(即记录2000帧数据的接收情况)。
在步骤S208中,发送端根据所述数据帧的接收情况进行下一个待发送数据块的传输。
为了实现批量的传输数据帧,在本实施例中,滑动窗口是以数据块的形式向前移动的,即一次向前移动k个数据帧。对滑动窗口的移动过程将在图4所示实施例中进行详述。
图4示出了本发明实施例二提供的基于滑动窗口的半双工通信方法中步骤S208的实现流程。
在本实施例中,发送端发送完一个待发送数据块,接收到接收端返回的确认信息后,根据所述确认信息进行滑动窗口的移动,以准备下一个待发送数据块。以下对滑动窗口的移动进行详细的说明。
在步骤S401中,发送端根据接收到的确认信息,判断已发送的数据块中的数据帧是否均发送成功。若是,则执行步骤S402;否则,执行步骤S403。
在步骤S402中,在所发送的待发送数据块中的数据帧均发送成功时,发送端根据本次传输成功的数据块个数n将滑动窗口底部向前移动n个数据块,并将滑动窗口的顶部向前移动一个数据块,以获取下一个数据块,进行下一个数据块的发送。
示例性的,在前一次所发送的待发送数据块中仅包含第一数据块的1-100帧数据时,并且所述100帧数据传输成功,则将滑动窗口整体向前移动一个数据块,包括顶部向前移动一个数据块,底部向前移动一个数据块(传输成功的数据块个数为1,即n=1),以进行下一个数据块的发送。此时,滑动窗口底部的位置由原来位于第零数据块变为第一数据块,顶部由原来位于第一数据块变为第二数据块。
在步骤S403中,在所发送的待发送数据块中存在未发送成功的数据帧时,发送端根据未发送成功的数据帧之前的在本次传输中传输成功的数据块个数m,将滑动窗口底部向前移动m个数据块。
示例性的,前一次所发送的待发送数据块中包含重发的数据帧(包括第一数据块中第10帧数据、第二数据块中第112帧数据)和第三数据块的第201-300数据帧。若第二数据块中第112帧数据和第三数据块中的第300帧数据仍未发送成功,第一数据块中第10帧数据和第三数据块的第201-299数据帧发送成功,则根据第二数据块中的第112帧(未发送成功的数据帧)之前的传输成功的数据块个数1(重传的第一数据块中第10帧数据传输成功,即在未发送成功的数据帧之前的第一数据块传输成功),发送端将滑动窗口底部向前移动1个数据块。此时,滑动窗口底部的位置由原来位于第零数据块变为第一数据块。
在步骤S404中,发送端判断滑动窗口块数是否有冗余,以确定当前的滑动窗口顶部是否能向前移动。若滑动窗口有冗余时,执行步骤S405;否则,执行步骤S406。
在步骤S405中,在滑动窗口的块数有冗余时,发送端将滑动窗口顶部向前移动一个数据块,以获取下一个数据块;并将所述未发送成功的数据帧添加到所述下一个数据块前端,构成下一个待发送数据块,向接收端发送所述下一个待发送数据块。
示例性的,当滑动窗口的块数为4,传输完第三数据块后,滑动窗口有冗余,则将滑动窗口顶部向前移动一个数据块,以获取第四数据块的301-400个数据帧(此时,滑动窗口顶部由原来位于第三数据块变为第四数据块);并将第二数据块中第112数据帧和第三数据块中第300数据帧(未发送成功的数据帧)添加到所述第四数据块的100个数据帧前端,构成下一个待发送数据块,返回步骤S201,向接收端发送所述下一个待发送数据块。此时,所述连接请求信息中数据块的大小为102帧,以及所述待发送数据块对应的块序号(包括第二数据块、第三数据块和第四数据块)。
在步骤S406中,在滑动窗口的块数没有冗余时,滑动窗口顶部保持不变,按发送的先后顺序将所述未发送成功的数据帧组成下一个待发送数据块,向接收端发送所述下一个待发送数据块,以重传所述未发送成功的数据帧。
示例性的,若滑动窗口的大小为4时,在发送完第五数据块后,第二数据块中第12数据帧、第五数据块中第420-460数据帧未发送成功,而第三数据块和第四数据块已发送成功。由于当前滑动窗口的底部在第二数据块,顶部在第五数据块,已经跨越了4个数据块,此时滑动窗口已经没有冗余了,因此,滑动窗口顶部不能再向前移动(滑动窗口顶部仍然为当前的第五数据块),发送端将未发送成功的第二数据块中第112帧数据、第五数据块中的第420-460数据帧组成一个待发送数据块,以进行重传,直至滑动窗口底部对应的数据块中未发送成功的数据帧(即第二数据块中第112帧)发送成功时,滑动窗口的底部才能移动。
优选地,在步骤S403后,所述方法还包括:
在步骤S407中,在所述未发送成功的数据帧的个数大于预设的阈值时,滑动窗口顶部保持不变,按发送的先后顺序将所述未发送成功的数据帧组成下一个待发送数据块,向接收端发送所述下一个待发送数据块,以重传所述未发送成功的数据帧。
示例性地,预设阈值为30个数据帧。若在发送完第五数据块后,第二数据块的第112帧、第三数据块和第四数据块均已发送成功,而第五数据块中的第420-460数据帧未发送成功,则共有40个数据帧没有发送成功。此时未发送成功的数据帧的个数已经大于预设阈值,不管滑动窗口是否有冗余,滑动窗口顶部都保持不变(仍然位于当前的第五数据块),按发送的先后顺序将所述未发送成功的数据帧组成下一个待发送数据块,返回步骤S201,向接收端发送所述下一个待发送数据块,以重传所述未发送成功的数据帧。
通过改进现有的滑动窗口算法,使得发送端在发送数据时是以数据块的形式批量发送数据帧,接收端以数据块的形式批量接收发送端发送的数据帧,然后再以确认帧的形式向发送端反馈数据块中数据帧的接收情况;发送端根据所述数据帧的接收情况,以数据块为单位的来移动窗口,以准备下一个待发送数据块,从而解决了滑动窗口算法在半双工通信中发送端和接收端不能同时进行数据帧的发送和接收的问题,改进后的滑动窗口算法能够适用于半双工通信,并且提高了半双工通信的收发效率以及吞吐率。
实施例三
图5示出了本发明实施例三提供的基于滑动窗口的半双工通信系统。所述系统包括至少一个发送端1和至少一个接收端2;所述发送端和接收端之间建立半双工通信。
所述发送端,用于向接收端发送连接请求信息,所述连接请求信息中包含待发送数据块的大小以及所述待发送数据块对应的块序号,所述待发送数据块包含多个数据帧;接收到接收端根据所述连接请求信息回复的应答信息后,向接收端发送所述待发送数据块;
所述接收端,用于接收发送端发送的连接请求信息,向发送所述连接请求信息的发送端反馈应答信息;接收所述待发送数据块,对数据块中的数据帧进行校验,将校验成功的数据帧存储至缓冲区中,并记录下数据帧的接收情况;
所述发送端还用于,在所述待发送数据块发送完后,向接收端发送块结束信息;
在发送块结束信息后,所述发送端根据所述块结束信息调整传输速率,以降低控制命令报文的发送速率,所述控制命令报文包括块结束信息、确认信息、连接请求信息以及应答信息。
所述接收端还用于,根据所述块结束信息向发送端发送确认信息,所述确认信息中包括所接收到的数据块对应的块序号以及数据块中数据帧的接收情况。
在本实施例中,所述确认信息以一个数据帧的形式包括了所接收到的数据块对应的块序号以及数据块中数据帧的接收情况,即所述确认信息为一个确认帧。从而减少了确认帧所占用的时间,能够进一步提高通信的效率。
进一步地,在发送端在发送完待发送数据块后,需要进行滑动窗口的移动,所述发送端还用于:
接收所述确认信息,根据确认信息对已发送的数据块中数据帧的接收情况进行记录。
进一步地,发送端还用于:
在所发送的待发送数据块中的数据帧均发送成功时,根据本次传输成功的数据块个数n将滑动窗口底部向前移动n个数据块,并将滑动窗口的顶部向前移动一个数据块,以获取下一个数据块,进行下一个数据块的发送。
进一步地,所述发送端还用于:
在所发送的待发送数据块中存在未发送成功的数据帧时,根据未发送成功的数据帧之前的在本次传输中传输成功的数据块个数m,将滑动窗口底部向前移动m个数据块。
进一步地,所述发送端还用于:
在滑动窗口的块数有冗余时,将滑动窗口顶部向前移动一个数据块,以获取下一个数据块;将所述未发送成功的数据帧添加到所述下一个数据块前端,构成下一个待发送的数据块,向接收端发送所述下一个待发送数据块;
或者
在滑动窗口的块数没有冗余或者所述未发送成功的数据帧的个数大于预设的阈值时,滑动窗口顶部保持不变,按发送的先后顺序将所述未发送成功的数据帧组成下一个待发送数据块,向接收端发送所述下一个待发送数据块,以重传所述未发送成功的数据帧。
通过改进现有的滑动窗口算法,使得发送端在发送数据时是以数据块的形式批量发送数据帧,接收端以数据块的形式批量接收发送端发送的数据帧,然后再以确认帧的形式向发送端反馈数据块中数据帧的接收情况;发送端根据所述数据帧的接收情况,以数据块为单位的来移动窗口,以准备下一个待发送数据块,从而解决了滑动窗口算法在半双工通信中发送端和接收端不能同时进行数据帧的发送和接收的问题,改进后的滑动窗口算法能够适用于半双工通信,并且提高了半双工通信的收发效率以及吞吐率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。