一种通信方法、客户端及通信系统技术方案

技术编号:21577087 阅读:60 留言:0更新日期:2019-07-10 16:57
本申请公开了一种通信方法、客户端及通信系统;上述通信方法,包括:客户端在与服务端建立传输控制协议TCP连接时,发送TFO的SYN包,并在发送TFO的SYN包之后且TFO的SYN包超时之前发送标准SYN包。如此,通过多发送一个标准SYN包来发现TFO是否失败,从而保证在TFO不可用场景下的通信性能。

A Communication Method, Client and Communication System

【技术实现步骤摘要】
一种通信方法、客户端及通信系统
本申请涉及但不限于通信技术,尤其涉及一种通信方法、客户端及通信系统。
技术介绍
图1为标准的传输控制协议(TCP,TransmissionControlProtocol)规定的TCP连接建立过程的三次握手交互示意图。如图1所示,TCP的三次握手流程包括:第一次握手:客户端(Client)发送一个同步(SYN,Synchronous)包,该SYN包中SYN标志位置为1,且序号(sequencenumber,以下简称为seq)可以为M,客户端进入SYN_SEND状态;其中,M值可以随机确定;第二次握手:服务端(Server)在收到客户端的SYN包后,根据SYN标志位为1可知客户端请求建立连接,服务端向客户端反馈SYNACK(同步确认)包,表明客户端的请求被接受;服务端在SYNACK包中,将SYN标志位和ACK标志位都置为1,序号seq设为N,确认序号(Acknumber)设为M+1,即确认序号等于客户端发送的SYN包的序号加1;服务端进入SYN_RECV状态;其中,N值也可以随机确定;第三次握手:客户端收到服务端返回的SYNACK包后,在检查到SYNACK包中ACK标志位为1,且确认序号为M+1时,则返回一个确认(ACK)包给服务端,在该ACK包中,将ACK标志位设为1,确认序号设为N+1;服务端接收到该ACK包之后,在检查到ACK包中ACK标志位为1,且确认序号为N+1时,则说明客户端与服务端之间的TCP连接建立成功,客户端和服务端进入ESTABLISHED(连接建立)状态。通过三次握手,客户端和服务端之间成功建立TCP连接后,客户端和服务端之间可以基于建立的TCP连接进行数据传输。根据图1可知,在标准TCP中,三次握手会浪费一个RTT(往返时延,Round-TripTime)。TFO(TCPFastOpen)是由Google发布的一种对TCP(TransmissionControlProtocol,传输控制协议)的扩展。TFO允许在TCP三次握手期间进行数据交换,从而节约一次RTT时间。图2为TFO的交互流程图。如图2所示,TFO的交互流程包括:第一步、客户端发送一个带有业务数据的SYN包(即,TFO的SYN包),而且可以在FastOpen选项中携带之前通过正常连接获取的cookie(即,FOC(FastOpenCookie));第二步、服务端接收SYN包后,验证其中携带的cookie;如果该cookie有效,则服务端返回SYNACK包,并将SYN包携带的业务数据传递给应用层;如果该cookie无效,则服务端可以丢掉SYN包中的业务数据,同时向客户端返回一个SYNACK包来确认SYN包中的序号;第三步、当cookie有效时,在连接完成之前,服务端可以给客户端发送响应数据;第四步、客户端收到SYNACK包后,发送ACK包来确认服务端的SYNACK包和数据;若客户端在第一步中发送的SYN包中的业务数据没有被服务器确认,则客户端可以在这个ACK包中重传对应的业务数据。TFO过程的其余连接处理类似标准的TCP连接过程。需要说明的是,客户端一旦获取到FOC,可以重复TFO过程直到cookie过期。在使用TFO之前,客户端可以通过一个普通的三次握手连接获取FOC。例如,客户端发送一个带有FastOpen选项的SYN包,同时携带一个空的cookie域来请求一个cookie;服务端产生一个cookie,然后通过一个SYNACK包的FastOpen选项来返回给客户端;客户端缓存这个cookie以备后续使用TFO时使用。然而,在互联网环境下,由于互联网上路由设备和运营商网间设备的限制,导致TFO在部分网络环境下失效退化为标准TCP,具体而言,如果中间设备不支持TFO,就会导致TFO超时退化为标准的TCP连接,从而使得整体上的连接速度甚至低于标准的TCP连接速度。
技术实现思路
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。本申请实施例提供一种通信方法、客户端及通信系统,能够保障在TFO不可用场景下的通信性能。第一方面,本申请实施例提供一种通信方法,包括:客户端在与服务端建立TCP连接时,发送TFO的SYN包,并在发送所述TFO的SYN包之后并且所述TFO的SYN包超时之前发送标准SYN包。在示例性实施方式中,所述TFO的SYN包的发送时刻与所述标准SYN包的发送时刻之间的间隔时长可以大于或等于0且小于或等于20毫秒。在示例性实施方式中,所述发送TFO的SYN包和标准SYN包之后,上述方法还可以包括:所述客户端接收ACK包;根据所述ACK包,判断TFO是否失败。在示例性实施方式中,所述根据所述ACK包,判断TFO是否失败,可以包括:在所述ACK包携带的确认序号等于TFO的SYN包的序号和所述SYN包携带的数据长度之和加1时,确认TFO成功;在所述ACK包携带的确认序号等于标准SYN包的序号加1时,确认TFO失败。第二方面,本申请实施例提供一种客户端,包括:发送模块,适于在与服务端建立TCP连接时,发送TFO的SYN包,并在发送所述TFO的SYN包之后且所述TFO的SYN包超时之前发送标准SYN包。在示例性实施方式中,所述TFO的SYN包的发送时刻与所述标准SYN包的发送时刻之间的间隔时长可以大于或等于0且小于或等于20毫秒。在示例性实施方式中,所述客户端还可以包括:接收模块,适于接收ACK包;处理模块,适于根据所述ACK包,判断TFO是否失败。在示例性实施方式中,所述处理模块可以适于通过以下方式判断TFO是否失败:在所述ACK包携带的确认序号等于TFO的SYN包的序号和所述SYN包携带的数据长度之和加1时,确认TFO成功;在所述ACK包携带的确认序号等于标准SYN包的序号加1时,确认TFO失败。第三方面,本申请实施例提供一种通信系统,包括:客户端、服务端以及中间设备;所述客户端适于在通过所述中间设备与所述服务端建立TCP连接时,发送TFO的SYN包,并在发送所述TFO的SYN包之后且所述TFO的SYN包超时之前发送标准SYN包;所述中间设备适于在自身支持TFO时,将所述TFO的SYN包发送给所述服务端,并丢弃所述标准SYN包;在自身不支持TFO时,将所述标准SYN包发送给所述服务端,并丢弃所述TFO的SYN包。在示例性实施方式中,在所述中间设备支持TFO时,所述服务端接收到所述TFO的SYN包后,返回的ACK包携带的确认序号等于所述TFO的SYN包的序号和所述SYN包携带的数据长度之和加1;在所述中间设备不支持TFO时,所述服务端接收到所述标准SYN包后,返回的ACK包携带的确认序号等于所述标准SYN包的序号加1。第四方面,本申请实施例提供一种终端设备,包括:存储器以及处理器;其中,所述存储器用于存储通信程序,所述通信程序被所述处理器读取执行时,执行以下操作:在与服务端建立TCP连接时,发送TFO的SYN包,并在发送所述TFO的SYN包之后且所述TFO的SYN包超时之前发送标准SYN包。此外,本申请实施例还提供一种计算机可读介质,存储有通信程序,所述通信程序被处理器执行时实现以下操作:在与服务端建立TCP连接时,发送TFO的SYN包,并在发送所述TFO的本文档来自技高网
...

【技术保护点】
1.一种通信方法,其特征在于,包括:客户端在与服务端建立传输控制协议TCP连接时,发送TFO的同步SYN包,并在发送所述TFO的SYN包之后并且所述TFO的SYN包超时之前发送标准SYN包。

【技术特征摘要】
1.一种通信方法,其特征在于,包括:客户端在与服务端建立传输控制协议TCP连接时,发送TFO的同步SYN包,并在发送所述TFO的SYN包之后并且所述TFO的SYN包超时之前发送标准SYN包。2.根据权利要求1所述的方法,其特征在于,所述TFO的SYN包的发送时刻与所述标准SYN包的发送时刻之间的间隔时长大于或等于0且小于或等于20毫秒。3.根据权利要求1所述的方法,其特征在于,所述发送TFO的SYN包和标准SYN包之后,所述方法还包括:所述客户端接收确认ACK包;根据所述ACK包,判断TFO是否失败。4.根据权利要求3所述的方法,其特征在于,所述根据所述ACK包,判断TFO是否失败,包括:在所述ACK包携带的确认序号等于TFO的SYN包的序号和所述SYN包携带的数据长度之和加1时,确认TFO成功;在所述ACK包携带的确认序号等于标准SYN包的序号加1时,确认TFO失败。5.一种客户端,其特征在于,包括:发送模块,适于在与服务端建立传输控制协议TCP连接时,发送TFO的同步SYN包,并在发送所述TFO的SYN包之后且所述TFO的SYN包超时之前发送标准SYN包。6.根据权利要求5所述的客户端,其特征在于,所述TFO的SYN包的发送时刻与所述标准SYN包的发送时刻之间的间隔时长大于或等于0且小于或等于20毫秒。7.根据权利要求5所述的客户端,其特征在于,所述客户端还包括:接收模块,适于接收确认ACK包;处理模块,适于根据所述ACK包,判断TFO是否失败。8.根据权利要求7所述的客户端,其特征在于,所述处理模块适于通过以下方式判断TFO是否失败:在所述ACK包携带的确认序号等于TFO的SYN包的序号和所...

【专利技术属性】
技术研发人员:刘廷伟韩瑞闵庆欢朱照远
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1