数据传输的差错控制方法
一、技术领域
本发明涉及一种数据传输的差错控制方法,适用于在计算机网络中传输大量数据,包括传统的文件传输及利用P2P(端对端)技术进行文件传输,传统的流媒体直播、点播以及利用P2P技术进行流媒体直播、点播等应用领域。
二、背景技术
在计算机网络中,数据主要以TCP(传输控制协议)或UDP(用户数据报协议)来承载。
使用TCP时,收信端利用ACK(确认)机制,来通知发信端,它已经从发信端正确收到哪些数据块,发信端以此来确定接下来要发送的数据块的序号或需要重新发送的数据块的序号。当数据被丢失时,TCP就靠这种检测丢包重传的机制,来保证数据的可靠传输。然而TCP的丢包重传机制,会造成额外的网络时延,在传输文件的时候,时延积累的结果是需要花更多的时间才能完成文件传输;在流媒体点播或直播的时候,时延积累的结果是很明显的图像停顿。
UDP是一种不保证可靠性的传输协议,一般地,在传输文件的时候,需要增加确认序号等差错控制机制,来保障数据不被丢失;在流媒体点播或直播的时候,为保证数据能及时传递往往放弃差错控制机制,如果有数据被丢失,则导致图像黑屏或出现马赛克。
无论是TCP的可靠传输,还是在UDP上增加需要确认序号的差错控制,即使是网络带宽足够富裕,在网络有一定的丢包时,仍然将造成时间长度不可预测的传输时延,结果是导致文件传输时间变长,流媒体点播或直播时,图像停顿、黑屏或出现马赛克。
三、发明内容
1、发明目的:本发明的目的是提供一种数据传输的差错控制方法,在网络丢包率较高但带宽足够的情况下,它能有效地保障数据的快速、可靠传输。
2、技术方案:一种数据传输的差错控制方法,其特征是:它包括以下步骤:
(A)收信端发送请求给发信端,该请求包括收信端向发信端索取的数据集的标识及收信端可以接收数据的速率;
(B)发信端对数据集进行全息编码,然后以不高于收信端可接收数据的速率,向收信端发送至少一倍于解码所需要的量的编码数据;
(C)收信端接收全息编码数据的同时进行全息解码,一旦解码完毕,立即发送停发请求给发信端;
(D)发信端收到收信端的停发请求之后,停止向收信端发送编码数据。
在上述方法中,还可以包括如下以下步骤:
(E)发信端发向收信端的编码数据量,比解码所需的数据量多一倍之后,如果还未收到收信端的停发请求,则停止继续发送;
(F)收信端由于接收到的编码数据量不够而无法解码,如果等待规定的时间之后仍接收不到来自于发信端的编码数据时,则再次发送请求给发信端,该请求包括收信端向发信端索取的数据集的标识及收信端可以接收数据的速率。
在上述步骤(B)、(C)中,所述的编码、解码方法,可以使用本申请人提出的第200510094180.5号发明专利所涉及的方法。
3、有益效果:本发明与现有技术相比,其显著优点是:利用本发明所述的差错控制方法,在网络丢包率较高但带宽足够的情况下,它能有效地保障数据的快速、可靠传输,缩短文件传输的时间或减少流媒体点播及直播时图像出现停顿、黑屏或马赛克的现象。
四、附图说明
附图是差错控制方法主要步骤的简要逻辑图。
五、具体实施方法
结合附图,详细说明具体的实现方法:
(A)收信端发送请求给发信端,该请求包括收信端向发信端索取的数据集的标识及收信端可以接收数据的速率。
(B)发信端对数据集进行全息编码如下:
假设收信端向发信端索取的原始数据集由数据块X1、X2、X3、……、Xm构成,小写英文字母m、n、k、s等为符号下标,是自然数。
生成随机向量Ak=<Ak1、Ak2、Ak3、……、Akm>,其中每个Akn都是随机数;生成中间结果Pk=(Ak1*X1)+(Ak2*X2)+(Ak3*X3)+……+(Akm*Xm);输出全息编码结果Yk为Ak与Pk的组合,例如,Ak为<1、2、3、4>,Pk转换成字符串之后为abcdefg,则可组合成编码结果Yk为字符串1_2_3_4_abcdefg。
发信端一边进行全息编码,一边以不高于收信端可接收数据的速率,向收信端发送至少一倍(例如1-10倍)于解码所需要的量的编码数据。一般地,解码所需的编码数据的块数,略高于原始数据集的数据的块数m。
为加快编解码速度,可以让随机向量Ak中的每个值Akn只能随机为0或1,并且编码或解码时的加法运算,都改为异或运算。
(C)收信端接收全息编码数据的同时进行全息解码如下:
由全息编码的方法可知,每个全息编码数据都含有一部分的原始信息量,所以,只要收信端接收到编码数据的块数足够,就可以解码出完整的原始数据,其原因是没有任何一块编码数据是关键数据块,收信端不会因为缺少关键数据块而无法进行解码。只要网络带宽足够,就算有较高的丢包率,收信端仍然能收到足够的编码数据,因而能够有效解码。
将接收到的s个(s必须大于或等于m)编码数据Y1、Y2、Y3、……、Ys拆分,得到如下矩阵等式:
解上述线性方程组,求得原始数据X1、X2、X3、……、Xm,一旦解码完毕,立即发送停发请求给发信端。
(D)发信端收到收信端的停发请求之后,立即停止再往收信端发送编码数据。由附图可知,发信端有可能发送出比收信端解码所需的数据量更多的编码数据,但是,一旦发信端收到收信端的停发请求,发信端会立即停止发送,确保发信端多发送的编码数据量很少,以避免浪费网络带宽。
为了防止收信端所发送的停发请求在网络中被丢失的情况下,发信端仍然不停地往收信端发送编码数据而浪费网络带宽,发信端需要进行如下判断处理:
(E)发信端发往收信端的编码数据量,比解码所需的数据量多一倍之后,如果还未收到收信端的停发请求,则停止继续发送。
为防止网络连续丢失大批量数据的情况下收信端无法解码,收信端需要进行如下判断处理:
(F)收信端由于接收到的编码数据量不够而无法解码,如果等待规定的时间(例如1微秒到9秒)之后仍接收不到来自于发信端的编码数据,则再次发送请求给发信端,该请求包括收信端向发信端索取的数据集的标识及收信端可以接收数据的速率。无论编码数据是哪次收到的,收信端都可以用它来进行解码。
从上述详细的实现方法可知,虽然这种数据传输的差错控制方法,可能会导致发信端发出比实际需要略多的数据量,但在网络丢包率较高而带宽足够的情况下,它仍然能保障数据的可靠传输,同时,由于这种差错控制方法无需序号确认机制,它还能保障数据的快速传输。例如,在计算机网络中,上述请求及数据都采用UDP数据报来传送,则利用这种差错控制方法,可以很方便地在UDP之上,增加快速、可靠的数据传输控制机制,特别适合于流媒体点播及利用P2P技术进行流媒体直播等应用。