一种tcp连接的建立方法、装置、终端、服务器及系统的利记博彩app

文档序号:8000439阅读:143来源:国知局
一种tcp连接的建立方法、装置、终端、服务器及系统的利记博彩app
【专利摘要】本发明涉及一种TCP连接的建立方法,包括:截获该客户端发出的用于请求建立与服务器之间的传输控制协议TCP连接的同步SYN包;根据该SYN包,模拟服务器的代理机制构造一同步确认SYNACK包,将该SYNACK包返回至该客户端,使客户端根据该SYNACK包发送一确认ACK包至该服务器,从而与该服务器建立TCP连接。本发明还提供一种TCP连接的建立装置、终端、服务器及系统。利用本发明可以减少TCP连接建立过程中客户端与服务器之间握手交互的次数,提高建立TCP连接的速度,并降低服务器的内存消耗。
【专利说明】-种TCP连接的建立方法、装置、终端、服务器及系统

【技术领域】
[0001] 本发明具体实施例涉及网络通信【技术领域】,特别涉及一种传输控制协议TCP连接 的建立方法、装置、终端、服务器及系统。

【背景技术】
[0002] 如图 1 所不,传输控制协议(Transmission Control Protocol,TCP)规定的 TCP 连接建立过程的三次握手(Three-way Handshake)包括:
[0003] 第一步,客户端发送一个请求建立TCP连接的同步(Synchronize, SYN)包给服务 器,该SYN包中TCP首部的SYN标志位被置1,并且该SYN包携带有一个序列号(sequence number)X ;
[0004] 第二步,服务器在接收到该SYN包后,将响应一个同步确认(SYNACK)包给客户端, 表示客户端的请求被接受,该SYNACK包中TCP首部的SYN标志位和ACK标志位都被置1,并 且该SYNACK包中携带有一个确认号(acknowledge number) y以及一个序列号z ;
[0005] 第三步,客户端接收到该SYNACK包后,检查该SYNACK包中的该确认号y是否等于 x+1,若是,则发送一个确认(Acknowledge,ACK)包给服务器,该ACK包中TCP首部的ACK标 志位被置1,且该ACK包携带有一个确认号q。该ACK包还可以附带待发送的数据,例如基 于HTTP (Hypertext transfer protocol,超文本传输协议)的请求(Request)数据。服务 器接收到该ACK包后,若检查到该确认号q等于z+1,则TCP连接建立成功,服务器接收并响 应该数据。
[0006] 上述的三次握手的过程需要客户端与服务器进行多次交互,经过一定的往返时间 (Round-trip Time,简称RTT)的延迟才能成功建立TCP连接。因此,建立TCP连接的速度 将受到RTT延迟的影响。若TCP连接建立的速度较迟缓,会使服务器对客户端发送数据的 响应也较迟缓。客户端需要等待一个RTT延迟才能在该ACK包中附带数据发送至服务器, 并且再等待一个RTT延迟才能接收到服务器对该数据的响应。
[0007] 为了减少RTT延迟,加速TCP连接的建立,Linux系统下的TCP Fast Open (简称 TF0)选项支持在服务器与客户端通过三次握手已经建立过一次TCP连接的情况下,若该 TF0选项被开启,则当服务器再次接收到客户端发送的要求与服务器建立TCP连接的SYN包 时,若验证该客户端已经与服务器成功建立过TCP连接,则可以直接建立与客户端的TCP连 接,以及接收该SYN包附带的数据并响应。然而,该TF0选项还是要在客户端与服务器通过 三次握手的交互过程预先建立过TCP连接的基础上才能应用。
[0008] 此外,上述的三次握手过程需要在服务器中开辟一个较大的内存空间用于存储服 务器在每接收到一个SYN包后产生的半连接状态的条目。随着服务器接收到SYN包的数量 不断增加,将会大量消耗服务器的内存资源。


【发明内容】

[0009] 有鉴于此,有必要提供一种TCP连接的建立方法、装置、终端、服务器及系统,可以 减少TCP连接建立过程中客户端与服务器之间握手交互的次数,提高建立TCP连接的速度, 并降低服务器的内存消耗。
[0010] 一种TCP连接的建立方法,包括以下步骤:截获客户端发出的用于请求建立与服 务器之间的传输控制协议TCP连接的同步SYN包;根据该SYN包,模拟服务器的代理机制构 造一同步确认SYNACK包,将该SYNACK包返回至该客户端,使客户端根据该SYNACK包发送 一确认ACK包至该服务器,从而与该服务器建立TCP连接。
[0011] 一种TCP连接的建立装置,包括:截获模块,用于截获客户端发出的用于请求建立 与服务器之间的传输控制协议TCP连接的同步SYN包;构造模块,用于根据该SYN包,模拟 服务器的代理机制构造一同步确认SYNACK包,将该SYNACK包返回至该客户端,使客户端根 据该SYNACK包发送一确认ACK包至该服务器,从而与该服务器建立TCP连接。
[0012] 一种终端,包括如上所述的TCP连接的建立装置。一种系统,包括至少一个服务器 和至少一个如前述的终端。
[0013] 一种服务器,包括如上所述的TCP连接的建立装置。一种系统,包括至少一个终 端,至少一个服务器,所述至少一个终端和所述至少一个服务器通过至少一个如前述的服 务器连接。
[0014] 相较于现有技术,本发明TCP连接的建立方法、装置、终端、服务器及系统,通过截 获客户端发送的SYN包,并模拟服务器向客户端返回SYNACK包,从而建立客户端与服务器 之间的TCP连接,可以减少TCP连接建立过程中客户端与服务器之间握手交互的次数,提高 建立TCP连接的速度,并降低服务器的内存消耗。
[0015] 为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例, 并配合所附图式,作详细说明如下。

【专利附图】

【附图说明】
[0016] 图1为建立TCP连接的三次握手的过程示意图。
[0017] 图2为本发明第一实施例提供的TCP连接的建立方法应用时的环境示意图。
[0018] 图3为本发明第一实施例提供的TCP连接的建立方法的流程图。
[0019] 图4为本发明第二实施例提供的TCP连接的建立装置的框图。
[0020] 图5为客户端与服务器通过图4中的TCP连接的建立装置建立TCP连接的交互过 程不意图。
[0021] 图6为本发明第三实施例提供的一种终端的框图。
[0022] 图7为本发明第四实施例提供的一种系统的框图。
[0023] 图8为本发明第五实施例提供的一种服务器的框图。
[0024] 图9为本发明第六实施例提供的一种系统的框图。

【具体实施方式】
[0025] 为更进一步阐述本发明为实现预定发明目的所采取的技术手段及功效,以下结合 附图及较佳实施例,对依据本发明的【具体实施方式】、结构、特征及其功效,详细说明如后。
[0026] 参阅图2所示,为本发明第一实施例提供的TCP (Transmission Control Protocol,传输控制协议)连接的建立方法应用时的环境示意图。在本实施例中,该TCP连 接的建立方法用于在服务器2与终端1中的客户端10之间通过网络3建立TCP连接。该 终端1的具体实例包括但并不限于台式计算机、便携式计算机、智能手机、平板电脑或者其 他类似的运算装置。网络3可为任意的网络连接方式,例如互联网(Internet)、移动互联网 (如电信运营商提供的2G、3G网络)、局域网(有线或者无线)等。
[0027] 参阅图3所示,本发明第一实施例提供一种TCP连接的建立方法,该TCP连接的建 立方法包括以下步骤:
[0028] 步骤S1,截获该客户端10发出的用于请求建立与服务器2之间的传输控制协议 TCP连接的同步SYN包;
[0029] 步骤S2,根据该SYN包,模拟服务器2的代理机制构造一同步确认SYNACK包,将该 SYNACK包返回至该客户端10,使客户端10根据该SYNACK包发送一确认ACK包至该服务器 2,从而与该服务器2建立TCP连接。
[0030] 按照上述的TCP连接的建立方法,通过截获客户端10发送的SYN包,并模拟服务 器2向客户端10返回SYNACK包,从而建立客户端10与服务器2之间的TCP连接,可以减 少TCP连接建立过程中客户端10与服务器2之间握手交互的次数,提高建立TCP连接的速 度,并降低服务器的内存消耗。
[0031] 在一些实例中,上述方法的各步骤的实现细节如下:
[0032] 步骤S1所述的SYN包中TCP首部的SYN标志位被置1,表示请求与服务器2建立 TCP连接。此外,该SYN包还携带有一个序列号(sequence number) X。该SYN包中的序列 号X可以由客户端10按照一定的规律计算得到,或者随机产生,例如该x=1234567。
[0033] 步骤S2所述的服务器2的代理机制例如为Linux系统支持的syn-cookies机制。 若服务器2不通过该代理机制而直接接收到该SYN包,将检查该SYN包中TCP首部的SYN标 志位是否为1,若是,则确认客户端10要求与服务器2建立TCP连接,并向客户端10返回一 个SYNACK包。该SYNACK包中TCP首部的SYN标志位和ACK标志位都被置1,且该SYNACK 包括一个确认号(acknowledge number)y和序列号z。该确认号y是在该SYN包中获取的 序列号X的基础上加1得到的,因此,y=x+l=1234568。该序列号z通常由服务器2按照一 定的规律计算得到或随机产生。
[0034] 但是,若服务器2启用该代理机制,例如所述syn-cookies机制,则该代理机制将 代理服务器2接收该SYN包。若该代理机制确认该SYN包中TCP首部的SYN标志为1,则也 会构造一个包括一个确认号y和一个序列号a的SYNACK包,并将所构造的SYNACK包返回 至客户端10。该SYNACK包中TCP首部的SYN标志位和ACK标志位都被置1。该确认号y 同样由所述序列号X加1得到,而该序列号a可以通过使用一预定算法,例如通过对该SYN 包的源地址(客户端10的IP地址)、目标地址(服务器2的IP地址)、源端口、目标端口等数 据进行加密运算,例如哈希(Hash)加密运算得到,该序列号a例如为7654321。
[0035] 该代理机制一般被嵌入在服务器2的Linux系统的内核中实现,在本实施例中,可 以通过修改内核源代码的形式将服务器2的该代理机制暴露出来,以模拟服务器2的该代 理机制。例如,可以将服务器2的该代理机制同步到终端1或另一服务器中。将该代理机 制同步到终端1或所述另一服务器中的方法可以是将服务器2的该代理机制的源代码写入 终端1或所述另一服务器中以执行。因此,当步骤S1截获客户端10发出的该SYN包后,步 骤S2可以模拟服务器2的该代理机制构造该SYNACK包,即构造该SYNACK包的方法与上一 段中所述的服务器2的代理机制构造该SYNACK包的方法相同,该SYNACK包中TCP首部的 SYN标志位和ACK标志位也都被置1,且该SYNACK包中也包括所述确认号y和所述序列号 a。然后,步骤S2将所构造的该SYNACK包返回至客户端10。
[0036] 客户端10接收到该SYNACK包后,若检查到该SYNACK包中TCP首部的SYN标志位 和ACK标志位都被置1,则验证该SYNACK包是否合法。具体而言,客户端10将检查该SYNACK 包中的确认号y是否等客户端10发出的SYN包中序列号X加1,若是,则客户端10验证该 SYNACK包合法,然后向服务器2发送一个ACK包,该ACK包中TCP首部的ACK标志位被置1, 且该ACK包携带有一个确认号q。该确认号q是在该SYNACK包中序列号a的基础上加1得 到的,即q=a+l=7654322。此外,客户端10还可将待发送数据,例如基于HTTP (Hypertext transfer protocol,超文本传输协议)的请求(Request)数据与该ACK包共同发送至服务 器2。
[0037] 服务器2的代理机制代理服务器2接收到该ACK包后,若检查到该ACK包中TCP 首部的ACK标志位被置1,则验证该ACK包是否合法。具体而言,服务器2的该代理机制将 按照上述的步骤S2模拟服务器2的代理机制构造 SYNACK包时生成序列号a的方法,即使 用所述的预定算法,例如对该ACK包的源地址(客户端10的IP地址)、目标地址(服务器2 的IP地址)、源端口、目标端口等数据进行加密运算,得到一个数值,称之为cookie。然后, 服务器2的该代理机制判断该ACK包中的确认号q减1后,是否与该cookie相等。由于 服务器2的代理机制生成该cookie的方法和终端1模拟服务器2的代理机制生成序列号 a的方法相同,所以该cookie与序列号a也应当相等。而确认号q = a+1,因此,该确认号 q减1后,与该cookie也应当相等。若服务器2的该代理机制判断该确认号q减1后与该 cookie相等,则验证该ACK包合法,服务器2与客户端10成功建立TCP连接。
[0038] 综上所述,由于该SYN包被截获而未发送至服务器2,通过模拟服务器2向客户端 返回SYNACK包,使三次握手过程的前两次都未经过客户端10与服务器2的交互过程,从而 减少TCP连接建立过程中客户端10与服务器2之间握手交互的次数,可以提高建立TCP连 接的速度。此外,由于服务器2未接收到该SYN包,因此无需分配内存空间专门存储接收到 该SYN包后产生的半连接状态的条目,从而可以降低服务器2的内存消耗。
[0039] 参阅图4所示,本发明第二实施例提供一种TCP连接的建立装置100,其包括截获 模块101和构造模块102。可以理解,上述的各模块是指计算机程序或者程序段,用于执行 某一项或多项特定的功能。此外,上述各模块的区分并不代表实际的程序代码也必须是分 开的。
[0040] 截获模块101,用于截获该客户端10发出的用于请求建立与服务器2之间的传输 控制协议TCP连接的同步SYN包。该SYN包携带有一序列号X。
[0041] 构造模块102,用于根据该SYN包,模拟服务器2的代理机制构造一同步确认 SYNACK包,将该SYNACK包返回至该客户端10,使客户端10根据该SYNACK包发送一确认ACK 包至该服务器2,从而与该服务器2建立TCP连接。该服务器2的代理机制例如为Linux系 统支持的syn-cookies机制。具体而言,构造模块102通过对该序列号X加1生成一确认 号y,并使用一预定算法生成一序列号a,然后生成携带该确认号y和序列号a的该SYNACK 包,并将该SYNACK包返回至该客户端10。参阅图5所示,为客户端10与服务器2通过该 TCP连接的建立装置100建立TCP连接的交互过程示意图。
[0042] 客户端10接收到该SYNACK包后,将先根据该确认号y验证该SYNACK包是否合 法。若该确认号y等于该序列号X加1,则验证该SYNACK包合法,然后向服务器2发送该 ACK包。该ACK包携带有一确认号q。该确认号q应当等于序列号a加1。此外,客户端10 还可将待发送数据与该ACK包共同发送至服务器2。
[0043] 服务器2接收到该ACK包后,将根据该确认号q通过所述代理机制验证该ACK包 是否合法。具体而言,服务器2的该代理机制使用所述预定算法生成一个数值,然后判断该 确认号q减1后与该数值是否相等,若是,则验证该ACK包合法,服务器2与客户端10成功 建立TCP连接。
[0044] 对于以上各模块的具体工作过程,可进一步参考本发明第一实施例提供的TCP连 接的建立方法,在此不再重复。
[0045] 综上所述,本实施例的TCP连接的建立装置100,通过截获客户端10发送的SYN 包,并模拟服务器2向客户端10返回SYNACK包,从而建立客户端10与服务器2之间的TCP 连接,可以减少TCP连接建立过程中客户端10与服务器2之间握手交互的次数,提高建立 TCP连接的速度,并降低服务器的内存消耗。
[0046] 参阅图6所示,本发明第三实施例提供所述的终端1,该终端1包括本发明第二实 施例提供的TCP连接的建立装置100。通过终端1中的该TCP连接的建立装置100,可以在 服务器2与终端1中的客户端10之间通过网络3建立TCP连接。
[0047] 参阅图7所示,本发明第四实施例提供一种系统200,该系统200包括至少一个所 述服务器2和至少一个本发明第三实施例提供的所述终端1。通过该系统200可以在服务 器2与终端1中的客户端10之间通过网络3建立TCP连接。
[0048] 参阅图8所示,本发明第五实施例提供一种服务器30,该服务器30包括本发明第 二实施例提供的TCP连接的建立装置100。所述服务器30通过网络3分别与第一实施例或 第二实施例中所述的终端1和服务器2连接。通过服务器30可以在服务器2与第一实施 例或第二实施例中所述的终端1中的客户端10之间通过网络3建立TCP连接。
[0049] 参阅图9所示,本发明第六实施例提供一种系统300,该系统300包括至少一个第 一实施例或第二实施例中所述的终端1,至少一个所述服务器2,所述至少一个终端1和至 少一个服务器2通过至少一个本发明第五实施例提供的服务器30连接。通过该系统300 可以在服务器2与第一实施例或第二实施例中所述的终端1中的客户端10之间通过网络 3建立TCP连接。
[0050] 此外,本发明实施例还提供一种计算机可读存储介质,其内存储有计算机可执行 指令,上述的计算机可读存储介质例如为非易失性存储器例如光盘、硬盘、或者闪存。上述 的计算机可执行指令用于让计算机或者类似的运算装置完成上述的TCP连接的建立方法 中的各种操作。
[0051] 以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽 然本发明已以较佳实施例揭示如上,然而并非用以限定本发明,任何本领域技术人员,在不 脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变 化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施 例所作的任何简介修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
【权利要求】
1. 一种TCP连接的建立方法,其特征在于,该方法包括以下步骤: 截获客户端发出的用于请求建立与服务器之间的传输控制协议TCP连接的同步SYN 包; 根据该SYN包,模拟服务器的代理机制构造一同步确认SYNACK包,将该SYNACK包返回 至该客户端,使客户端根据该SYNACK包发送一确认ACK包至该服务器,从而与该服务器建 立TCP连接。
2. 如权利要求1所述的TCP连接的建立方法,其特征在于,所述服务器的代理机制为 syn-cookies 机制。
3. 如权利要求1所述的TCP连接的建立方法,其特征在于,所述SYN包携带有一序列号 x〇
4. 如权利要求3所述的TCP连接的建立方法,其特征在于,所述模拟服务器的代理机制 构造一同步确认SYNACK包的步骤包括: 通过对该序列号X加1生成一确认号y,并使用预定算法生成一序列号a,然后生成携 带该确认号y和序列号a的该SYNACK包。
5. 如权利要求4所述的TCP连接的建立方法,其特征在于,所述客户端接收到该 SYNACK包后,将先根据该确认号y验证该SYNACK包是否合法,若该SYNACK包合法,再向服 务器发送该ACK包。
6. 如权利要求5所述的TCP连接的建立方法,其特征在于,该ACK包携带有一确认号 q〇
7. 如权利要求6所述的TCP连接的建立方法,其特征在于,所述服务器接收到该ACK包 后,将根据该确认号q通过所述代理机制验证该ACK包是否合法,若该ACK包合法,则与该 客户端建立TCP连接。
8. 如权利要求7所述的TCP连接的建立方法,其特征在于,所述服务器验证该ACK包是 否合法的步骤包括: 通过所述代理机制使用所述的预定算法生成一个数值; 判断该确认号q减1后与该数值是否相等,若是,则验证该ACK包合法。
9. 如权利要求1所述的TCP连接的建立方法,其特征在于,所述客户端将该ACK包与待 发送数据共同发送至服务器。
10. -种TCP连接的建立装置,其特征在于,该装置包括: 截获模块,用于截获客户端发出的用于请求建立与服务器之间的传输控制协议TCP连 接的同步SYN包; 构造模块,用于根据该SYN包,模拟服务器的代理机制构造一同步确认SYNACK包,将该 SYNACK包返回至该客户端,使客户端根据该SYNACK包发送一确认ACK包至该服务器,从而 与该服务器建立TCP连接。
11. 如权利要求10所述的TCP连接的建立装置,其特征在于,所述服务器的代理机制为 syn-cookies 机制。
12. 如权利要求10所述的TCP连接的建立装置,其特征在于,所述SYN包携带有一序列 号X。
13. 如权利要求12所述的TCP连接的建立装置,其特征在于,所述模拟服务器的代理机 制构造一同步确认SYNACK包包括: 通过对该序列号X加1生成一确认号y,并使用预定算法生成一序列号a,然后生成携 带该确认号y和序列号a的该SYNACK包。
14. 如权利要求13所述的TCP连接的建立装置,其特征在于,所述客户端接收到该 SYNACK包后,将先根据该确认号y验证该SYNACK包是否合法,若该SYNACK包合法,再向服 务器发送该ACK包。
15. 如权利要求14所述的TCP连接的建立装置,其特征在于,该ACK包携带有一确认号 q〇
16. 如权利要求15所述的TCP连接的建立装置,其特征在于,所述服务器接收到该ACK 包后,将根据该确认号q通过所述代理机制验证该ACK包是否合法,若该ACK包合法,则与 该客户端建立TCP连接。
17. 如权利要求16所述的TCP连接的建立装置,其特征在于,所述服务器验证该ACK包 是否合法包括: 通过所述代理机制使用所述的预定算法生成一个数值; 判断该确认号q减1后与该数值是否相等,若是,则验证该ACK包合法。
18. 如权利要求10所述的TCP连接的建立装置,其特征在于,所述客户端将该ACK包与 待发送数据共同发送至服务器。
19. 一种终端,其特征在于,所述终端包括如权利要求10-18任一项所述的TCP连接的 建立装置。
20. -种系统,其特征在于,所述系统包括至少一个服务器,和至少一个如权利要求19 所述的终端。
21. -种服务器,其特征在于,所述服务器包括如权利要求10-18任一项所述的TCP连 接的建立装置。
22. -种系统,其特征在于,所述系统包括至少一个终端,至少一个服务器,所述至少一 个终端和所述至少一个服务器通过至少一个如权利要求21所述的服务器连接。
【文档编号】H04L1/16GK104219215SQ201310220255
【公开日】2014年12月17日 申请日期:2013年6月5日 优先权日:2013年6月5日
【发明者】余子军, 刘贤彬 申请人:深圳市腾讯计算机系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1