一种主备用双机进行tcp连接倒换的方法

文档序号:7559198阅读:452来源:国知局
专利名称:一种主备用双机进行tcp连接倒换的方法
技术领域
本发明设计属于通信技术领域,涉及一种主备用双机运用传输控制协议(TCP,Transmission Control Protocol)与远端机通信时进行TCP连接倒换的方法。
背景技术
在计算机网络的通信中,本地计算机与远端计算机常采用TCP协议进行消息传递。本地计算机出于稳定性等其它考虑,经常采用主备用双机来进行保障。主备用双机的工作方式的好处在于主用机因为某种原因需要停止工作,或者主用机因为故障死机的情况下,备用机可以接替主用机继续与远端计算机保持通信。
TCP协议是一种有连接的可靠传输协议,两台计算机之间使用TCP传输消息时,必须先建立好一条TCP连接,连接的建立需要一个3次握手的连接过程,只有连接建立好了,才能通过它来传输消息。如果连接中断了,则不能再继续传输消息,必须重新建立连接后才能继续通信。所以在倒机时,主用机一旦降为备用停止工作,例如计算机重启、计算机死机,这些势必会引起与远端机的原有TCP连接的中断,从而导致原有通信的中断。备用机升为主用后首先要跟远端机建立新的TCP连接,才能跟远端机进行通信。在这个倒机过程中,原有的通信发生了中断,影响的通信的连续性;并且远端机可以查觉原有TCP连接的中断以及新的连接建立,在一定程度上可以认为对端进行了主备用双机倒换。

发明内容
本发明的主要目的是设计一种主备用双机进行TCP连接倒换的方法,从而有效的实现主备用双机倒换时不引起与远端机TCP连接的连接中断,不影响与远端机通信的连续性,并且不让远端机察觉倒机过程。
本发明包含对传统的TCP协议栈进行了一定的小范围改造,以适应实现本发明目的的需要。
上述发明的目的一种使用TCP进行通信的主备用双机进行TCP连接倒换的方法,其特点是TCP连接切换对另一端的透明性。
技术解决方案包含以下内容A.主用机A、备用机B作为双机利用TCP与远端机C进行通信。主、备用机用来与远端机C通信时使用相同的IP地址d.d.d.d,相同的物理地址(物理地址也可以不同,此时应设置网卡工作在混杂模式下并且禁止备用机发送数据包)。启动时都需要禁止目的地址是远端机C的TCP包流出本机,同时禁止源地址是远端机C且目的地址是d.d.d.d的TCP包进入本机的TCP协议栈。
B.主用机A工作时,首先允许目的地址是远端机的TCP包流出本机,同时允许源地址是远端机且目的地址是d.d.d.d的TCP包进入本机的TCP协议栈。然后建立与远端机C的TCP连接一,实现与远端机C的正常通信,主用机A的TCP连接一工作在正常模式下。
C.备用机B启动后,在需要建立备用TCP连接的时候,建立备用TCP连接二。参照主用机A同远端机C建立的TCP连接一,该备用TCP连接二与主用机A和远端机C之间的TCP连接一具有相同的TCP本地端口和远端端口。这个备用连接二工作在一种特殊模式下。
D.备用机B的备用TCP连接二建立成功后,允许源地址是远端机C且目的地址是d.d.d.d的TCP包进入备用机B的TCP协议栈。备用机B设法接收远端机C发送给主用机A的各种TCP包。备用机B的TCP协议栈用接收到的远端机C利用TCP连接一发送给主用机A的ACK包来更新备用TCP连接二的发送序号、接收序号等相关参数,从而使得备用机B建立的备用TCP连接二与主用机建立的TCP连接一的参数同步。在备用TCP连接二经过5次有效的参数更新后,其工作在准正常模式下。
E.倒机时,主用机A禁止目的地址是远端机C的TCP包流出本机,A降为备用,其与远端机之间的TCP连接一工作在特殊模式下。备用机B允许目的地址是远端机的TCP包流出本机,备用TCP连接二转变为实际的连接,并且允许利用TCP连接二与远端机C继续通信。备用机B升为主用,在利用连接二发送5包数据以后,连接二工作在正常模式下。主备用双机与远端机的TCP连接成功进行了倒换。
F.如果需要再一次倒机,主用机、备用机重复前面提到的D、E过程。
G.倒机前后,远端机C原有的TCP连接没有中断的感觉,始终保持连接,始终可以通信。远端机C感觉不到主备用双机TCP连接的倒换。
H.如果远端机主动放弃原有TCP连接,重新建立新的到地址d.d.d.d的TCP连接。则主用机依然作为主用。如果备用机已经建立了备用TCP连接二,则工作在特殊模式下。随后主用机、备用机重复前面提到的D、E过程。如果备用机没有建立备用TCP连接二,主用机、备用机重复前面提到的C、D、E过程。
主备用双机第一次启动时,都没有与远端机建立过连接。主用机按照一般正常方式与远端机完成TCP连接的建立,然后进行通信,随后的主用机都是由备用机转换而来的。
本发明的其它一些特点是所述的禁止目的地址是远端机C的TCP包流出本机的实现可以通过使用防火墙软件屏蔽掉目的地址是远端机的TCP包;可以在TCP协议栈中增加开关变量S1,由上层应用程序来关闭此开关。此开关的关闭使得TCP层发送数据给IP层的接口函数失效,TCP层不能向IP层发送数据;只要能实现此功能,也可以采用其它任何等同的手段。
所述的禁止源地址是远端机C且目的地址是d.d.d.d的TCP包进入本机的TCP协议栈的实现可以通过使用防火墙软件屏蔽掉源地址是远端机C且目的地址是d.d.d.d的TCP包;也可以在TCP协议栈中增加开关变量S2,由上层应用程序来关闭此开关。此开关的关闭使得TCP层从IP层接收数据的接口函数失效,TCP层不能从IP层接收数据;只要能实现此功能,也可以采用其它任何等同的手段。
所述的允许目的地址是远端机C的TCP包流出本机实现可以通过使用防火墙软件取消对目的地址是远端机的TCP包的屏蔽;也可以在TCP协议栈中打开开关变量S1,使得TCP层发送数据给IP层的接口函数有效,TCP层可以向IP层发送数据;只要能实现此功能,也可以采用其它任何等同的手段。
所述的允许源地址是远端机C且目的地址是d.d.d.d的TCP包进入本机的TCP协议栈的实现可以通过使用防火墙软件取消对源地址是远端机C且目的地址是d.d.d.d的TCP包的屏蔽;也可以在TCP协议栈中打开开关变量S2,使得TCP层从IP层接收数据的接口函数有效,TCP层可以从IP层接收数据;只要能实现此功能,也可以采用其它任何等同的手段。
所述的备用机B设法接收远端机C发送给主用机A的各种TCP包的实现可以设置主用机A、备用机B用来与远端机C通信时使用的网卡具备相同的物理地址,这样备用机B就可以收到远端机C发送给主用机A的各种TCP包。只要能实现此功能,也可以采用其它任何等同的手段。
当备用机B转为主用后,要保证发送给远端机C的以太网包含有与原主用机A相同的本地物理地址,可以设置主用机A、备用机B用来与远端机C通信时使用的网卡具备相同的物理地址。只要能实现此功能,也可以采用其它任何等同的手段。
所述的正常模式指的是TCP协议栈的按照传统的TCP协议所规定的处理流程来处理某一TCP连接上的接收发送过程,以及维护。
特殊模式是跟主用机A与远端机C的TCP连接一的正常模式相对而言的。备用TCP连接二特殊模式下的工作方式不同于主用机A的TCP连接一的正常模式的工作方式。特殊模式的选择通过与TCP连接关联的开关变量S3来控制,上层应用程序可以来控制这个开关。开关S3打开时,TCP连接按照特殊模式工作。连接建立过程,TCP协议栈依靠上层应用程序或其它模拟远端机C的程序构造协商包来完成连接建立的3次握手。TCP协议栈对于IP层送到TCP层的TCP包,如果是针对备用连接的TCP包,备用机TCP协议栈判断出此连接是工作在特殊模式下,则处理方式会不同于正常模式的TCP连接。备用机B通过上层应用程序在二初始化时,打开与之关联的S3,使其工作在特殊模式。
准正常模式十分接近正常模式,模式的选择切换依靠与TCP连接关联的开关S4来控制。上层应用程序和TCP协议栈都可以来控制这个开关。当开关S4打开时,TCP连接工作在准正常模式。
这三种工作模式都是单一存在的。
所述的内容C中参照主用机A同远端机C建立的TCP连接按照以下处理如果主用机作为TCP连接的客户端,远端机作为TCP连接的服务器端,则备用机也作为TCP连接的客户端。如果主用机作为TCP连接的服务器端,远端机作为TCP连接的客户端,则备用机也作为TCP连接的服务器端。备用机建立TCP连接时用到的本地端口、远端端口、远端地址等参数与主用机建立TCP连接时用到的本地端口、远端端口、远端地址等参数相同。
所述的内容C中备用机B启动后,在需要建立备用TCP连接的时候,建立备用TCP连接二按照以下处理如果备用机B作为TCP连接的客户端,如图1所示。备用机的上层应用程序向TCP协议栈发出TCP连接请求,TCP协议栈将发送同步(SYN,Synchronizesequence numbers)包给远端机C。TCP协议栈根据备用连接二关联的S3判断出此连接工作在特殊模式下,这个SYN包实际没有流出备用机B。TCP协议栈在完成SYN包的发送处理后,上层应用程序或其它模拟远端机C的程序构造一个对于该包的确认(ACK,Acknowledgment field significant)包,并由链路层或IP层的接口函数交给TCP层。在TCP协议栈看来,这就是远端机C的应答包。TCP协议栈处理完这个SYN/ACK后发送ACK包给远端机C。这个ACK包实际没有流出备用机B。此时建立TCP连接的3次握手完成,备用机B与远端机C的备用连接建立。
如果备用机B作为服务器端,如图2所示。备用机的上层应用程序向TCP协议栈告知需要建立的备用连接二。当TCP协议栈开始监听连接请求后,TCP协议栈根据备用连接二关联的S3判断出此连接工作在特殊模式下,上层应用程序或其它模拟远端机的程序构造一个SYN包,并由链路层或IP层的接口函数交给TCP层。在TCP层看来,这就是远端机C的TCP连接请求包。TCP层处理完这个SYN后发送SYN/ACK应答包给远端机C。这个SYN/ACK包实际没有流出备用机。紧接着,上层应用程序或其它模拟远端机的程序构造一个ACK包,并由链路层或IP层的接口函数交给TCP层。在TCP层看来,这就是远端机C的应答包。TCP层处理完这个ACK后,此时建立TCP连接的3次握手完成,备用机与远端机备用连接建立。
所述内容中构造SYN/ACK按照以下处理TCP数据包头中的SYN标志、ACK标志均置为1;TCP包头中的目的端口项置为备用机TCP监听连接请求的端口;TCP数据包头中源端口项置为远端机TCP发起连接的端口;TCP数据包头中的序列号项取32bits任意无符号整数;TCP数据包头中的确认序列号项取备用机上层应用程序或模拟远端机的程序发送的TCP连接请求SYN包中的序列号值加1;TCP数据包头中的窗口项取任意无符号整数;TCP数据包头中添加最大数据段长项(MSS,Maximum Segment Size),值取1460;TCP数据包头中的数据偏移项取6;TCP数据包头中的校验和项取按照正常计算TCP包头校验和的方法算出的此TCP数据包的校验和;其它参数置0。
所述内容中构造SYN包按照以下处理TCP数据包头中的SYN标志置为1;TCP数据包头中的目的端口项置为备用机TCP发起连接的端口;TCP数据包头中源端口项置为远端机TCP监听连接请求的端口;TCP数据包头中的序列号项取32bits任意无符号整数;TCP数据包头中的确认序列号项置0;TCP数据包头中的窗口项取任意无符号整数;TCP数据包头中添加最大数据段长项(MSS,Maximum Segment Size),值取1460;TCP数据包头中的数据偏移项取6;TCP数据包头中的校验和项取按照正常计算TCP包头校验和的方法算出的此TCP数据包的校验和;其它参数置0。
所述内容中的构造ACK包按照以下处理TCP数据包头中的ACK标志置为1;TCP数据包头中的目的端口项置为备用机TCP监听连接请求的端口;TCP数据包头中源端口项置为远端机TCP发起连接请求的端口;TCP数据包头中的序列号项取备用机TCP协议栈发送的SYN/ACK包中的确认序列号项的值;TCP数据包头中的确认序列号项取备用机TCP协议栈发送的SYN/ACK包中的序列号项的值加1;TCP数据包头中的窗口项取任意无符号整数;TCP包头中的数据偏移项取5;TCP数据包头中的校验和项取按照正常计算TCP包头校验和的方法算出的此TCP数据包的校验和;其它参数置0。
所述内容中特殊模式按照以下处理(如图3)TCP协议栈根据TCP连接关联的开关S3,判断此连接的工作模式。对于工作在特殊模式下的TCP连接,TCP协议栈特殊处理。而备用机上其它工作在正常模式下的TCP连接,TCP协议栈按照正常处理。
TCP协议栈通过连接二的关联开关S3,知道连接二工作在特殊模式下,因此对连接二特殊处理。
TCP层收到的与备用TCP连接二相关的TCP包实际上是远端机C通过TCP连接一发送给主用机A的。
TCP层收到第一包与连接二相关的ACK包时,立即用ACK包中的有用信息更新连接二的发送序号、接收序号等相关参数。
对于随后收到的与连接二相关的ACK包,如果ACK包中的序列号大于前面收到的ACK包中的序列号,或者ACK包中的序列号小于前面收到的ACK包中的序列号且之差大于1000000000。则立即使用ACK包中的有用信息更新发送序号、接收序号等相关参数。否则,不用更新。
更新参数以后ACK包不作进一步处理,直接丢弃。其它的与连接二相关的TCP不作任何处理,直接丢弃。
备用连接二在特殊模式工作下经过5次参数更新后,打开自身的开关S4,同时关闭自身的开关S3。TCP协议栈根据S4得知连接二工作在准特殊模式下。
所述的内容准正常模式按照以下处理(如图4)TCP协议栈根据TCP连接关联的开关S4,判断此连接的工作模式。对于工作在准特殊模式下的TCP连接,TCP协议栈特殊处理。而备用机上其它工作在正常模式下的TCP连接,TCP协议栈按照正常处理。
TCP层对于接收到的与连接二相关ACK包,首先强行更新连接二的发送序号,接着按照正常模式进一步处理。这样,如果ACK包中带有实际的数据消息,备用机B的备用TCP连接二就可以接收并处理,从而备用机B的上层应用程序通过备用连接二就可以接收到远端机C通过一发送给主用机A的消息。
备用机B的TCP协议栈产生的连接二相关的TCP应答包被禁止流出备用机B。
所述的内容E中主用机降为备用,并且上层应用不再通过原有的与远端机建立的TCP连接向远端机发送消息。
所述的内容E中备用机升为主用,备用TCP连接二转为实际使用连接。上层应用程序通过连接二接收到远端机C消息,并且通过连接二向远端机C发送消息。从而接替已降为备用的原主用机开始工作。
所述的内容E中在利用连接二发送5包数据以后,连接二工作在正常模式下。TCP协议栈在发送与连接二相关的5包含数据消息的TCP包后,关闭连接二自身的开关S4。自此,TCP连接二工作在正常模式下。
所述的内容G中倒机前后,主备用TCP连接倒换为上层应用程序与远端机的通信提供不间断通信。主用机、备用机与远端机通信所使用的不同TCP连接一,二具有相同的参数,备用机升为主用后发送消息时TCP包头所带的参数是无缝接替原主用机发送的最后一包ACK包头中的参数的,在远端机看来说一切都是正常的。远端机觉察不出有TCP连接倒换现象。
所述的主备用双机不仅限于两台计算机,也可以是主备用的两个系统。并且可以扩展到多机系统。
上述的远端机是一逻辑概念,它本身也可能是采用本专利构成的一个多机系统。
本发明的方法可以广泛地运用于采用TCP进行通信的主备用双机网络通信应用中。
本发明的技术的关键思想是在备用机上模拟建立与远端机的TCP连接,并且保证连接的参数与主用机的同步吻合。这样当备用机升为主用后,原先模拟建立起来的连接就可以接替原主用机的TCP连接。
通过实践得出的结论是本发明的方法可以保证采用TCP进行通信主备用双机倒换过程中通信使用的TCP连接不发生中断,保证通信的连贯性;可以保证主备用双机倒换时的隐蔽性,使得远端机不能觉察出倒机过程。


图1是备用机建立备用TCP连接的TCP层流程图(备用机是TCP客户端)。
图2是备用机建立备用TCP连接的TCP层流程图(备用机是TCP服务器端)。
图3是备用连接在特殊模式下TCP层处理流程图。
图4是备用连接在准正常模式下TCP层处理流程图。
图5是本发明的一种应用实例的网络示意图。
具体实施例方式
以下结合实施例对本发明作进一步的详细说明。
参见图5,图中示出的是本发明的一种应用实例的网络示意图。这是一种简单的网络组建服务器即为TCP服务器端,拥有一块网卡(标记为Eth0),配置IP地址202.100.100.10。
客户机A,客户机B即为TCP客户端主备用双机,分别拥有两块网卡。配置相同的IP地址202.100.100.3,与服务器的IP地址在一个网段;客户机A,客户机B各自的Eth0配置相同的物理地址。
客户机A,客户机B的Eth0与先通过集线器再通过以太网交换机与服务器的Eth0连接,集线器的运用是为了使客户机A,客户机B的Eth0可以共享服务器发送过来的TCP包。
客户机A,客户机B的之间有其它通信方式联系。
主备用双机倒机时TCP连接倒换过程如下(1)主用机启动。
客户机A,客户机B的启动总会有先后的,先起动的我们认为是主用。我们假设客户机A先为主用。客户机A允许源地址是服务器的TCP包进入,允许目的地址是服务器的TCP包流出。
(2)主用机连接。
客户机A与服务器进行一个正常的TCP连接一。
(3)主用机通信。
客户机A与服务器通过连接一进行正常的数据传递。
(4)备用机启动。
客户机B启动,状态为备用,通过设置防火墙禁止源地址是服务器的TCP包进入,禁止目的地址是服务器的TCP包流出。
(5)备用机连接。
需要的时候,客户机B初始化备用TCP连接二,并且打开与之关联的开关S3,使得备用连接工作在特殊模式下。然后发起与服务器的连接,建立好连接。
(6)备用机参数调整。
客户机B通过设置防火墙,允许服务器的TCP包进入,备用TCP连接参数调整完成后关闭开关S3,打开开关S4,备用TCP连接二开始工作在准正常模式下。
(7)正常倒机。
如果客户机B已经处于可以倒机的状态,即客户机B上的备用TCP连接二已经工作在准正常模式下,可以进行倒机。客户机A上层应用程序不再通过TCP连接一与服务器继续通信。客户机A设置防火墙,禁止源地址是服务器的TCP包进入,禁止目的地址是服务器的TCP包流出。然后通知客户机B要求其升为主用。客户机B设置防火墙,允许目的地址是服务器的TCP流出。客户机B上层应用程序使用连接二继续跟服务器通信,TCP连接不断。此时,客户机A已降为备用,打开连接一的关联开关S3,使其工作在特殊模式下。客户机B已升为主用。如需再次倒机,完成步骤(6),(7)。
(8)死机后倒机。
客户机A因故障死机。客户机B检测到后,如果自身处于可以倒机的状态,则设置防火墙,允许目的地址是服务器的TCP流出,从而接替客户机A继续跟服务器通信,TCP连接不断。此时,客户机A已降为备用,客户机B已升为主用。如需再次倒机,客户机A重起后完成步骤(4),(5),(6),(7)。
权利要求
1.一种使用TCP进行通信的主备用双机进行TCP连接倒换的方法,其特征在于保证倒换过程中TCP通信的连续性。包含以下内容A.主用机A、备用机B作为双机利用TCP与远端机C进行通信;主、备用机用来与远端机C通信时使用相同的IP地址d.d.d.d,相同的物理地址(物理地址也可以不同,此时应设置网卡工作在混杂模式下并且禁止备用机发送数据包)。启动时都需要禁止目的地址是远端机C的TCP包流出本机,同时禁止源地址是远端机C且目的地址是d.d.d.d的TCP包进入本机的TCP协议栈。B.主用机A工作时,首先允许目的地址是远端机的TCP包流出本机,同时允许源地址是远端机且目的地址是d.d.d.d的TCP包进入本机的TCP协议栈;然后建立与远端机C的TCP连接一,实现与远端机C的正常通信,主用机A的TCP连接一工作在正常模式下;C.备用机B启动后,在需要建立备用TCP连接的时候,建立备用TCP连接二。参照主用机A同远端机C建立的TCP连接一,该备用TCP连接二与主用机A和远端机C之间的TCP连接一具有相同的TCP本地端口和远端端口。这个备用连接二工作在一种特殊模式下。D.备用机B的备用TCP连接二建立成功后,允许源地址时远端机C且目的地址是d.d.d.d的TCP包进入备用机B的TCP协议栈;备用机B设法接收远端机C发送给主用机A的各种TCP包;备用机B的TCP协议栈用接收到的远端机C利用TCP连接一发送给主用机A的ACK包来更新备用TCP连接二的发送序号、接收序号等相关参数,从而使得备用机B建立的备用TCP连接二与主用机建立的TCP连接一的参数同步;在备用TCP连接二经过5次有效的参数更新后,其工作在准正常模式下;E.倒机时,主用机A禁止目的地址是远端机C的TCP包流出本机,A降为备用,其与远端机之间的TCP连接一工作在特殊模式下。备用机B允许目的地址是远端机的TCP包流出本机,备用TCP连接二转变为实际的连接,并且允许利用TCP连接二与远端机C继续通信;备用机B升为主用,在利用而二发送5包数据以后,二工作在正常模式下主备用双机与远端机的TCP连接成功进行了倒换;F.如果需要再一次倒机,主用机、备用机重复前面提到的D、E过程;G.倒机前后,远端机C原有的TCP连接没有中断的感觉,始终保持连接,始终可以通信;远端机C感觉不到主备用双机TCP连接的倒换;H.如果远端机主动放弃原有TCP连接,重新建立新的到地址d.d.d.d的TCP连接,则主用机依然作为主用;如果备用机已经建立了备用TCP连接二,则工作在特殊模式下;随后主用机、备用机重复前面提到的D、E过程;如果备用机没有建立备用TCP连接二,主用机、备用机重复前面提到的C、D、E过程;对于主备用双机第一次启动时,都没有与远端机建立过连接,主用机按照一般正常方式与远端机完成TCP连接的建立,然后进行通信,随后的主用机都是由备用机转换而来的。
2.如权利要求1所述的主备用双机进行TCP连接倒换的方法,其特征在于,所述的禁止目的地址是远端机C的TCP包流出本机的实现可以通过使用防火墙软件屏蔽掉目的地址是远端机的TCP包;可以在TCP协议栈中增加开关变量S1,由上层应用程序来关闭此开关;此开关的关闭使得TCP层发送数据给IP层的接口函数失效,TCP层不能向IP层发送数据;只要能实现此功能,也可以采用其它任何等同的手段;所述的禁止源地址是远端机C且目的地址是d.d.d.d的TCP包进入本机的TCP协议栈的实现可以通过使用防火墙软件屏蔽掉源地址是远端机C且目的地址是d.d.d.d的TCP包;也可以在TCP协议栈中增加开关变量S2,由上层应用程序来关闭此开关。此开关的关闭使得TCP层从IP层接收数据的接口函数失效,TCP层不能从IP层接收数据;只要能实现此功能,也可以采用其它任何等同的手段。
3.如权利要求1所述的主备用双机进行TCP连接倒换的方法,其特征在于,所述的允许目的地址是远端机C的TCP包流出本机实现可以通过使用防火墙软件取消对目的地址是远端机的TCP包的屏蔽;也可以在TCP协议栈中打开开关变量S1,使得TCP层发送数据给IP层的接口函数有效,TCP层可以向IP层发送数据;只要能实现此功能,也可以采用其它任何等同的手段。所述的允许源地址是远端机C且目的地址是d.d.d.d的TCP包进入本机的TCP协议栈的实现可以通过使用防火墙软件取消对源地址是远端机C且目的地址是d.d.d.d的TCP包的屏蔽;也可以在TCP协议栈中打开开关变量S2,使得TCP层从IP层接收数据的接口函数有效,TCP层可以从IP层接收数据;只要能实现此功能,也可以采用其它任何等同的手段。
4.如权利要求1所述的主备用双机进行TCP连接倒换的方法,其特征在于,所述的备用机B设法接收远端机C发送给主用机A的各种TCP包的实现可以设置主用机A、备用机B用来与远端机C通信时使用的网卡具备相同的物理地址,这样备用机B就可以收到远端机C发送给主用机A的各种TCP包;只要能实现此功能,也可以采用其它任何等同的手段;当备用机B转为主用后,要保证发送给远端机C的以太网包含有与原主用机A相同的本地物理地址,可以设置主用机A、备用机B用来与远端机C通信时使用的网卡具备相同的物理地址。只要能实现此功能,也可以采用其它任何等同的手段。
5.如权利要求1所述的主备用双机进行TCP连接倒换的方法,其特征在于,所述的正常模式指的是TCP协议栈的按照传统的TCP协议所规定的处理流程来处理某一TCP连接上的接收发送过程,以及维护;所述特殊模式是跟主用机A与远端机C的TCP连接一的正常模式相对而言的;备用TCP连接二特殊模式下的工作方式不同于主用机A的TCP连接一的正常模式的工作方式;特殊模式的选择通过与TCP连接关联的开关变量S3来控制,上层应用程序可以来控制这个开关;开关S3打开时,TCP连接按照特殊模式工作;连接建立过程,TCP协议栈依靠上层应用程序或其它模拟远端机C的程序构造协商包来完成连接建立的3次握手;TCP协议栈对于IP层送到TCP层的TCP包,如果是针对备用连接的TCP包,备用机TCP协议栈判断出此连接是工作在特殊模式下,则处理方式会不同于正常模式的TCP连接。备用机B通过上层应用程序在二初始化时,打开与之关联的S3,使其工作在特殊模式;准正常模式十分接近正常模式,模式的选择切换依靠与TCP连接关联的开关S4来控制;上层应用程序和TCP协议栈都可以来控制这个开关,当开关S4打开时,TCP连接工作在准正常模式;这三种工作模式都是单一存在的。
6.如权利要求1所述的主备用双机进行TCP连接倒换的方法,其特征在于,所述的内容C中参照主用机A同远端机C建立的TCP连接按照以下处理如果主用机作为TCP连接的客户机端,远端机作为TCP连接的服务器端,则备用机也作为TCP连接的客户机端。如果主用机作为TCP连接的服务器端,远端机作为TCP连接的客户机端,则备用机也作为TCP连接的服务器端。备用机建立TCP连接时用到的本地端口、远端端口、远端地址等参数与主用机建立TCP连接时用到的本地端口、远端端口、远端地址等参数相同;所述的内容C中备用机B工作时,在需要建立备用TCP连接的时候,建立备用TCP连接二按照以下处理如果备用机B作为TCP连接的客户机端,备用机的上层应用程序向TCP协议栈发出TCP连接请求,TCP协议栈发送SYN包给远端机C;TCP协议栈根据备用连接二关联的S3判断出此连接工作在特殊模式下,这个SYN包实际没有流出备用机B;TCP协议栈在完成SYN包的发送处理后,上层应用程序或其它模拟远端机C的程序构造一个SYN/ACK包,并由链路层或IP层的的接口函数交给TCP层。在TCP协议栈看来,这就是远端机C的应答包;TCP协议栈处理完这个SYN/ACK后发送ACK包给远端机C;这个ACK包实际没有流出备用机B,此时建立TCP连接的3次握手完成,备用机B与远端机C的备用连接建立;如果备用机B作为服务器端,备用机的上层应用程序向TCP协议栈告知需要建立的备用连接二。当TCP协议栈完成监听连接请求后,TCP协议栈根据备用连接二关联的S3判断出此连接工作在特殊模式下,上层应用程序或其它模拟远端机的程序构造一个SYN包,并由链路层或IP层的的接口函数交给TCP层,在TCP层看来,这就是远端机C的TCP连接请求包;TCP层处理完这个SYN后发送SYN/ACK应答包给远端机C,这个SYN/ACK包实际没有流出备用机;紧接着,上层应用程序或其它模拟远端机的程序构造一个ACK包,并由链路层或IP层的的接口函数交给TCP层,在TCP层看来,这就是远端机C的应答包;TCP层处理完这个ACK后,此时建立TCP连接的3次握手完成,备用机与远端机备用连接建立。
7.如权利要求6所述的主备用双机进行TCP连接倒换的方法,其特征在于所述内容中构造SYN/ACK按照以下处理TCP数据包头中的SYN标志、ACK标志均置为1;TCP包头中的目的端口项置为备用机TCP监听连接请求的端口;TCP数据包头中源端口项置为远端机TCP发起连接的端口;TCP数据包头中的序列号项取32bits任意无符号整数;TCP数据包头中的确认序列号项取备用机上层应用程序或模拟远端机的程序发送的TCP连接请求SYN包中的序列号值加1;TCP数据包头中的窗口项取任意无符号整数;TCP数据包头中添加最大数据段长项(MSS,Maximum Segment Size),值取1460;TCP数据包头中的数据偏移项取6;TCP数据包头中的校验和项取按照正常计算TCP包头校验和的方法算出的此TCP数据包的校验和;其它参数置0。所述内容中构造SYN包按照以下处理TCP数据包头中的SYN标志置为1;TCP数据包头中的目的端口项置为备用机TCP发起连接的端口;TCP数据包头中源端口项置为远端机TCP监听连接请求的端口;TCP数据包头中的序列号项取32bits任意无符号整数;TCP数据包头中的确认序列号项置0;TCP数据包头中的窗口项取任意无符号整数;TCP数据包头中添加最大数据段长项(MSS,Maximum Segment Size),值取1460;TCP数据包头中的数据偏移项取6;TCP数据包头中的校验和项取按照正常计算TCP包头校验和的方法算出的此TCP数据包的校验和;其它参数置0。所述内容中的构造ACK包按照以下处理TCP数据包头中的ACK标志置为1;TCP数据包头中的目的端口项置为备用机TCP监听连接请求的端口;TCP数据包头中源端口项置为远端机TCP发起连接请求的端口;TCP数据包头中的序列号项取备用机TCP协议栈发送的SYN/ACK包中的确认序列号项的值;TCP数据包头中的确认序列号项取备用机TCP协议栈发送的SYN/ACK包中的序列号项的值加1;TCP数据包头中的窗口项取任意无符号整数;TCP包头中的数据偏移项取5;TCP数据包头中的校验和项取按照正常计算TCP包头校验和的方法算出的此TCP数据包的校验和;其它参数置0。
8.如权利要求1所述的主备用双机进行TCP连接倒换的方法,其特征在于,所述内容中特殊模式按照以下方式处理TCP协议栈根据TCP连接关联的开关S3,判断此连接的工作模式;对于工作在特殊模式下的TCP连接,TCP协议栈特殊处理;而备用机上其它工作在正常模式下的TCP连接,TCP协议栈按照正常处理;TCP协议栈通过连接二的关联开关S3,知道连接二工作在特殊模式下,因此对连接二特殊处理;TCP层收到的与备用TCP连接二相关的TCP包实际上是远端机C通过TCP连接一发送给主用机A的;TCP层收到第一包与连接二相关的ACK包时,立即用ACK包中的有用信息更新连接二的发送序号、接收序号等相关参数;对于随后收到的与连接二相关的ACK包,如果ACK包中的序列号大于前面收到的ACK包中的序列号,或者ACK包中的序列号小于前面收到的ACK包中的序列好且之差大于1000000000,则立即使用ACK包中的有用信息更新连接的发送序号、接收序号等相关参数;否则,不用更新;更新参数以后ACK包不作进一步处理,直接丢弃。其它的与连接二相关的TCP不作任何处理,直接丢弃;备用连接二在特殊模式工作下经过5次参数更新后,打开自身的开关S4,同时关闭自身的开关S3。TCP协议栈根据S4得知连接二工作在准特殊模式下。
9.如权利要求1所述的主备用双机进行TCP连接倒换的方法,其特征在于,所述的内容准正常模式按照以下处理TCP协议栈根据TCP连接关联的开关S4,判断此连接的工作模式。对于工作在准特殊模式下的TCP连接,TCP协议栈特殊处理。而备用机上其它工作在正常模式下的TCP连接,TCP协议栈按照正常处理;TCP层对于接收到的与连接二相关ACK包,首先强行更新连接二的发送序号,接着按照正常模式进一步处理。这样,如果ACK包中带有实际的数据消息,备用机B的备用TCP连接二就可以接收并处理,从而备用机B的上层应用程序通过备用连接二就可以接收到远端机C通过连接一发送给主用机A的消息;备用机B的TCP协议栈产生的连接二相关的TCP应答包被禁止流出备用机B。
10.如权利要求1所述的主备用双机进行TCP连接倒换的方法,其特征在于,所述的内容E中主用机降为备用,并且上层应用不再通过原有的与远端机建立的TCP连接向远端机发送消息;所述的内容E中备用机升为主用,备用TCP连接二转为实际使用连接;上层应用程序通过连接二接收到远端机C消息,并且通过连接二向远端机C发送消息。从而接替已降为备用的原主用机开始工作;所述的内容E中在利用连接二发送5包数据以后,连接二工作在正常模式下;TCP协议栈在发送与连接二相关的5包含数据消息的TCP包后,关闭连接二自身的开关S4,自此,TCP连接二工作在正常模式下;所述的内容G中倒机前后,主备用TCP连接倒换为上层应用程序与远端机的通信提供不间断通信;主用机、备用机与远端机通信所使用的不同TCP连接一,连接二具有相同的参数,备用机升为主用后发送消息时TCP包头所带的参数是无缝接替原主用机发送的最后一包ACK包头中的参数的,在远端机看来说一切都是正常的,远端机觉察不出有TCP连接倒换现象;所述的主备用双机不仅限于两台计算机,也可以是主备用的两个系统;并且可以扩展到多机系统。
全文摘要
本发明公开了一种主备用双机运用TCP与远端机通信时进行TCP连接倒换的方法,从而有效的实现主备用双机倒换时不引起与远端机TCP连接的连接中断,不影响与远端机通信的连续性,并且不让远端机察觉倒机过程。本发明包含对传统的TCP协议栈进行了一定的小范围改造,以适应实现本发明的需要。本发明的方法可以广泛的运用于采用TCP进行通信的主备用双机网络通信应用中。
文档编号H04L29/06GK1567919SQ0313434
公开日2005年1月19日 申请日期2003年7月2日 优先权日2003年7月2日
发明者杨国巍, 段云龙, 刘军鹏 申请人:西安大唐电信有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1