一种系统时间的同步方法及装置与流程

文档序号:12490571阅读:273来源:国知局
一种系统时间的同步方法及装置与流程

本发明涉及网络技术领域,特别涉及一种系统时间的同步方法及装置。



背景技术:

目前,网络通常应用NTP(Network Time Protocol,网络时间协议)来保持网络中各个设备的系统时间一致。比如:需要以时间作为参照依据,对从不同设备采集来的日志信息、调试信息进行分析的网络管理系统;对设备时间一致性有要求的计费系统;多个系统协同处理同一个比较复杂的事件的场合等等,都采用了NTP来保持网络中各个设备的系统时间一致。

假设当前客户端A的时间为10:00:00am,服务器B的时间为11:00:00am。需要将客户端A的时间设定为与服务器B相同。现有技术中,应用如下步骤对客户端A的时间进行设定(假设NTP报文从客户端A到服务器B、从服务器B到客户端A单向传输所需要的时间、服务器B处理NTP报文所需的时间均为1秒):

1、客户端A的NTP模块获取客户端A的第一当前时间10:00:00am作为NTP请求报文发送时间,将该NTP请求报文发送时间赋值给NTP请求报文的第一时间戳T1(Origin Timestamp),将封装好的NTP请求报文传送给客户端A的底层驱动模块,由客户端A的底层驱动模块向服务器B发送该NTP请求报文。

2、服务器B的底层驱动模块接收该NTP请求报文,并传送给服务器B的NTP模块,服务器B的NTP模块获取服务器B的第一当前时间11:00:01am作为NTP请求报文接收时间,将该NTP请求报文接收时间赋值给NTP响应报文的第二时间戳T2(Receive Timestamp)。

3、服务器B的NTP模块获取服务器B的第二当前时间11:00:02am作为NTP响应报文发送时间,将该NTP响应报文发送时间赋值给NTP响应报文的第三时间戳T3(Transmit Timestamp),将封装好的NTP响应报文传送给服务器B的底层驱动模块,由服务器B的底层驱动模块向客户端A发送该NTP响应报文。

4、客户端A的底层驱动模块接收该NTP响应报文,并传送给客户端A的NTP模块,客户端A的NTP模块获取客户端A的第二当前时间10:00:03am作为NTP响应报文接收时间,将该NTP响应报文接收时间赋值给第四时间戳T4(Destination Timestamp)。客户端A的NTP模块利用上述四个时间戳来计算时间偏差:Offset=((T2-T1)+(T3-T4))/2=1小时,客户端A根据Offset,重新设定自身时间。

通常情况下,从NTP模块封装NTP报文到该NTP报文从底层驱动模块发送出去的耗时在1毫秒以下,而从底层驱动模块接收NTP报文并传送给NTP模块进行处理的耗时通常也在1毫秒左右,可以忽略不计。

但是现实网络里并非所有的NTP设备的NTP模块与底层驱动模块之间传送报文的耗时都在1毫秒以内。比如,在一些低端设备上从NTP模块封装NTP报文到该NTP报文从底层驱动模块发送出去可能需要10毫秒或者更久,底层驱动模块接收到一个报文并传送给NTP模块进行处理可能需要100毫秒或者更久;即使性能比较高的设备在CPU很忙的情况下,从NTP模块封装NTP报文到该NTP报文从底层驱动模块发送出去耗时也可能会出现10毫秒以上的延迟,底层驱动模块接收到一个报文并传送给NTP模块进行处理则可能会出现100毫秒以上的延迟。低端设备在CPU比较忙的情况下NTP模块与底层驱动模块之间传送报文延迟会更明显,比较极端的情况下甚至可能会出现秒级以上的延迟。

假设从客户端A的NTP模块封装NTP请求报文到该NTP请求报文从客户端A的底层驱动模块发送出去耗时0.5秒;服务器B的底层驱动模块接收到NTP请求报文并传送给服务器B的NTP模块进行处理耗时0.2秒;从服务器B的NTP模块封装NTP响应报文到该NTP响应报文从服务器B的底层驱动模块发送出去耗时0.1秒;客户端A的底层驱动模块接收到NTP响应报文并传送给客户端A的NTP模块进行处理耗时0.8秒,则对客户端A的时间进行设定的过程中:

客户端A的NTP模块获取客户端A的第一当前时间10:00:00am,并赋值给第一时间戳T1,但实际NTP请求报文发送时间为10:00:00am+0.5s;服务器B的NTP模块接收到该NTP请求报文时的服务器B的第一当前时间11:00:01am+0.5s+0.2s,将该时间赋值给第二时间戳T2;服务器B的NTP模块为第三时间戳T3赋值为11:00:02am+0.5s+0.2s,但实际NTP响应报文发送时间 为11:00:02am+0.5s+0.2s+0.1s;客户端A的NTP模块接收到该NTP响应报文时的客户端A的第二当前时间10:00:03am+0.5s+0.2s+0.1s+0.8s,将该时间赋值给第四时间戳T4。此时计算Offset=((T2-T1)+(T3-T4))/2=59分59.9秒,与忽略NTP模块与底层驱动模块之间传送报文延迟的理想情况Offset=1小时,相差0.1秒。

因此,应用上述方法对客户端的时间进行设定,并不能保证客户端的时间和服务器时间的一致性,在流量不稳定的环境里很可能会造成客户端系统时间不停震荡。



技术实现要素:

本发明实施例的目的在于提供一种系统时间的同步方法及装置,提高客户端的时间和服务器时间的一致性。

为达到上述目的,本发明实施例公开了一种系统时间的同步方法,应用于客户端,所述客户端包括第一NTP模块和第一底层驱动模块,该方法包括:

所述第一NTP模块填充NTP请求报文中除第一时间戳T1以外的字段,并将所述NTP请求报文发送给所述第一底层驱动模块;

所述第一底层驱动模块接收所述NTP请求报文,获取客户端第一当前时间作为NTP请求报文发送时间;

所述第一底层驱动模块将所述NTP请求报文发送时间赋值给所述NTP请求报文的第一时间戳T1,并将填充了第一时间戳T1的NTP请求报文发送给包括第二NTP模块和第二底层驱动模块的服务器;

所述第一底层驱动模块接收所述服务器的第二底层驱动模块反馈的NTP响应报文,并获取客户端第二当前时间作为所述NTP响应报文接收时间,将所述NTP响应报文和所述NTP响应报文接收时间发送给第一NTP模块;其中,所述NTP响应报文包含第一时间戳T1、第二时间戳T2和第三时间戳T3;所述第二时间戳T2为所述第二底层驱动模块接收所述NTP请求报文的时间,所述第三时间戳T3为所述第二底层驱动模块发送所述NTP响应报文的时间;

所述第一NTP模块将所述NTP响应报文接收时间设置为第四时间戳T4;

所述第一NTP模块根据第一时间戳T1、第二时间戳T2、第三时间戳T3、第四时间戳T4,设定客户端的系统时间。

可选的,所述第一NTP模块根据第一时间戳T1、第二时间戳T2、第三时间戳T3、第四时间戳T4,设定客户端的系统时间,可以包括:

所述第一NTP模块根据下式计算所述客户端与所述服务器的时间差值Offset:

Offset=((T2-T1)+(T3-T4))/2;

判断所述时间差值Offset是否大于预设阈值,如果是,根据所述时间差值Offset,设定客户端的系统时间。

可选的,第一NTP模块将所述NTP请求报文发送给第一底层驱动模块,可以包括:

第一NTP模块将所述NTP请求报文及第一时间戳T1在所述NTP请求报文中的位置发送给第一底层驱动模块;

所述第一底层驱动模块,按照第一时间戳T1在所述NTP请求报文中的位置,将所述NTP请求报文发送时间赋值给所述NTP请求报文的第一时间戳T1。

为达到上述目的,本发明实施例还公开了一种系统时间的同步方法,应用于服务器,所述服务器包括第二NTP模块和第二底层驱动模块,该方法包括:

所述第二底层驱动模块接收客户端的第一底层驱动模块发送的NTP请求报文,并获取服务器第一当前时间作为所述NTP请求报文接收时间,将所述NTP请求报文和所述NTP请求报文接收时间发送给第一NTP模块;其中,所述NTP请求报文包含第一时间戳T1,所述第一时间戳T1为所述客户端的第一底层驱动模块发送所述NTP请求报文的时间;

所述第二NTP模块将所述NTP请求报文接收时间赋值给NTP响应报文的第二时间戳T2;

所述第二NTP模块填充NTP响应报文中除第三时间戳T3以外的字段,并将所述NTP响应报文发送给所述第二底层驱动模块;

所述第二底层驱动模块接收所述NTP响应报文,获取服务器第二当前时间作为NTP响应报文发送时间;

所述第二底层驱动模块将所述NTP响应报文发送时间赋值给所述NTP响应 报文的第三时间戳T3,并将填充了第三时间戳T3的NTP响应报文反馈给发送所述NTP请求报文的客户端,以使所述客户端根据第一时间戳T1、第二时间戳T2、第三时间戳T3、第四时间戳T4,设定所述客户端的系统时间。

可选的,第二NTP模块将所述NTP响应报文发送给第二底层驱动模块,可以包括:

第二NTP模块将所述NTP请求报文及第三时间戳T3在所述NTP响应报文中的位置发送给第二底层驱动模块;

所述第二底层驱动模块,按照第三时间戳T3在所述NTP响应报文中的位置,将所述NTP响应报文发送时间赋值给所述NTP响应报文的第三时间戳T3。

为达到上述目的,本发明实施例还公开了一种系统时间的同步装置,应用于客户端,所述客户端包括第一NTP模块和第一底层驱动模块,该装置包括:设置在所述第一NTP模块中的第一填充发送单元、设置单元和设定单元;设置在所述第一底层驱动模块中的第一接收获取单元、第一赋值发送单元和第一接收获取发送单元,其中,

所述第一填充发送单元,用于填充NTP请求报文中除第一时间戳T1以外的字段,并将所述NTP请求报文发送给所述第一底层驱动模块;

所述第一接收获取单元,用于接收所述NTP请求报文,获取客户端第一当前时间作为NTP请求报文发送时间;

所述第一赋值发送单元,用于将所述NTP请求报文发送时间赋值给所述NTP请求报文的第一时间戳T1,并将填充了第一时间戳T1的NTP请求报文发送给包括第二NTP模块和第二底层驱动模块的服务器;

所述第一接收获取发送单元,用于接收所述服务器的第二底层驱动模块反馈的NTP响应报文,并获取客户端第二当前时间作为所述NTP响应报文接收时间,将所述NTP响应报文和所述NTP响应报文接收时间发送给第一NTP模块;其中,所述NTP响应报文包含第一时间戳T1、第二时间戳T2和第三时间戳T3;所述第二时间戳T2为所述第二底层驱动模块接收所述NTP请求报文的时间,所述第三时间戳T3为所述第二底层驱动模块发送所述NTP响应报文的时间;

所述设置单元,用于将所述NTP响应报文接收时间设置为第四时间戳T4,

所述设定单元,用于根据第一时间戳T1、第二时间戳T2、第三时间戳T3、第四时间戳T4,设定客户端的系统时间。

可选的,所述设定单元,可以包括:

计算子单元,用于根据下式计算所述客户端与所述服务器的时间差值Offset:

Offset=((T2-T1)+(T3-T4))/2;

判断子单元,用于判断所述时间差值Offset是否大于预设阈值,如果是,根据所述时间差值Offset,设定客户端的系统时间。

可选的,所述第一填充发送单元,具体可以用于:填充NTP请求报文中除第一时间戳T1以外的字段,并将所述NTP请求报文及第一时间戳T1在所述NTP请求报文中的位置发送给第一底层驱动模块;

所述第一赋值发送单元,按照第一时间戳T1在所述NTP请求报文中的位置,将所述NTP请求报文发送时间赋值给所述NTP请求报文的第一时间戳T1。

为达到上述目的,本发明实施例还公开了一种系统时间的同步装置,应用于服务器,所述服务器包括第二NTP模块和第二底层驱动模块,该装置包括:设置在所述第二NTP模块中的赋值单元和第二填充发送单元;设置在所述第一底层驱动模块中的第二接收获取发送单元、第二接收获取单元和第二赋值发送单元,其中,

所述第二接收获取发送单元,用于接收客户端的第一底层驱动模块发送的NTP请求报文,并获取服务器第一当前时间作为所述NTP请求报文接收时间,将所述NTP请求报文和所述NTP请求报文接收时间发送给第一NTP模块;其中,所述NTP请求报文包含第一时间戳T1,所述第一时间戳T1为所述客户端的第一底层驱动模块发送所述NTP请求报文的时间;

所述赋值单元,用于将所述NTP请求报文接收时间赋值给NTP响应报文的第二时间戳T2;

所述第二填充发送单元,用于填充NTP响应报文中除第三时间戳T3以外的字段,并将所述NTP响应报文发送给所述第二底层驱动模块;

所述第二接收获取单元,用于接收所述NTP响应报文,获取服务器第二当前时间作为NTP响应报文发送时间;

所述第二赋值发送单元,用于将所述NTP响应报文发送时间赋值给所述NTP响应报文的第三时间戳T3,并将填充了第三时间戳T3的NTP响应报文反馈给发送所述NTP请求报文的客户端,以使所述客户端根据第一时间戳T1、第二时间戳T2、第三时间戳T3、第四时间戳T4,设定所述客户端的系统时间。

可选的,所述第二填充发送单元,具体可以用于:填充NTP响应报文中除第三时间戳T3以外的字段,并将所述NTP请求报文及第三时间戳T3在所述NTP响应报文中的位置发送给第二底层驱动模块;

所述第二赋值发送单元,按照第三时间戳T3在所述NTP响应报文中的位置,将所述NTP响应报文发送时间赋值给所述NTP响应报文的第三时间戳T3。

由上述技术方案可见,应用本发明所示实施例,客户端的底层驱动模块将NTP请求报文发送时间赋值给NTP请求报文的第一时间戳T1,相比于现有技术中客户端的NTP模块为第一时间戳T1赋值,第一时间戳T1中的时间更接近于NTP请求报文离开客户端的时间;服务器的底层驱动模块获取第二时间戳T2的值,相比于现有技术中服务器的NTP模块获取第二时间戳T2的值,第二时间戳T2中的时间更接近于服务器接收到NTP请求报文的时间;服务器的底层驱动模块将NTP响应报文发送时间赋值给NTP响应报文的第三时间戳T3,相比于现有技术中服务器的NTP模块为第三时间戳T3赋值,第三时间戳T3的时间更接近于NTP响应报文离开服务器的时间;客户端的底层驱动模块获取第四时间戳T4的值,相比于现有技术中客户端的NTP模块获取第四时间戳T4的值,第四时间戳T4中的时间更接近于客户端接收到NTP响应报文的时间。由此可见,时间戳中的时间避免了NTP模块与底层驱动模块之间传送报文的时间延迟,提高了客户端的时间和服务器时间的一致性,避免了在流量不稳定的环境里造成的客户端系统时间不停震荡。

当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施 例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术中NTP网络结构示意图;

图2为本发明实施例提供的一种应用于客户端的系统时间的同步方法的流程示意图;

图3为本发明实施例提供的一种应用于服务器的系统时间的同步方法的流程示意图;

图4为本发明实施例提供的一种应用于客户端的系统时间的同步装置的结构示意图;

图5为本发明实施例提供的一种应用于服务器的系统时间的同步装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了解决现有技术问题,本发明实施例提供了一种系统时间的同步方法及装置。在本发明实施例中,将网络中待重新设定系统时间的设备确定为客户端,将网络中作为时间参照的设备确定为服务器。

本发明实施例应用NTP技术。NTP通过时钟层数来定义时钟的准确度。时钟层数的取值范围为1~16,取值越小,时钟准确度越高。层数为1~15的时钟处于同步状态;层数为16的时钟处于未同步状态。

在实际应用中,如图1所示,可以将从权威时钟(如原子时钟)获得时间同步的NTP服务器的层数设置为1,并将其作为主时间服务器,为网络中其他设备的时钟提供时间同步。网络中的设备与主时间服务器的NTP距离,即NTP同步链上NTP服务器的数目,决定了设备上时钟的层数。例如,从主时间服务器获得时间同步的设备的时钟层数为2,即比主时间服务器的时钟层数大1;从 时钟层数为2的时间服务器获得时间同步的设备的时钟层数为3,以此类推。

为了保证时间的准确性和可靠性,可以为一台设备指定多个时间服务器,设备根据时钟层数等参数进行时钟过滤、选择和合并,这样基本可以使设备时间更接近于权威时钟。

在某些网络中,例如无法与外界通信的孤立网络,网络中的设备无法与权威时钟进行时间同步。此时,可以从该网络中选择一台时钟较为准确的设备,指定该设备为主时间服务器,并为网络中的其他设备提供时间同步,从而实现整个网络的时间同步。

下面首先对本发明实施例提供的一种应用于客户端的系统时间的同步方法进行详细说明。

图2为本发明实施例提供的一种应用于客户端的系统时间的同步方法的流程示意图,客户端包括第一NTP模块和第一底层驱动模块,该方法可以包括步骤:

S101:第一NTP模块填充NTP请求报文中除第一时间戳T1以外的字段,并将NTP请求报文发送给第一底层驱动模块。

具体的,第一NTP模块将所述NTP请求报文发送给第一底层驱动模块,包括:第一NTP模块将所述NTP请求报文及第一时间戳T1在所述NTP请求报文中的位置发送给第一底层驱动模块。

在实际应用中,NTP采用的传输层协议为UDP,第一时间戳T1在NTP请求报文中的位置为偏移IP头+UDP头+24字节处,大小为64位(即8字节)。

S102:第一底层驱动模块接收NTP请求报文,获取客户端第一当前时间作为NTP请求报文发送时间。

S103:第一底层驱动模块将NTP请求报文发送时间赋值给NTP请求报文的第一时间戳T1,并将填充了第一时间戳T1的NTP请求报文发送给包括第二NTP模块和第二底层驱动模块的服务器。

具体的,第一底层驱动模块,按照第一时间戳T1在所述NTP请求报文中的位置,将所述NTP请求报文发送时间赋值给所述NTP请求报文的第一时间戳T1。

S104:第一底层驱动模块接收服务器的第二底层驱动模块反馈的NTP响应报文,并获取客户端第二当前时间作为NTP响应报文接收时间,将NTP响应报文和NTP响应报文接收时间发送给第一NTP模块。

其中,所述NTP响应报文包含第一时间戳T1、第二时间戳T2和第三时间戳T3;所述第二时间戳T2为所述第二底层驱动模块接收所述NTP请求报文的时间,所述第三时间戳T3为所述第二底层驱动模块发送所述NTP响应报文的时间。

S105:第一NTP模块将NTP响应报文接收时间设置为第四时间戳T4。

S106:第一NTP模块根据第一时间戳T1、第二时间戳T2、第三时间戳T3、第四时间戳T4,设定客户端的系统时间。

具体的,本步骤中,可以包括:

所述第一NTP模块根据下式计算所述客户端与所述服务器的时间差值Offset:

Offset=((T2-T1)+(T3-T4))/2;

判断所述时间差值Offset是否大于预设阈值,如果是,根据所述时间差值Offset,设定客户端的系统时间。

假设当前客户端A的时间为10:00:00am,服务器B的时间为11:00:00am,NTP报文从客户端A到服务器B、从服务器B到客户端A单向传输所需要的时间、服务器B处理NTP报文所需的时间均为1秒。

客户端A的第一NTP模块填充NTP请求报文中除第一时间戳T1以外的字段,并将该NTP请求报文发送给客户端A的第一底层驱动模块。

客户端A的第一底层驱动模块接收NTP请求报文,获取客户端A第一当前时间10:00:00am作为NTP请求报文发送时间;将NTP请求报文发送时间10:00:00am赋值给NTP请求报文的第一时间戳T1,并将填充了第一时间戳T1的NTP请求报文发送给包括第二NTP模块和第二底层驱动模块的服务器B。

服务器B的第二底层驱动模块接收客户端A的第一底层驱动模块发送的NTP请求报文,并获取服务器B第一当前时间11:00:01am作为NTP请求报文接收时 间,将NTP请求报文和NTP请求报文接收时间11:00:01am发送给第一NTP模块;其中,所述NTP请求报文包含第一时间戳T1,第一时间戳T1为客户端A的第一底层驱动模块发送NTP请求报文的时间10:00:00am。

服务器B的第二NTP模块将NTP请求报文接收时间11:00:01am赋值给NTP响应报文的第二时间戳T2。

服务器B的第二NTP模块填充NTP响应报文中除第三时间戳T3以外的字段,并将NTP响应报文发送给服务器B的第二底层驱动模块。

服务器B的第二底层驱动模块接收NTP响应报文,获取服务器第二当前时间11:00:02am作为NTP响应报文发送时间;

服务器B的第二底层驱动模块将NTP响应报文发送时间11:00:02am赋值给NTP响应报文的第三时间戳T3,并将填充了第三时间戳T3的NTP响应报文反馈给发送NTP请求报文的客户端A。

客户端A的第一底层驱动模块接收服务器B的第二底层驱动模块反馈的NTP响应报文,并获取客户端第二当前时间10:00:03am作为NTP响应报文接收时间,将NTP响应报文和NTP响应报文接收时间10:00:03am发送给第一NTP模块.其中,NTP响应报文包含第一时间戳T1(10:00:00am)、第二时间戳T2(11:00:01am)和第三时间戳T3(11:00:02am);第二时间戳T2为所述第二底层驱动模块接收NTP请求报文的时间11:00:01am,第三时间戳T3为第二底层驱动模块发送NTP响应报文的时间11:00:02am。

客户端A的第一NTP模块将NTP响应报文接收时间10:00:03am设置为第四时间戳T4;

客户端A的第一NTP模块根据第一时间戳T1(10:00:00am)、第二时间戳T2(11:00:01am)、第三时间戳T3(11:00:02am)、第四时间戳T4(10:00:03am),设定客户端的系统时间:

客户端A与服务器B的时间差值Offset=((T2-T1)+(T3-T4))/2=1小时。

假设预设阈值为1分钟,判断时间差值Offset 1小时大于预设阈值,则客户端A的第一NTP模块根据时间差值Offset 1小时,将客户端的系统时间调快1小时。

应用本发明图2所示实施例,客户端的底层驱动模块将NTP请求报文发送时间赋值给NTP请求报文的第一时间戳T1,相比于现有技术中客户端的NTP模块为第一时间戳T1赋值,第一时间戳T1中的时间更接近于NTP请求报文离开客户端的时间;服务器的底层驱动模块获取第二时间戳T2的值,相比于现有技术中服务器的NTP模块获取第二时间戳T2的值,第二时间戳T2中的时间更接近于服务器接收到NTP请求报文的时间;服务器的底层驱动模块将NTP响应报文发送时间赋值给NTP响应报文的第三时间戳T3,相比于现有技术中服务器的NTP模块为第三时间戳T3赋值,第三时间戳T3的时间更接近于NTP响应报文离开服务器的时间;客户端的底层驱动模块获取第四时间戳T4的值,相比于现有技术中客户端的NTP模块获取第四时间戳T4的值,第四时间戳T4中的时间更接近于客户端接收到NTP响应报文的时间。

由此可见,时间戳中的时间避免了NTP模块与底层驱动模块之间传送报文的时间延迟,提高了客户端的时间和服务器时间的一致性,避免了在流量不稳定的环境里造成的客户端系统时间不停震荡。

图3为本发明实施例提供的一种应用于服务器的系统时间的同步方法的流程示意图,服务器包括第二NTP模块和第二底层驱动模块,该方法可以包括步骤:

S201:第二底层驱动模块接收客户端的第一底层驱动模块发送的NTP请求报文,并获取服务器第一当前时间作为NTP请求报文接收时间,将NTP请求报文和NTP请求报文接收时间发送给第一NTP模块。

其中,所述NTP请求报文包含第一时间戳T1,所述第一时间戳T1为所述客户端的第一底层驱动模块发送所述NTP请求报文的时间;

S202:第二NTP模块将NTP请求报文接收时间赋值给NTP响应报文的第二时间戳T2。

S203:第二NTP模块填充NTP响应报文中除第三时间戳T3以外的字段,并将NTP响应报文发送给第二底层驱动模块。

具体的,第二NTP模块将NTP响应报文发送给第二底层驱动模块,可以包括:第二NTP模块将NTP请求报文及第三时间戳T3在NTP响应报文中的位置发送给第二底层驱动模块。

在实际应用中,NTP采用的传输层协议为UDP,第三时间戳T3在NTP请求报文中的位置为偏移IP头+UDP头+40字节处,大小为64位(即8字节)。

S204:第二底层驱动模块接收NTP响应报文,获取服务器第二当前时间作为NTP响应报文发送时间。

S205:第二底层驱动模块将NTP响应报文发送时间赋值给NTP响应报文的第三时间戳T3,并将填充了第三时间戳T3的NTP响应报文反馈给发送NTP请求报文的客户端,以使所述客户端根据第一时间戳T1、第二时间戳T2、第三时间戳T3、第四时间戳T4,设定所述客户端的系统时间。

具体的,第二底层驱动模块,按照第三时间戳T3在所述NTP响应报文中的位置,将所述NTP响应报文发送时间赋值给所述NTP响应报文的第三时间戳T3。

假设当前客户端A的时间为10:00:00am,服务器B的时间为11:00:00am,NTP报文从客户端A到服务器B、从服务器B到客户端A单向传输所需要的时间、服务器B处理NTP报文所需的时间均为1秒。

服务器B的第二底层驱动模块接收客户端A的第一底层驱动模块发送的NTP请求报文,并获取服务器B第一当前时间11:00:01am作为NTP请求报文接收时间,将NTP请求报文和NTP请求报文接收时间11:00:01am发送给第一NTP模块;其中,所述NTP请求报文包含第一时间戳T1,第一时间戳T1为客户端A的第一底层驱动模块发送NTP请求报文的时间10:00:00am。

服务器B的第二NTP模块将NTP请求报文接收时间11:00:01am赋值给NTP响应报文的第二时间戳T2。

服务器B的第二NTP模块填充NTP响应报文中除第三时间戳T3以外的字段,并将NTP响应报文发送给服务器B的第二底层驱动模块。

服务器B的第二底层驱动模块接收NTP响应报文,获取服务器第二当前时间11:00:02am作为NTP响应报文发送时间;

服务器B的第二底层驱动模块将NTP响应报文发送时间11:00:02am赋值给NTP响应报文的第三时间戳T3,并将填充了第三时间戳T3的NTP响应报文反馈给发送NTP请求报文的客户端A。

客户端A的第一底层驱动模块接收服务器B的第二底层驱动模块反馈的 NTP响应报文,并获取客户端第二当前时间10:00:03am作为NTP响应报文接收时间,将NTP响应报文和NTP响应报文接收时间10:00:03am发送给第一NTP模块.其中,NTP响应报文包含第一时间戳T1(10:00:00am)、第二时间戳T2(11:00:01am)和第三时间戳T3(11:00:02am);第二时间戳T2为所述第二底层驱动模块接收NTP请求报文的时间11:00:01am,第三时间戳T3为第二底层驱动模块发送NTP响应报文的时间11:00:02am。

客户端A的第一NTP模块将NTP响应报文接收时间10:00:03am设置为第四时间戳T4;

客户端A的第一NTP模块根据第一时间戳T1(10:00:00am)、第二时间戳T2(11:00:01am)、第三时间戳T3(11:00:02am)、第四时间戳T410:00:03am,设定客户端的系统时间:

客户端A与服务器B的时间差值Offset=((T2-T1)+(T3-T4))/2=1小时。

假设预设阈值为1分钟,判断时间差值Offset 1小时大于预设阈值,则客户端A的第一NTP模块根据时间差值Offset 1小时,将客户端的系统时间调快1小时。

应用本发明图3所示实施例,客户端的底层驱动模块将NTP请求报文发送时间赋值给NTP请求报文的第一时间戳T1,相比于现有技术中客户端的NTP模块为第一时间戳T1赋值,第一时间戳T1中的时间更接近于NTP请求报文离开客户端的时间;服务器的底层驱动模块获取第二时间戳T2的值,相比于现有技术中服务器的NTP模块获取第二时间戳T2的值,第二时间戳T2中的时间更接近于服务器接收到NTP请求报文的时间;服务器的底层驱动模块将NTP响应报文发送时间赋值给NTP响应报文的第三时间戳T3,相比于现有技术中服务器的NTP模块为第三时间戳T3赋值,第三时间戳T3的时间更接近于NTP响应报文离开服务器的时间;客户端的底层驱动模块获取第四时间戳T4的值,相比于现有技术中客户端的NTP模块获取第四时间戳T4的值,第四时间戳T4中的时间更接近于客户端接收到NTP响应报文的时间。

由此可见,时间戳中的时间避免了NTP模块与底层驱动模块之间传送报文的时间延迟,提高了客户端的时间和服务器时间的一致性,避免了在流量不稳定的环境里造成的客户端系统时间不停震荡。

与上述的方法实施例相对应,本发明实施例还提供一种系统时间的同步装置。

图4为本发明实施例提供的一种应用于客户端的系统时间的同步装置的结构示意图,客户端包括第一NTP模块和第一底层驱动模块,该装置可以包括:设置在所述第一NTP模块中的第一填充发送单元301、设置单元305和设定单元306;设置在所述第一底层驱动模块中的第一接收获取单元302、第一赋值发送单元303和第一接收获取发送单元304,其中,

第一填充发送单元301,用于填充NTP请求报文中除第一时间戳T1以外的字段,并将所述NTP请求报文发送给所述第一底层驱动模块;

第一接收获取单元302,用于接收所述NTP请求报文,获取客户端第一当前时间作为NTP请求报文发送时间;

第一赋值发送单元303,用于将所述NTP请求报文发送时间赋值给所述NTP请求报文的第一时间戳T1,并将填充了第一时间戳T1的NTP请求报文发送给包括第二NTP模块和第二底层驱动模块的服务器;

第一接收获取发送单元304,用于接收所述服务器的第二底层驱动模块反馈的NTP响应报文,并获取客户端第二当前时间作为所述NTP响应报文接收时间,将所述NTP响应报文和所述NTP响应报文接收时间发送给第一NTP模块;其中,所述NTP响应报文包含第一时间戳T1、第二时间戳T2和第三时间戳T3;所述第二时间戳T2为所述第二底层驱动模块接收所述NTP请求报文的时间,所述第三时间戳T3为所述第二底层驱动模块发送所述NTP响应报文的时间;

设置单元305,用于将所述NTP响应报文接收时间设置为第四时间戳T4,

设定单元306,用于根据第一时间戳T1、第二时间戳T2、第三时间戳T3、第四时间戳T4,设定客户端的系统时间。

具体的,第一填充发送单元301,具体可以用于:填充NTP请求报文中除第一时间戳T1以外的字段,并将所述NTP请求报文及第一时间戳T1在所述NTP请求报文中的位置发送给第一底层驱动模块。

第一赋值发送单元303,按照第一时间戳T1在所述NTP请求报文中的位置,将所述NTP请求报文发送时间赋值给所述NTP请求报文的第一时间戳T1。

具体的,设定单元306,可以包括:计算子单元和判断子单元(图中未示出),

计算子单元,用于根据下式计算所述客户端与所述服务器的时间差值Offset:

Offset=((T2-T1)+(T3-T4))/2;

判断子单元,用于判断所述时间差值Offset是否大于预设阈值,如果是,根据所述时间差值Offset,设定客户端的系统时间。

应用本发明图4所示实施例,客户端的底层驱动模块将NTP请求报文发送时间赋值给NTP请求报文的第一时间戳T1,相比于现有技术中客户端的NTP模块为第一时间戳T1赋值,第一时间戳T1中的时间更接近于NTP请求报文离开客户端的时间;服务器的底层驱动模块获取第二时间戳T2的值,相比于现有技术中服务器的NTP模块获取第二时间戳T2的值,第二时间戳T2中的时间更接近于服务器接收到NTP请求报文的时间;服务器的底层驱动模块将NTP响应报文发送时间赋值给NTP响应报文的第三时间戳T3,相比于现有技术中服务器的NTP模块为第三时间戳T3赋值,第三时间戳T3的时间更接近于NTP响应报文离开服务器的时间;客户端的底层驱动模块获取第四时间戳T4的值,相比于现有技术中客户端的NTP模块获取第四时间戳T4的值,第四时间戳T4中的时间更接近于客户端接收到NTP响应报文的时间。

由此可见,时间戳中的时间避免了NTP模块与底层驱动模块之间传送报文的时间延迟,提高了客户端的时间和服务器时间的一致性,避免了在流量不稳定的环境里造成的客户端系统时间不停震荡。

图5为本发明实施例提供的一种应用于服务器的系统时间的同步装置的结构示意图,服务器包括第二NTP模块和第二底层驱动模块,该装置可以包括:设置在所述第二NTP模块中的赋值单元402和第二填充发送单元403;设置在所述第二底层驱动模块中的第二接收获取发送单元401、第二接收获取单元404和第二赋值发送单元405,其中,

第二接收获取发送单元401,用于接收客户端的第一底层驱动模块发送的NTP请求报文,并获取服务器第一当前时间作为所述NTP请求报文接收时间,将所述NTP请求报文和所述NTP请求报文接收时间发送给第一NTP模块;其中,所述NTP请求报文包含第一时间戳T1,所述第一时间戳T1为所述客户端的第一底 层驱动模块发送所述NTP请求报文的时间;

赋值单元402,用于将所述NTP请求报文接收时间赋值给NTP响应报文的第二时间戳T2;

第二填充发送单元403,用于填充NTP响应报文中除第三时间戳T3以外的字段,并将所述NTP响应报文发送给所述第二底层驱动模块;

第二接收获取单元404,用于接收所述NTP响应报文,获取服务器第二当前时间作为NTP响应报文发送时间;

第二赋值发送单元405,用于将所述NTP响应报文发送时间赋值给所述NTP响应报文的第三时间戳T3,并将填充了第三时间戳T3的NTP响应报文反馈给发送所述NTP请求报文的客户端,以使所述客户端根据第一时间戳T1、第二时间戳T2、第三时间戳T3、第四时间戳T4,设定所述客户端的系统时间。

具体的,第二填充发送单元,具体可以用于:填充NTP响应报文中除第三时间戳T3以外的字段,并将所述NTP请求报文及第三时间戳T3在所述NTP响应报文中的位置发送给第二底层驱动模块。

第二赋值发送单元405,按照第三时间戳T3在所述NTP响应报文中的位置,将所述NTP响应报文发送时间赋值给所述NTP响应报文的第三时间戳T3。

应用本发明图5所示实施例,客户端的底层驱动模块将NTP请求报文发送时间赋值给NTP请求报文的第一时间戳T1,相比于现有技术中客户端的NTP模块为第一时间戳T1赋值,第一时间戳T1中的时间更接近于NTP请求报文离开客户端的时间;服务器的底层驱动模块获取第二时间戳T2的值,相比于现有技术中服务器的NTP模块获取第二时间戳T2的值,第二时间戳T2中的时间更接近于服务器接收到NTP请求报文的时间;服务器的底层驱动模块将NTP响应报文发送时间赋值给NTP响应报文的第三时间戳T3,相比于现有技术中服务器的NTP模块为第三时间戳T3赋值,第三时间戳T3的时间更接近于NTP响应报文离开服务器的时间;客户端的底层驱动模块获取第四时间戳T4的值,相比于现有技术中客户端的NTP模块获取第四时间戳T4的值,第四时间戳T4中的时间更接近于客户端接收到NTP响应报文的时间。

由此可见,时间戳中的时间避免了NTP模块与底层驱动模块之间传送报文 的时间延迟,提高了客户端的时间和服务器时间的一致性,避免了在流量不稳定的环境里造成的客户端系统时间不停震荡。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1