一种数据通信方法和装置制造方法及图纸

技术编号:8565313 阅读:157 留言:0更新日期:2013-04-11 07:39
本发明专利技术实施例提供一种基于套接字的数据通信方法和数据通信装置,该方法包括:在接收到客户端发送的数据包后,寻找该数据包的宿主套接字;寻找所述宿主套接字的接收队列的尾端的数据包,判断所述尾端的数据包的检查点标志位是否被置为表示该接收队列内容已经被检查点进程保存到检查点文件中的值;如果所述尾端数据包的检查点标志位被置为表示该接收队列内容已经被检查点进程保存到检查点文件中的值,则直接丢弃接收到的数据包。

【技术实现步骤摘要】

本专利技术属于网络
,尤其涉及一种数据通信方法和装置
技术介绍
随着当前网络技术的快速发展,很多传统的服务已经转移到网络环境中实施,例如金融交易、企业管理等。由于网络环境的脆弱性,常导致服务器需要维护,一旦服务器处于维护状态,如果有没采取必要的措施,那么所提供的服务就会被中断较长的时间。而对于企业级的应用来说,这样长时间的服务的中断是不能接受的。为了克服上述问题,现今的高可用集群使服务器系统能够不间断地运行,该服务器系统一般由两个或两个以上的节点组成。假如某个节点需要维护,该节点上的服务进程会被实时迁移到备用节点上继续服务。对服务进程进行实时迁移,需要在服务器上暂停该待迁移的进程,并将该进程的的执行状态信息保存到检查点(checkpoint)文件中,然后停止该进程。之后在备用节点上新建一个进程并从上面得到的检查文件中读入原有进程的执行状态信息,从而继续提供服务。服务进程在运行过程中,往往包含一个监听套接字来接收客户端的连接,并拥有若干打开的套接字正与已经建立连接的客户端传输数据。因此在将服务进程进行迁移的过程中,也需要对该服务进程的打开套接字进行迁移,因此需要将该服务进程的打开套接字状态信息保存到检查点文件中。在对套接字进行迁移的过程中,网络协议栈仍然正常工作。从一个服务进程的迁移开始,到该服务进程的迁移结束(即该服务进程在备用节点上被重新建立)的期间内,数据包是无法正常接收的,但客户端又不会意识到它所发送的数据包未被正常接收,所以客户端在这段期间内所发送的数据包将丢失。此外,将迁移过程中,将停止原服务进程,客户端将收到服务器发送的FIN数据包,并同时关闭停止的服务进程的套接字,客户端由于感知到进程的迁移导致的连接断开因此需要重新连接服务器。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种基于套接字的数据通信方法和装置,能够避免因为进程迁移导致的数据包丢失的现象。为实现上述目的,本专利技术的一个实施例提供一种基于套接字的数据通信方法,包括在接收到客户端发送的数据包后,寻找该数据包的宿主套接字;寻找所述宿主套接字的接收队列的尾端的数据包,判断所述尾端的数据包的检查点标志位是否被置为表示该接收队列内容已经被检查点进程保存到检查点文件中的值;如果所述尾端数据包的检查点标志位被置为表示该接收队列内容已经被检查点进程保存到检查点文件中的值,则直接丢弃接收到的数据包。另一方面,本专利技术实施例还提供一种数据通信装置,包括数据包接收单元,用于接收客户端发送的数据包;套接字查找单元,用于寻找所述接收到的数据包的宿主套接字;数据包查找单元,用于寻找所述宿主套接字的接收队列的尾端的数据包;判断单元,用于判断所述尾端的数据包的检查点标志位是否被置为表示该接收队列内容已经被检查点进程保存到检查点文件中的值;丢弃单元,用于当所述判断单元的判断结果为是,则丢弃接收到的数据包。根据本专利技术实施例,在接收到数据包后,首先检查该数据包的宿主套接字的接收队列尾端的数据包中的检查点标志位,是否被置为表示该宿主套接字的接收队列内容已经被检查点进程保存到检查点文件中的值,如果是,则会将接收到的数据包丢弃,进而可以使得客户端意识到该客户端所发送的数据未被正常接收,进行后续的重发步骤,不会产生丢包的问题。 附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例提供一种基于套接字的数据通信方法的示意图;图2是本专利技术提供的基于套接字的数据通信方法的一个具体实施例的示意图;图3和图4分别是修改前和修改后的TCP数据包的格式示意图;图5是本专利技术实施例中提供的一种关闭套接字的流程图;图6是本专利技术实施例提供的一种数据通信装置的示意图。具体实施例方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例提供一种基于套接字的数据通信方法,如图1所示,该方法包括如下步骤步骤SlOl :在接收到客户端发送的数据包后,寻找该数据包的宿主套接字;步骤S102 :寻找宿主套接字的接收队列尾端的数据包;步骤S103 :判断步骤S102中寻找到的尾端的数据包的检查点标志位是否被置为表示该接收队列内容已经被检查点进程保存到检查点文件中的值;步骤S104 :当步骤S103的判断结果为是时,直接丢弃接收到的数据包。在本专利技术实施例提供的数据通信方法中,在客户端发送的数据包中增加了用来表示该数据包的宿主套接字的接收队列内容已经被检查点进程保存到检查点文件中的标志位(可以简写为CKPT)。当CKPT标志位的值为表示该数据包的宿主套接字的接收队列内容已经被检查点进程保存到检查点文件中的值时,表示当前接收的数据包的宿主套接字的接收队列内容已经被检查点进程保存到检查点文件中,也就是说该宿主套接字已经被迁移,此时会将接收到的数据包丢弃,进而可以使得客户端意识到该客户端所发送的数据未被正常接收,进行后续的重发步骤,不会产生丢包的问题。以下以一个具体的例子详细说明本专利技术的具体实现。如图2所示,该方案包括如下步骤步骤S201 :对进程的套接字进行迁移;步骤S202 :如果该迁移的套接字的接收队列不为空,则检查点进程将该套接字的接收队列内容保存到检查点文件中,并将该接收队列尾端的数据包中的CKPT标志位的值置为表示该接收队列内容已经被检查点进程保存到检查点文件中的值。此外,本实施例中还可以考虑被迁移的套接字的接收队列为空的情况,此时,就构造一个空的数据包,这里所谓空的数据包是指不包含实际数据的数据包,并将该空的数据包中的CKPT标志位的值置为表示已经被检查点进程保存到检查点文件中的值。在本专利技术实施例中,可以修改TCP数据包的格式,使用原来TCP数据包的一个保留比特位作为CKPT标志位。一种具体的方案可以参见图3和图4。图3中示出了修改前的TCP数据包的格式,图4示出了修改后的TCP数据包的格式,对比图4和图3,可知该方案中利用了原有TCP数据包的若干保留比特位中的一个作为CKPT标志位。当采用原有TCP数据包的保留比特位作为CKPT标志位时,不会对网络协议栈的性能以及网络通信过程中的其他环节产生影响。步骤S203 :当接收 到客户端发送的数据包时,对接收到的数据包进行正确性校验。正确性校验可以包括数据包是否属于本地、首部校验和是否正确等。步骤S204 :判断步骤S203中的正确性校验是否通过,如果是,则继续执行步骤S205,如果否,则直接执行步骤S210 :丢弃数据包。步骤S205 :寻找该接收到的数据包的宿主套接字。在实际中可以从存放打开套接字的哈希表中寻找该数据包所属的传输控制块,并由该传输控制块找到宿主套接字。实际上,每个打开套接字及其接收队列都在一个哈希(hash)表中维护,而属于同一个套接字的数据包的四元组(本文档来自技高网
...

【技术保护点】
一种基于套接字的数据通信方法,其特征在于,包括:在接收到客户端发送的数据包后,寻找该数据包的宿主套接字;寻找所述宿主套接字的接收队列的尾端的数据包,判断所述尾端的数据包的检查点标志位是否被置为表示该接收队列内容已经被检查点进程保存到检查点文件中的值;如果所述尾端数据包的检查点标志位被置为表示该接收队列内容已经被检查点进程保存到检查点文件中的值,则直接丢弃接收到的数据包。

【技术特征摘要】
1.一种基于套接字的数据通信方法,其特征在于,包括 在接收到客户端发送的数据包后,寻找该数据包的宿主套接字; 寻找所述宿主套接字的接收队列的尾端的数据包,判断所述尾端的数据包的检查点标志位是否被置为表示该接收队列内容已经被检查点进程保存到检查点文件中的值; 如果所述尾端数据包的检查点标志位被置为表示该接收队列内容已经被检查点进程保存到检查点文件中的值,则直接丢弃接收到的数据包。2.根据权利要求1所述的方法,其特征在于,该方法还包括 如果所述最后一个数据包的检查点标志位未被置为表示该接收队列内容已经被检查点进程保存到检查点文件中的值时,则将所述接收到的数据包挂到所述宿主套接字的接收队列的尾端,并向所述客户端反馈表示数据包已经被正常接收的确认信息。3.根据权利要求1或2所述的方法,其特征在于,该方法还包括 在对套接字进行迁移的过程中,如果所述套接字的接收队列不为空,则检查点进程将所述套接字的接收队列内容保存到检查点文件中,并将所述接收队列尾端的数据包中的检查点标志位置为表示该接收队列内容已经被检查点进程保存到检查点文件中的值。4.根据权利要求3所述的方法,其特征在于,该方法还包括 在对套接字进行迁移的过程中,如果所述套接字的接收队列为空,则创建一个空数据包,将所述创建的空数据包中的检查点标志位置...

【专利技术属性】
技术研发人员:赵琪杨振章
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1