TCP协议的传输方法、装置和系统
技术领域
本发明涉及通信领域,尤其涉及一种TCP协议的传输方法、装置和系统。
背景技术
随着通信技术飞速发展,数据传输协议也得到快熟的应用。TCP(TransmissionControl Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP采用滑动窗口进行拥塞控制来适应网络状况的变化,同时实现端到端结点之间的可靠数据传输。
TCP中使用的拥塞控制技术一般采用滑动窗口机制还可对网络进行拥塞控制,将网络中的分组(TCP报文段作为其数据部分)数量维持在一定的数量之下,当超过该数值时,网络的性能会急剧恶化。传输层的拥塞控制有慢开始(Slow-Start)、拥塞避免(CongestionAvoidance)、快重传(Fast Retransmit)和快恢复(Fast Recovery)四种算法。
大量数据报涌入同一交换节点(如路由器),导致该节点资源耗尽而必须丢弃后面到达的数据报时发生拥塞。因此发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。因此,每一个TCP连接需要有以下两个状态变量:其一是接收端窗口rwnd(receiver window)又称为通知窗口(advertisedwindow)。这是接收端根据其目前的接收缓存大小所许诺的最新的窗口值,是来自接收端的流量控制。接收端将此窗口值放在TCP报文的首部中的窗口字段,传送给发送端。其二是拥塞窗口cwnd(congestion window)。cwnd是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。
在以太网的环境下,当发送端不知道对方窗口大小的时候,便直接向网络发送多个报文段,直至收到对方通告的窗口大小为止。但如果在发送方和接收方有多个路由器和较慢的链路时,就可能出现一些问题,一些中间路由器必须缓存分组,并有可能耗尽存储空间,这样就会严重降低TCP连接的吞吐量。
现有技术在解决传输拥塞和数据延迟时,通过快重传和快恢复机制解决。如有时一条TCP连接会因等待重传计时器的超时而空闲较长的时间。为此以后又增加了两个新的拥塞控制算法。假定发送端发送了一个报文段M1~M4共4个报文段。假定由于网络拥塞使M3丢失了。接收端后来收到下一个M4,发现其序号不对,但仍收下放在缓存中,同时发出确认,不过发出的是重复的ACK2共(不能够发送ACK4,因为ACK4表示M4和M3都已经收到了)。发送端接着发送M5和M6。接收端收到了M5和M6后,也还要分别发出重复的ACK2。这样,发送端共收到了接收端的四个ACK2,其中三个是重复的。
快重传算法规定,发送端只要一连收到三个重复的ACK即可断定有分组丢失了,就应立即重传丢失的报文段M3而不必继续等待为M3设置的重传计时器的超时。若倒数第三个分组丢失了,TCP只能收到两次重复ACK,因为后续没有分组可以触发新的ACK了。这时,只能通过超时计时器检测到丢包,这比三次ACK方式要慢很多。
因此,会造成数据包传输延迟增大,带宽利用率下降。当一条TCP连接用来传输数据量比较大且连续,且传输完就直接关闭,TCP尾部丢包的后果,相比来说不是很严重。但是,TCP连接上传输的数据通常是不连续的,即数据分很多次传输,且每次的数据量不是很大。例如,在浏览网页时,分布式文件系统中请求数据块时,TCP连接上传输的数据时不连续的。更严重的时,很多时候用户对时延比较敏感,如浏览网页。TCP尾部丢包的后果会严重影响用户体验质量。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种TCP协议的传输方法、装置和系统。所述技术方案如下:
第一方面,本发明实施例提供的TCP协议的传输方法,所述方法包括:
发送一条TCP连接的若干TCP数据包;
当任一TCP数据包为所述TCP连接的尾部数据包时,根据接收端对所述任一TCP数据包的响应消息,继续发送至少一个冗余数据包;
根据接收端对冗余数据包的响应消息,停止发送冗余包。
优选地,所述冗余包是一条TCP连接的尾部最后一个数据包。
优选地,所述冗余包是一条TCP连接的尾部最后一个数据包中一段字节。
优选地,所述方法还包括:
根据丢包率确定发送冗余包的数量。
优选地,所述发送一条TCP连接若干TCP数据包时,所述方法还包括:
每次判断若干TCP数据包是否为一条TCP连接的尾部数据包。
第二方面,本发明实施例提供的TCP协议的传输装置,所述装置包括:
发送模块,用于发送一条TCP连接的若干TCP数据包;
接收模块,用于当任一TCP数据包为所述TCP连接的尾部数据包时,根据接收端对所述任一TCP数据包的响应消息,继续发送至少一个冗余数据包;
终止模块,用于根据接收端对冗余数据包的响应消息,停止发送冗余包。
优选地,所述接收模块发送的冗余包是一条TCP连接的尾部最后一个数据包。
优选地,所述接收模块发送的冗余包是一条TCP连接的尾部最后一个数据包中一段字节。
优选地,接收模块根据丢包率确定发送端发送冗余包的数量。
优选地,发送模块在发送一条TCP连接若干TCP数据包时,每次判断若干TCP数据包是否为一条TCP连接的尾部数据包。
第三方面,本发明实施例提供的TCP协议的传输系统,所述系统包括:接收端和发送端,
其中,发送端发送一条传输控制协议TCP连接的若干TCP数据包;接收端对发送端发送所述TCP数据包进行响应,并向发送端发出响应消息;当任一TCP数据包为所述TCP连接的尾部数据包时,发送端在接收到所述响应消息后继续向接收端发送至少一个冗余数据包;发送端根据接收端对冗余数据包的响应消息,停止发送冗余包。
优选地,发送端的所述冗余包是一条TCP连接的尾部最后一个数据包。
优选地,所述发送端的冗余包是一条TCP连接的尾部最后一个数据包中一段字节。
优选地,发送端根据丢包率确定发送端发送冗余包的数量。
优选地,发送端在发送一条TCP连接若干TCP数据包时,每次判断若干TCP数据包是否为一条TCP连接的尾部数据包。
通过上述方案,本发明实施例提供的TCP协议的传输方法、装置和系统,发送端发送一条TCP连接的若干TCP数据包时,当确定该TCP数据包是该条TCP连接的尾部数据包后,可以继续向接收端发送至少一个冗余数据包,进而避免一条TCP连接时出现TCP尾部数据包丢包问题,减小了数据包传输延迟。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种TCP协议的传输方法流程图;
图2是本发明实施例提供的一种TCP协议的传输装置的结构示意图;
图3是本发明实施例提供的一种TCP协议的传输系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参阅图1,本发明实施例提供的TCP协议的传输方法,包括以下步骤:
步骤101:发送端发送一条TCP连接的若干TCP数据包。
步骤102:当任一TCP数据包为TCP连接的尾部数据包时,根据接收端对任一TCP数据包的响应消息,继续发送至少一个冗余数据包。
步骤103:根据接收端对冗余数据包的响应消息,停止发送冗余包。
通过上述方案,本发明实施例提供的TCP协议的传输方法,发送一条TCP连接的若干TCP数据包时,当确定该TCP数据包是该条TCP连接的尾部数据包后,可以继续向接收端发送至少一个冗余数据包,进而避免一条TCP连接时出现TCP尾部数据包丢包问题,减小了数据包传输延迟。
可以理解,步骤102中的冗余包是一条TCP连接的尾部最后一个数据包,也可以是一条TCP连接的尾部最后一个数据包中一段字节或一个字节或包含一个字节的一段重组数据包。也可以理解,若发送端发现有新的一条TCP连接数据需要传输时,则也停止发送冗余包,因为发送新数据,就可以触发重复ACK。
可以理解,发送端进一步根据丢包率确定发送冗余包的数量。具体的,冗余包的个数和丢包率有关,若丢包率小于某个门限,则每次发送一个。若大于某个门限,则发送两个或者更多个。
此外,发送端还可一直发送最后一个包的最后一个字节。这样发送端便可据此确定冗余包的数量。但是,这样很可能出现重复发送冗余包的情况。针对这种情况,我们可以根据概率公式对其进行优化,进而得到精确的冗余包的数量。
本发明实施例中,步骤101在发送一条TCP连接若干TCP数据包时,还需每次判断若干TCP数据包是否为一条TCP连接的尾部数据包。当任一TCP数据包为一条TCP连接的尾部数据包时,执行步骤102。
请参考图2,本发明实施例还提供的TCP协议的传输装置200,包括:
发送模块201,用于发送一条TCP连接的若干TCP数据包;
接收模块202,用于当任一TCP数据包为TCP连接的尾部数据包时,根据接收端对任一TCP数据包的响应消息,继续发送至少一个冗余数据包;
终止模块203,用于根据接收端对冗余数据包的响应消息,停止发送冗余包。
通过上述方案,本发明实施例提供的TCP协议的传输装置,发送模块201发送一条TCP连接的若干TCP数据包时,当确定该TCP数据包是该条TCP连接的尾部数据包后,可以继续向外部发送至少一个冗余数据包,进而避免一条TCP连接时出现TCP尾部数据包丢包问题,减小了数据包传输延迟。
本实施例中,接收模块202发送的冗余包是一条TCP连接的尾部最后一个数据包也可以是一条TCP连接的尾部最后一个数据包中一段字节或一个字节或包含一个字节的一段重组数据包。或者接收模块202发现有新的一条TCP连接数据需要传输时,则也停止发送冗余包,可以理解为:因为发送新数据,就可以触发重复ACK。
可以理解,接收模块202进一步根据丢包率确定发送端发送冗余包的数量。具体的,冗余包的个数和丢包率有关,若小于某个门限,则每次发送一个。若大于某个门限,则发送两个或者更多个。
本发明实施例中,发送模块201在发送一条TCP连接若干TCP数据包时,每次判断若干TCP数据包是否为一条TCP连接的尾部数据包。
通过上述方案,本实施例进而可以降低TCP尾部丢包造成的影响,减小数据包发送时延,提高带宽利用率,增强用户体验质量。
请参考图3,本发明实施例还提供了TCP协议的传输系统300,包括:发送端301和接收端302,其中:
发送端301发送一条TCP连接的若干TCP数据包;
接收端302对发送端发送数据包进行响应,并向发送端301发出响应消息;
当任一TCP数据包为TCP连接的尾部数据包时,发送端301在接收到响应消息后继续向接收端302发送至少一个冗余数据包;并根据接收端302对冗余数据包的响应消息,停止发送冗余包。
本实施例中,发送端301发送的冗余包是一条TCP连接的尾部最后一个数据包也可以是一条TCP连接的尾部最后一个数据包中一段字节或一个字节或包含一个字节的一段重组数据包。或者发送端301发现有新的一条TCP连接数据需要传输时,则也停止发送冗余包,可以理解为:因为发送新数据,就可以触发重复ACK。
可以理解,发送端301进一步根据丢包率确定发送端发送冗余包的数量。具体的,冗余包的个数和丢包率有关,若小于某个门限,则每次发送一个。若大于某个门限,则发送两个或者更多个。
本发明实施例中,发送端301在发送一条TCP连接若干TCP数据包时,每次判断若干TCP数据包是否为一条TCP连接的尾部数据包。
通过上述方案,本实施例进而可以降低TCP尾部丢包造成的影响,减小数据包发送时延,提高带宽利用率,增强用户体验质量。
通过上述方案,本发明实施例提供的TCP协议的系统,发送端发送一条TCP连接的若干TCP数据包时,当确定该TCP数据包是该条TCP连接的尾部数据包后,可以继续向接收端发送至少一个冗余数据包,进而避免一条TCP连接时出现TCP尾部数据包丢包问题,减小了数据包传输延迟。
需要说明的是:上述实施例提供的TCP协议的传输装置在进行数据传输时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的TCP协议的传输装置与TCP协议的传输方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。