分布式中转服务器网络辅助的多路径数据传输系统与方法_3

文档序号:8398161阅读:来源:国知局
:对端的端口号;
[0072]Channel ID:通道标号;
[0073]Channel Sequence Number:通道字节流编号;
[0074]Sequence Number:连接字节流编号;
[0075]Time Stamp:时间戮;
[0076]Address:对端的IP地址,该字段根据IPVer指示的IP协议版本,长度可能为4字节(IPv4)或 32 字节(IPv6);
[0077]Data:有效数据。
[0078]二、控制报文
[0079]控制报文包括控制报文头部和附加信息(Addit1nal Informat1n)。在图3中给出了本发明中所涉及的控制报文的数据格式,如图所示,控制报文头部包括:第O个bit为标识符,值为I时表示这个报文为控制报文;第I?7bit为Control Type字段,指示控制报文类型;第8?Ilbit为IPVer字段,标识报文头内的IP地址是IPv4还是IPv6 ;第12?15bit为Shift字段,指定Window字段的左移量,取值O?14 ;第16?31bit为Window字段,用于通知数据传输另一方可用的接收窗口大小;第32?47bit为Port字段,是对端的端口(若控制报文由发送端发出,则所述对端为接收端,反之,所述对端为发送端);第48?63bit为Channel ID,是通道编号;第64?95bit为Field I字段,由控制报文解释;第96?127bit为Field 2字段,由控制报文解释;第128?159bit为Time Stamp,是时间戳;最后是对端的地址Address,取决于IPVer指示的IP协议版本号,可能为32bit(IPv4)或者128bit (IPv6)。附加信息字段由控制报文类型决定其包含的实际信息。
[0080]根据Control Type的数值,控制报文可分为:
[0081]0x1 (CTL_C0NNECT):通道握手报文,由发送端在通道建立时发送。Field I是通道发送端初始字节流编号,Field 2是连接发送端初始字节流编号,Addit1nal Informat1n包含最大分节大小(MSS)信息;
[0082]0x2 (CTL_C0NNECT_ACK):连接回复报文,由接收端在收到CTL_C0NNECT时回复使用。Field I是通道发送端初始字节流编号,Field 2是连接发送端初始字节流编号,Addit1nal Informat1n除了包含MSS信息外,还包括相应CTL_C0NNECT报文的两个初始字节流编号;
[0083]0x3 (CTL_ACK):ACK报文,用于确认已接收到的数据。Field I是通道累积字节流序列号,Field 2是连接累积字节流序列号,Addit1nal Informat1n无数据;
[0084]0x4(CTL_NAK):NAK报文,用于确认丢失的数据,供数据发送方重传。Field I是通道累积字节流序列号,Field 2是连接累积字节流序列号,Addit1nal Informat1n包含一组序列号范围,每两个序列号表示一个丢失范围[范围起始序列号,范围终止序列号+1),序列号都是连接字节流序列号或通道字节流序列号;
[0085]0x5 (CTL_CL0SE_CHANNEL):通道关闭报文,用于发送端关闭通道。Field UField
2、Addit1nal Informat1n 无定义;
[0086]0x6 (CTL_CL0SE_CHANNEL_ACK):通道关闭 ACK,用于接收端回复 CTL_CL0SE_CHANNEL。Field 1> Field 2> Addit1nal Informat1n 无定义;
[0087]0x7 (CTL_CL0SE_CHANNEL_ACK2):通道关闭 ACK 的 ACK,用于发送端回复 CTL_CLOSE_CHANNEL_ACK。Field 1> Field 2> Addit1nal Informat1n 无定义;
[0088]0x8 (CTL_CL0SE_C0NNECT10N):连接关闭报文,用于直接关闭连接,可以由发送端或接收端发起° Field l、Field 2> Addit1nal Informat1n 无定义;
[0089]0x9 (CTL_CL0SE_C0NNECT10N_ACK):连接关闭 ACK,用于回复 CTL_CL0SE_CONNECT1N。Field 1> Field 2> Addit1nal Informat1n 无定义;
[0090]0x10 (CTL_CL0SE_C0NNECT10N_ACK2):连接关闭 ACK 的 ACK,用于发送端回复 CTL_CL0SE_C0NNECT10N_ACK。Field UField 2、Addit1nal Informat1n 无定义;
[0091]0xll(CTL_KEEP_ALIVE):通道保活报文,Field K Field 2、Addit1nalInformat1n 无定义;
[0092]0x3ff (CTL_ERR0R),错误信息报文,Field I 定义错误代号,Field 2、Addit1nalInformat1n由相关错误填写;
[0093]0x11?Oxff:协议保留报文类型编号,用于未来扩展;
[0094]0x100?0x2ff:上层应用自定义报文。
[0095]从对控制报文的上述描述来看,在本发明中,一条连接可利用累积确认报文(ACK)确认已经成功传输的数据,利用否认报文(NAK)汇报丢失的数据。ACK报文包含一个通道字节流序列号和一个连接字节流序列号,位于序列号之前的通道和连接数据全部被成功接收。NAK报文包含若干连接字节流数据序列号范围和通道字节流序列号范围,范围内的数据都未被接收到。ACK报文沿相应数据报文的通道反向返回,数据报文中可以包含时间戳信息,用于估算往返延时(Round-trip Delay)。NAK报文可以沿原通道或者任意一条通道发送,推荐使用传输性能比较高的通道,在发送时可以多个副本沿不同的通道同时发送,以减少报文丢失的概率。
[0096]本发明的多路径数据传输方法包括建立通道、传输数据、关闭通道、关闭连接四个阶段,下面分别对这些阶段中的相关步骤做具体描述。
[0097]前文中提到,连接中的数据传输通道分为两类,第一类是不使用中转服务器,发送端与接收端之间直接进行数据传输(下文中也可将此类数据传输通道称为第一类通道);第二类是通过中转服务器在发送端与接收端之间建立的传输通道(下文中也可将此类数据传输通道称为第二类通道)。下面分别对这两类数据传输通道的建立过程进行说明。
[0098]第一类通道的建立步骤如下:
[0099]步骤101 )、发送端构造CTL_C0NNECT报文,该报文包含通道初始序列号、连接初始序列号、最大分节大小等信息,该报文将由发送端直接发送给接收端。为了区分其它的通道,可以采用多种方式,例如该通道的通道编号为一个特殊值(O或其它)。
[0100]步骤102)、接收端接收到CTL_C0NNECT报文,判断报文是否合法,如果报文合法,构造并返回 CTL_C0NNECT_ACK。
[0101]步骤103)、发送端接收到CTL_C0NNECT_ACK,发送端的通道建立过程已经完成,可以等待一段时间(暂时没有可发送的有效数据)或者立刻发送一个数据报文(有效数据可以为空),接收端接收到该数据报文后,接收端的通道建立过程完成。如果该通道是连接建立的第一个通道,通道的建立同时意味着连接的建立。
[0102]在上述步骤中,如果发生CTL_C0NNECT、CTL_CONNECT_ACK丢失的情况,会导致相关报文的重传。如果重传超过一定次数或时间,通道将建立失败。在步骤102)中,如果检验CTL_C0NNECT报文不合法,将返回CTL_ERR0R报文。
[0103]第二类通道的步骤如下:
[0104]步骤201)、发送端获得可用于建立通道的中转服务器信息;该中转服务器信息的获取方式可以有多种,如从索引服务器实时请求的,或从发送端已缓存的信息中获取。
[0105]步骤202)、发送端构造CTL_C0NNECT报文,该报文包含接收端IP地址、接收端端口号、通道初始序列号、连接初始序列号、最大分节大小、一个尚未使用的通道编号等信息,该报文由发送端发送给中转服务器。
[0106]步骤203)、中转服务器从所接收的CTL_C0NNECT报文中提取接收端IP地址和接收端端口号信息,然后按照控制报文的来源将Address和Port字段修改为发送端IP地址和发送端端口号,该控制报文接着被发往接收端。
[0107]步骤204)、接收端接收到CTL_C0NNECT报文,判断报文是否合法,如果报文合法,构造并返回 CTL_CONNECT_ACK。
[0108]步骤205)、CTL_CONNECT_ACK经中转服务器中转后转发给发送端。
[0109]步骤206)、发送端接收到CTL_CONNECT_ACK,发送端的通道建立过程已经完成,可以等待一段时间(暂时没有可发送的有效数据)或者立刻发送一个数据报文(有效数据可以为空),接收端接收到该数据报文后,接收端的通道建立过程完成。如果该通道是连接建立的第一个通道,通道的建立同时意味着连接的建立。
[0110]在上述步骤中,如果发生CTL_C0NNECT、CTL_CONNECT_ACK丢失的情况,会导致相关报文的重传。如果重传超过一定次数或时间,通道将建立失败。在步骤204)中,如果检验CTL_C0NNECT报文不合法,将返回CTL_ERR0R报文。
[0111]在通道建立后,一个数据包(包括数据报文和控制报文)通过通道实现从发送端到接收端的传输。数据包在第一类通道和第二类通道上的传输过程略有不同,下面分别加以描述。
[0112]数据包在第一类通道上的传输包括以下步骤:
[0113]步骤301)、数据发送方构造数据包,所构造数据包中的Address字段为接收地址,Port字段为接收端端口,此外,该数据包中还带有用于指示第一类通道的相关标记,如通道编号为一特殊值;
[0114]步骤302 )、数据接收方收到数据包后,通过数据包IP协议部分的源地址和源端口判断是否属于本连接,若属于,则进一步判断数据包各项字段的有效性,提取并缓存数据报文的有效数据,最后发送ACK或NAK报文应答。
[0115]数据包在第二类通道上的传输包括以下步骤:
[0116]步骤401)、数据发送方构造数据包,所构造
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1