一种时间同步方法及相关装置转让专利

申请号 : CN201910926579.7

文献号 : CN110519002A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王泽健

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本申请公开了一种时间同步方法,包括发送端根据当前时间与UNIX时间戳计算得到经过时间;所述发送端将所述经过时间设置为TCP报文中序号的初始值;所述发送端通过下层协议发送所述TCP报文至接收端,以使所述接收端在满足时间同步条件的情况下基于所述TCP报文中的所述序号将自身的系统时间同步为所述当前时间。该时间同步方法借助TCP报文实现时间同步,无需额外的发送时间同步报文,从而有效减少了网络负载,减轻了带宽压力。此外,该时间同步方法不需要运行单独的时间同步进程,因此可以极大的减少发送端与接收端的CPU负载,减轻CPU压力。本申请还公开了一种时间同步装置、设备以及计算机可读存储介质,均具有上述技术效果。

权利要求 :

1.一种时间同步方法,其特征在于,包括:

发送端根据当前时间与UNIX时间戳计算得到经过时间;

所述发送端将所述经过时间设置为TCP报文中序号的初始值;

所述发送端通过下层协议发送所述TCP报文至接收端,以使所述接收端在满足时间同步条件的情况下基于所述TCP报文中的所述序号将自身的系统时间同步为所述当前时间。

2.根据权利要求1所述的时间同步方法,其特征在于,所述时间同步条件包括时间同步功能开启,预设IP地址列表中包含所述发送端的IP地址,所述TCP报文为请求报文。

3.根据权利要求1所述的时间同步方法,其特征在于,所述发送端为客户端,所述接收端为服务器,所述客户端在与所述服务器进行第一次握手时向所述服务器发送序号的初始值为所述经过时间的所述TCP报文。

4.根据权利要求1所述的时间同步方法,其特征在于,所述发送端为服务器,所述接收端为客户端,所述服务器在与所述客户端进行第二次握手时向所述客户端发送序号的初始值为所述经过时间的所述TCP报文。

5.根据权利要求1所述的时间同步方法,其特征在于,所述发送端将所述经过时间设置为TCP报文中序号的初始值,包括:所述发送端将所述经过时间的单位转换为秒并将转化后的时间数值写入所述TCP报文的序号字段。

6.一种时间同步装置,其特征在于,包括:

计算模块,用于根据当前时间与UNIX时间戳得到经过时间;

设置模块,用于将所述经过时间设置为TCP报文中序号的初始值;

发送模块,用于通过下层协议发送所述TCP报文至接收端,以使所述接收端在满足时间同步条件的情况下基于所述TCP报文中的所述序号将自身的系统时间同步为所述当前时间。

7.根据权利要求6所述的时间同步装置,其特征在于,所述设置模块具体用于将所述经过时间的单位转换为秒并将转化后的时间数值写入所述TCP报文的序号字段。

8.一种时间同步设备,其特征在于,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述的时间同步方法的步骤。

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的时间同步方法的步骤。

说明书 :

一种时间同步方法及相关装置

技术领域

[0001] 本申请涉及计算机技术领域,特别涉及一种时间同步方法;还涉及一种时间同步装置、设备以及计算机可读存储介质。

背景技术

[0002] 目前,实现客户端与服务器的时间同步的方式是额外使用NTP服务器,通过运行单独的时间同步进程,发送单独的时间同步报文而实现时间同步。上述时间同步方式由于需要运行单独的时间同步进程,从而导致CPU负载的增加;由于需要发送单独的时间同步报文,所以导致网络负载、带宽压力的增加。因此,如何在实现时间同步的基础上减少网络负载,减轻带宽压力已成为本领域技术人员亟待解决的技术问题。

发明内容

[0003] 本申请的目的是提供一种时间同步方法,能够有效减少网络负载,减轻带宽压力;本申请的另一目的是提供一时间同步装置、设备以及计算机可读存储介质,均具有上述技术效果。
[0004] 为解决上述技术问题,本申请提供了一种时间同步方法,包括:
[0005] 发送端根据当前时间与UNIX时间戳计算得到经过时间;
[0006] 所述发送端将所述经过时间设置为TCP报文中序号的初始值;
[0007] 所述发送端通过下层协议发送所述TCP报文至接收端,以使所述接收端在满足时间同步条件的情况下基于所述TCP报文中的所述序号将自身的系统时间同步为所述当前时间。
[0008] 可选的,所述时间同步条件包括时间同步功能开启,预设IP地址列表中包含所述发送端的IP地址,所述TCP报文为请求报文。
[0009] 可选的,所述发送端为客户端,所述接收端为服务器,所述客户端在与所述服务器进行第一次握手时向所述服务器发送序号的初始值为所述经过时间的所述TCP报文。
[0010] 可选的,所述发送端为服务器,所述接收端为客户端,所述服务器在与所述客户端进行第二次握手时向所述客户端发送序号的初始值为所述经过时间的所述TCP报文。
[0011] 可选的,所述发送端将所述经过时间设置为TCP报文中序号的初始值,包括:
[0012] 所述发送端将所述经过时间的单位转换为秒并将转化后的时间数值写入所述TCP报文的序号字段。
[0013] 为解决上述技术问题,本申请还提供了一种时间同步装置,包括:
[0014] 计算模块,用于根据当前时间与UNIX时间戳得到经过时间;
[0015] 设置模块,用于将所述经过时间设置为TCP报文中序号的初始值;
[0016] 发送模块,用于通过下层协议发送所述TCP报文至接收端,以使所述接收端在满足时间同步条件的情况下基于所述TCP报文中的所述序号将自身的系统时间同步为所述当前时间。
[0017] 可选的,所述设置模块具体用于将所述经过时间的单位转换为秒并将转化后的时间数值写入所述TCP报文的序号字段。
[0018] 为解决上述技术问题,本申请还提供了一种时间同步设备,包括:
[0019] 存储器,用于存储计算机程序;
[0020] 处理器,用于执行所述计算机程序时实现如上所述的时间同步方法的步骤。
[0021] 为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的时间同步方法的步骤。
[0022] 本申请所提供的时间同步方法,包括发送端根据当前时间与UNIX时间戳计算得到经过时间;所述发送端将所述经过时间设置为TCP报文中序号的初始值;所述发送端通过下层协议发送所述TCP报文至接收端,以使所述接收端在满足时间同步条件的情况下基于所述TCP报文中的所述序号将自身的系统时间同步为所述当前时间。可见,本申请所提供的时间同步方法借助TCP报文实现时间同步,无需额外的发送时间同步报文,从而有效减少了网络负载,减轻了带宽压力。此外,该时间同步方法不需要单独的时间同步进程,因此可以极大的减少发送端与接收端的CPU负载,减轻CPU压力。
[0023] 本申请所提供的时间同步装置、设备以及计算机可读存储介质,均具有上述技术效果。

附图说明

[0024] 为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0025] 图1为本申请实施例所提供的一种时间同步方法的流程示意图;
[0026] 图2为本申请实施例所提供的一种时间同步装置的示意图。

具体实施方式

[0027] 本申请的核心是提供一种时间同步方法,能够有效减少网络负载,减轻带宽压力;本申请的另一核心是提供一时间同步装置、设备以及计算机可读存储介质,均具有上述技术效果。
[0028] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0029] 请参考图1,图1为本申请实施例所提供的一种时间同步方法的流程示意图;参考图1所示,该时间同步方法包括:
[0030] S101:发送端根据当前时间与UNIX时间戳计算得到经过时间;
[0031] 具体的,当前时间为发送端的系统时间,UNIX时间戳为系统默认的基准时间,目前通常约定为1970年1月1日。在发送端与接收端通过TCP报文建立连接的过程中,发送端即时间同步的发起端,首先基于发送端的当前时间以及UNIX时间戳计算得到经过时间,具体即计算当前时间与UNIX时间戳的时间差,以后续基于此经过时间进行时间同步。
[0032] S102:发送端将经过时间设置为TCP报文中序号的初始值;
[0033] 具体的,在根据当前时间与UNIX时间戳计算得到经过时间的基础上,本步骤旨在基于此经过时间进行TCP报文的配置,具体即发送端将经过时间设置为TCP报文中序号的初始值,以后续将携带经过时间的TCP报文发送至接收端即时间同步的执行端,使接收端在接收此TCP报文后基于其中序号所表征的经过时间进行时间同步。
[0034] 其中,在一种具体的实施方式中,上述发送端将经过时间设置为TCP报文中序号的初始值,包括发送端将经过时间的单位转换为秒并将转化后的时间数值写入TCP报文的序号字段。
[0035] 具体的,UNIX时间戳到当前时间的经过时间的单位包括年、月、日、时、分、秒,且鉴于TCP报文中序号字段的长度为32个字节,故在本实施例中,发送端在计算得到经过时间后,进一步将此经过时间的单位转换为秒,即以秒为单位来计量UNIX时间戳与当前时间的时间差,进而将转换后的时间数值写入TCP报文的序号字段。
[0036] 由于UNIX时间戳固定,且当前时间各异,因此二者的时间差也即经过时间随机,所以以此经过时间作为TCP报文的序号,可以在实现本申请的目的的同时,较好的满足TCP报文中序号随机的需求,避免序号冲突。
[0037] S103:发送端通过下层协议发送TCP报文至接收端,以使接收端在满足时间同步条件的情况下基于TCP报文中的序号将自身的系统时间同步为当前时间。
[0038] 具体的,发送端完成TCP报文的配置后,进一步通过下层协议将序号初始值为经过时间的TCP报文发送至接收端。进而,接收端在接收此TCP报文并在判断满足时间同步条件后,接收端可根据TCP报文中的序号反向得到当前时间,进而将自身的系统时间修改为发送端的当前时间,实现发送端与接收端的时间同步。
[0039] 其中,在一种具体的实施方式中,上述时间同步条件包括时间同步功能开启,预设IP地址列表中包含发送端的IP地址,TCP报文为请求报文。
[0040] 具体的,接收端在接收TCP报文的基础上,利用extract函数(分解TCP报文的函数)进行TCP报文的检查,检查预先的设置参数,以判断是否满足时间同步条件。具体而言,检查设置参数判断时间同步功能是否开启,判断发送端的IP地址是否在自身预设IP地址列表中,通过检查TCP报文中是否存在SYN标记,即是否存在同步序列编号,来判断发送端发送的TCP报文是否为请求报文,若TCP报文中的存在SYN标记,则表明发送端发送的TCP报文为请求报文,相反,则为其他TCP报文。仅当满足上述时间同步条件时,接收端将自身的系统时间同步为发送端的当前时间。
[0041] 另外,上述发送端可以为服务器,也可以为客户端,对应的,上述接收端可以为客户端,也可以为服务器,即在客户端与服务器建立连接的过程中,可以由服务器发起时间同步,也可以由客户端发起时间同步,对此,本申请不做唯一限定,可以根据实际应用需要进行差异性设置。
[0042] 在一种具体的实施方式中,发送端为客户端,接收端为服务器,客户端在与服务器进行第一次握手时向服务器发送序号的初始值为经过时间的TCP报文。
[0043] 具体的,本实施例中,发送端即时间同步的发起端为客户端,接收端即时间同步的执行端为服务器。客户端在与服务器进行第一次握手发送连接请求时,客户端中make_pkt函数即创建TCP报文的函数将UNIX时间戳到客户端当前时间的经过时间转换为秒,并将此经过时间设置为TCP报文中序号的初始值,进而客户端使用下层协议将TCP报文发送至服务器。服务器的套接字在接收到此TCP报文后,并在满足时间同步的条件下进行时间同步,将TCP报文中的序号转换为相应的时间,进而基于此时间将自身的设备时间与客户端的当前时间同步。
[0044] 在另外一种具体的实施方式中,发送端为服务器,接收端为客户端,服务器在与客户端进行第二次握手时向客户端发送序号的初始值为经过时间的TCP报文。
[0045] 具体的,本实施例中,发送端即时间同步的发起端为服务器,接收端即时间同步的执行端为客户端。服务器在与客户端进行第二次握手发送确认请求时,服务器将UNIX时间戳到客户端当前时间的经过时间转换为秒,并以此经过时间设置为TCP报文中序号的初始值,进而服务器使用下层协议将TCP报文发送至客户端。客户端在接收到此TCP报文后,并在满足时间同步的条件下进行时间同步,将TCP报文中的序号转换为相应的时间,进而基于此时间将自身的设备时间与服务器的当前时间同步。
[0046] 当然,在进一步的实施方式中,服务器与客户端均可既作为发送端又作为接收端,即在服务器与客户端建立连接的三次握手的过程中,在第一次握手时,由客户端发起时间同步,进行客户端与服务器的时间同步;在第二次握手时,由服务器发起时间同步,再次进行客户端与服务器的时间同步。自然,为了提高时间同步效率,一般只需要客户端开启时间同步功能,服务器开启NTP服务即可实现所有开启时间同步功能的客户端准确完成时间同步。
[0047] 综上所述,包括发送端根据当前时间与UNIX时间戳计算得到经过时间;所述发送端将所述经过时间设置为TCP报文中序号的初始值;所述发送端通过下层协议发送所述TCP报文至接收端,以使所述接收端在满足时间同步条件的情况下基于所述TCP报文中的所述序号将自身的系统时间同步为所述当前时间。可见,本申请所提供的时间同步方法借助TCP报文实现时间同步,无需额外的发送时间同步报文,从而有效减少了网络负载,减轻了带宽压力。此外,该时间同步方法不需要单独的时间同步进程,因此可以极大的减少发送端与接收端的CPU负载,减轻CPU压力。
[0048] 本申请还提供了一种时间同步装置,下文描述的该装置可以与上文描述的方法相互对应参照。请参考图2,图2为本申请实施例所提供的一种时间同步装置的示意图;结合图2,该时间同步装置包括:
[0049] 计算模块10,用于根据当前时间与UNIX时间戳得到经过时间;
[0050] 设置模块20,用于将经过时间设置为TCP报文中序号的初始值;
[0051] 发送模块30,用于通过下层协议发送TCP报文至接收端,以使接收端在满足时间同步条件的情况下基于TCP报文中的序号将自身的系统时间同步为当前时间。
[0052] 在上述实施例的基础上,作为一种具体的实施方式,设置模块具体用于将经过时间的单位转换为秒并将转化后的时间数值写入TCP报文的序号字段。
[0053] 本申请还提供了一种时间同步设备,该时间同步设备包括:存储器与处理器;其中,存储器用于存储计算机程序;处理器用于执行该计算机程序时实现如下的步骤:
[0054] 发送端根据当前时间与UNIX时间戳计算得到经过时间;所述发送端将所述经过时间设置为TCP报文中序号的初始值;所述发送端通过下层协议发送所述TCP报文至接收端,以使所述接收端在满足时间同步条件的情况下基于所述TCP报文中的所述序号将自身的系统时间同步为所述当前时间。
[0055] 对于本申请所提供的设备的介绍请参照上述方法的实施例,本申请在此不做赘述。
[0056] 本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现如下的步骤:
[0057] 发送端根据当前时间与UNIX时间戳计算得到经过时间;所述发送端将所述经过时间设置为TCP报文中序号的初始值;所述发送端通过下层协议发送所述TCP报文至接收端,以使所述接收端在满足时间同步条件的情况下基于所述TCP报文中的所述序号将自身的系统时间同步为所述当前时间。
[0058] 该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0059] 对于本发明所提供的计算机可读存储介质的介绍请参照上述方法实施例,本发明在此不做赘述。
[0060] 因为情况复杂,无法一一列举进行阐述,本领域技术人员应能意识到,在本申请提供的实施例的基本原理下结合实际情况可以存在多个例子,在不付出足够的创造性劳动下,应均在本申请的范围内。
[0061] 说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
[0062] 以上对本申请所提供的技术方案进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围。
[0063] 还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。