首页 > 专利 > 南京信息工程大学 > 基于HTTP的毫秒级时钟校准方法专利详情

基于HTTP的毫秒级时钟校准方法   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2015-04-23
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2015-10-21
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2018-03-23
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2035-04-23
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN201510197388.3 申请日 2015-04-23
公开/公告号 CN104935630B 公开/公告日 2018-03-23
授权日 2018-03-23 预估到期日 2035-04-23
申请年 2015年 公开/公告年 2018年
缴费截止日
分类号 H04L29/08 主分类号 H04L29/08
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 3
权利要求数量 4 非专利引证数量 0
引用专利数量 0 被引证专利数量 0
非专利引证
引用专利 被引证专利
专利权维持 3 专利申请国编码 CN
专利事件 事务标签 公开、实质审查、授权
申请人信息
申请人 第一申请人
专利权人 南京信息工程大学 当前专利权人 南京信息工程大学
发明人 高超、王峰、马丽 第一发明人 高超
地址 江苏省南京市宁六路219号 邮编 210044
申请人数量 1 发明人数量 3
申请人所在省 江苏省 申请人所在市 江苏省南京市
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
南京纵横知识产权代理有限公司 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
董建林
摘要
本发明公开了一种基于HTTP的毫秒级时钟校准方法,包括在本地时钟到达整数秒时,由本地主机间隔一个时间间隔向目标主机发送两个HTTP请求,分别记录本地主机发送时间、收到响应时间和目标主机发送响应的时间;计算网络时延,根据网络时延计算秒级误差;根据秒级误差判断本地主机时间比目标主机时间快或慢或同步,确定新的误差范围;根据新的误差范围利用二分法确定新的时间间隔,以新的时间间隔向目标主机再次发送2次HTTP请求逐步缩小误差;最后计算输出时钟误差,进行时钟校准,实现本地主机与目标主机的毫秒级时钟校准。本发明可将本地主机与目标主机之间的同步精确度提高到毫秒级别且不会对服务器带来过大压力。
  • 摘要附图
    基于HTTP的毫秒级时钟校准方法
  • 说明书附图:图1
    基于HTTP的毫秒级时钟校准方法
  • 说明书附图:图2
    基于HTTP的毫秒级时钟校准方法
  • 说明书附图:图3
    基于HTTP的毫秒级时钟校准方法
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2018-03-23 授权
2 2015-10-21 实质审查的生效 IPC(主分类): H04L 29/08 专利申请号: 201510197388.3 申请日: 2015.04.23
3 2015-09-23 公开
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
1.基于HTTP的毫秒级时钟校准方法,其特征在于,包括如下步骤:
步骤一:设置毫秒级时钟误差下限为t1,毫秒级时钟误差上限为t2,发送HTTP请求的毫秒级时间间隔为t,t=(t1+t2)/2;
步骤二:在本地时钟到达整数秒时,本地主机向目标主机发送第一个HTTP请求,记录本地主机发送时间sendTime1,接收到第一次响应时的本地主机时间backTime1以及目标主机发送响应的时间serverTime1;
步骤三:等待一个时间间隔t,使本地主机向目标主机发送第二个HTTP请求,记录本地主机发送时间sendTime2,接收到第二次响应时的本地主机时间backTime2以及目标主机发送响应的时间serverTime2;
步骤四:根据sendTime1、backTime1计算网络单向时延OWD,OWD=(backTime1-sendTime1)/2;
步骤五:计算秒级误差Δt1:计算backTime1-serverTime1-OWD,取计算结果的值向上取整赋值给Δt1;
步骤六:若Δt1>0,表示本地主机时间比目标主机时间快,则转到步骤七;
若Δt1≤0,表示本地主机时间比目标主机时间慢或者同步,则转到步骤八;
步骤七:若serverTime1≠serverTime2,则毫秒级误差Δt2在t1至t之间,将t赋给t2,再将新的t1、t2的中点作为新的t,即t2=t,t=(t1+t2)/2;
若serverTime1==serverTime2,则毫秒级误差Δt2在t至t2之间,将t赋给t1,再将新的t1、t2的中点作为新的t,即t1=t,t=(t1+t2)/2;跳转到步骤九;
步骤八:若serverTime1≠serverTime2,则毫秒级误差Δt2在t至t2之间,将t赋给t1,再将新的t1、t2的中点作为新的t,即t1=t,t=(t1+t2)/2;
若serverTime1==serverTime2,则毫秒级误差Δt2在t1至t之间,将t赋给t2,再将新的t1、t2的中点作为新的t,即t2=t,t=(t1+t2)/2;跳转到步骤九;
步骤九:若t1≠t2,则跳转至步骤二;若t1==t2,则Δt2=t1,进入下一步;
步骤十:若Δt1>0,输出时钟误差Δt=Δt1+Δt2;若Δt1≤0,输出时钟误差Δt=Δt1-Δt2;
步骤十一:根据时钟误差调整本地主机时间,消除本地主机与目标主机之间的时间差。

2.根据权利要求1所述的基于HTTP的毫秒级时钟校准方法,其特征在于,所述毫秒级时钟误差下限t1=0ms,毫秒级时钟误差上限t2=1000ms,发送HTTP请求的毫秒级时间间隔t=500ms。

3.根据权利要求1所述的基于HTTP的毫秒级时钟校准方法,其特征在于,所述目标主机发送响应的时间是通过解析接收到的HTTP响应中的Date字符串得到的。

4.根据权利要求1所述的基于HTTP的毫秒级时钟校准方法,其特征在于,所述本地主机发送时间、接收到响应时的本地主机时间和目标主机发送响应时间均采用UTC格式。
说明书

技术领域

[0001] 本发明涉及一种基于HTTP的毫秒级时钟校准方法,属于技术领域。

背景技术

[0002] 在日常生活中,越来越多网站推出了抢购活动,例如淘宝、京东、当当等互联网企业推出的限时抢购活动,以及12306的网上售票等,吸引了越来越多用户参与其中。但是由于本机与目标主机之间的时间存在误差,导致慢人一步,抢购失败而大失所望,这样的例子随处可见。
[0003] 随着大家对抢购活动的热衷程度不断加深,网上出现了大量的抢购软件。这些抢购软件利用频繁刷新和验证的手段进行抢购,然而这种方式一方面随着验证方式复杂性的增强,破解验证的难度也不断增加;另一方面频繁刷新对网站的服务器造成了极大的压力,以至于各大网站通过各种技术手段来遏制这种行为。根据新华社的最新采访,12306网站表示为了保证旅客购票和网站平稳运行,他们正在加大对恶意抢票软件的遏制和防控,并且取得了一定的效果。所以,这种通过频繁刷新和破解验证的手段并非是最优的选择。于是怎样提高准确度成为了解决这个问题的关键点。
[0004] 目前,许多网站的抢购时间提示只精确到秒级别,不显示毫秒级的时间,即使部分网站页面上显示了看似精确的毫秒级时钟倒计时,但是该倒计时通常是使用JavaScript脚本在客户端浏览器上使用SetTimeout函数模拟显示出来的,受到JavaScript计时机制的影响,该时钟并不精确。鉴于抢购过程中毫秒级的误差往往决定了抢购能否成功。
[0005] 解决网络时钟同步常用的手段是NTP的同步对时方式,该方式是基于NTP协议,由服务器向客户端发送带有时间戳的NTP包从而估计客户端与服务器之间的时间误差,诸如《基于NTP协议的网络时间同步系统的研究与实现》、《高精度计算机网络时钟同步技术的研究》、《网络时钟同步的研究》等论文都对这种方式进行了深入研究。但是,这种方式的不足在于依赖服务器端对NTP的支持,所以在服务器不提供NTP支持的情况下,该方法并不能获得客户端与服务器之间的时钟误差。

发明内容

[0006] 本发明的目的在于克服现有技术中的不足,提供一种基于HTTP的毫秒级时钟校准方法,解决现有技术中目标网站仅显示到秒,对于毫秒级别的时间不能精确获取,导致本地主机与目标主机时钟不能同步精确到毫秒的技术问题。
[0007] 为解决上述技术问题,本发明所采用的技术方案是:基于HTTP的毫秒级时钟校准方法,包括如下步骤:
[0008] 步骤一:设置毫秒级时钟误差下限为t1,毫秒级时钟误差上限为t2,发送HTTP请求的毫秒级时间间隔为t,t=(t1+t2)/2;
[0009] 步骤二:在本地时钟到达整数秒时,本地主机向目标主机发送第一个HTTP请求,记录本地主机发送时间sendTime1,接收到第一次响应时的本地主机时间backTime1以及目标主机发送响应的时间serverTime1;
[0010] 步骤三:等待一个时间间隔t,使本地主机向目标主机发送第二个HTTP请求,记录本地主机发送时间sendTime2,接收到第二次响应时的本地主机时间backTime2以及目标主机发送响应的时间serverTime2;
[0011] 步骤四:根据sendTime1、backTime1计算网络单向时延OWD,OWD=(backTime1-sendTime1)/2;
[0012] 步骤五:计算秒级误差Δt1:计算backTime1-serverTime1-OWD,取计算结果的值向上取整赋值给Δt1;
[0013] 步骤六:若Δt1>0,表示本地主机时间比目标主机时间快,则转到步骤七;
[0014] 若Δt1≤0,表示本地主机时间比目标主机时间慢或者同步,则转到步骤八;
[0015] 步骤七:若serverTime1≠serverTime2,则毫秒级误差Δt2在t1至t之间,将t赋给t2,再将新的t1、t2的中点作为新的t,即t2=t,t=(t1+t2)/2;
[0016] 若serverTime1==serverTime2,则毫秒级误差Δt2在t至t2之间,将t赋给t1,再将新的t1、t2的中点作为新的t,即t1=t,t=(t1+t2)/2;跳转到步骤九;
[0017] 步骤八:若serverTime1≠serverTime2,则毫秒级误差Δt2在t至t2之间,将t赋给t1,再将新的t1、t2的中点作为新的t,即t1=t,t=(t1+t2)/2;
[0018] 若serverTime1==serverTime2,则毫秒级误差Δt2在t1至t之间,将t赋给t2,再将新的t1、t2的中点作为新的t,即t2=t,t=(t1+t2)/2;跳转到步骤九;
[0019] 步骤九:若t1≠t2,则跳转至步骤二;若t1==t2,则Δt2=t1,进入下一步;
[0020] 步骤十:若Δt1>0,输出时钟误差Δt=Δt1+Δt2;若Δt1≤0,输出时钟误差Δt=Δt1-Δt2;
[0021] 步骤十一:根据时钟误差调整本地主机时间,消除本地主机与目标主机之间的时间差。
[0022] 所述毫秒级时钟误差下限t1=0ms,毫秒级时钟误差上限t2=1000ms,发送HTTP请求的毫秒级时间间隔t=500ms。
[0023] 所述目标主机发送响应的时间是通过解析接收到的HTTP响应中的Date字符串得到的。
[0024] 所述本地主机发送时间、接收到响应时的本地主机时间和目标主机发送响应时间均采用UTC格式。
[0025] 与现有技术相比,本发明所达到的有益效果是:(1)该发明能够将本机与目标主机的之间的误差精确到毫秒级别;(2)按照HTTP协议规范,服务器返回的响应数据头信息中包含有精确到秒的时间,因此本发明可以与任何网站服务器进行时钟校准;(3)使用二分法估计毫秒级误差,仅需要进行10次左右的交互即可以将误差确定到毫秒级别,且本地主机每秒只与目标主机进行一次交互,在提高效率的同时也不会对服务器造成过大压力,应用于网站购票能够提高购票成功率,具有较好的实用价值和市场推广前景。

实施方案

[0030] 本发明充分利用现有HTTP协议中的机制,无需增加客户端和服务器之间额外通信开销即可有效解决客户端时间和服务器时间的同步问题,将本地主机与目标主机之间的同步精确度提高到毫秒级别。
[0031] 作为本发明的一个实施例,采用Java编程语言以Windows作为运行环境,主要由预处理模块、时钟误差计算模块、时钟校准模块组成。
[0032] 预处理模块为了将获取的本地主机时间精确到毫秒,使用Windows多媒体时钟:调用Windows系统API的timeGetTime函数,从而获得从Windows启动开始所经历的时间(精度为毫秒),进而得到本地主机精确到毫秒的准确时间。
[0033] 假设本地主机与目标主机之间的时间误差为Δt,Δt可定义为两部分:Δt=Δt1+Δt2,其中Δt1为秒级别的误差,Δt2为毫秒级别的误差。假定测算过程中毫秒级误差Δt2的误差范围是t1至t2,且计算过程中t1、t2精确到毫秒。为了计算方便,本发明中本地主机发送时间、接收到响应时的本地主机时间和目标主机发送响应时间均采用UTC格式存储,即自1970年1月1日0时0分0秒以来的毫秒数。
[0034] 下面结合附图对本发明作进一步描述。
[0035] 如图1所示,为本发明中时钟误差计算方法,包括如下步骤:
[0036] 步骤一:设置毫秒级时钟误差下限为t1,毫秒级时钟误差上限为t2,发送HTTP请求的毫秒级时间间隔为t,t=(t1+t2)/2;本发明中,毫秒级时钟误差下限t1=0ms,毫秒级时钟误差上限t2=1000ms,发送HTTP请求的毫秒级时间间隔t=500ms。
[0037] 步骤二:利用URLConnection的实例化对象调用getOutputStream函数,在本地时钟到达整数秒时,本地主机向目标主机发送第一个HTTP请求,通过timeGetTime函数获得精确到毫秒的本地主机发送时间sendTime1,利用URLConnection的实例化对象调用getInputStream()函数,得到接收到第一次响应时的本地主机时间backTime1,目标主机发送响应的时间是通过解析接收到的HTTP响应中的Date字符串得到的,即利用URLConnection的实例化对象调用getDate获取目标主机发送响应的时间serverTime1。getDate是从HTTP的请求头中获取目标主机的时间,即使目标网站的页面没有时间显示也能获取目标网站的时间,精确到秒。
[0038] 步骤三:等待一个时间间隔t,即0.5s,使本地主机向目标主机发送第二个HTTP请求,采用与步骤二同样的调用方式获取:本地主机发送时间sendTime2、接收到第二次响应时的本地主机时间backTime2以及目标主机发送响应的时间serverTime2。
[0039] 步骤四:根据sendTime1、backTime1计算网络单向时延OWD,OWD=(backTime1-sendTime1)/2;
[0040] 步骤五:通过时钟误差计算模块计算秒级误差Δt1:Δt1等于backTime1-serverTime1-OWD,取计算结果的值向上取整赋值给Δt1。例如:计算结果为0.5s,则Δt1=0;计算结果为-1.5s,则Δt1=-1。
[0041] 步骤六:如图2所示,若Δt1>0,表示本地主机时间比目标主机时间快,则转到步骤七;
[0042] 如图3所示,若Δt1≤0,表示本地主机时间比目标主机时间慢或者同步,则转到步骤八;
[0043] 步骤七:若serverTime1≠serverTime2,则毫秒级误差Δt2在t1至t之间,将t赋给t2,再将新的t1、t2的中点作为新的t,即t2=t,t=(t1+t2)/2;
[0044] 若serverTime1==serverTime2,则毫秒级误差Δt2在t至t2之间,将t赋给t1,再将新的t1、t2的中点作为新的t,即t1=t,t=(t1+t2)/2;跳转到步骤九;
[0045] 步骤八:若serverTime1≠serverTime2,则毫秒级误差Δt2在t至t2之间,将t赋给t1,再将新的t1、t2的中点作为新的t,即t1=t,t=(t1+t2)/2;
[0046] 若serverTime1==serverTime2,则毫秒级误差Δt2在t1至t之间,将t赋给t2,再将新的t1、t2的中点作为新的t,即t2=t,t=(t1+t2)/2;跳转到步骤九;
[0047] 步骤九:若t1≠t2,则跳转至步骤二;若t1==t2,则Δt2=t1,进入下一步;
[0048] 步骤六至步骤九是根据新的误差范围利用二分法的原理确定新的时间间隔,以新的时间间隔向目标主机发送2次请求获得新的探测数据,重复时钟误差计算模块的步骤进一步缩小误差,经过10次左右的计算得到两机之间的毫秒级误差Δt2,从而获得真实误差Δt,进入步骤十。
[0049] 步骤十:若Δt1>0,输出时钟误差Δt=Δt1+Δt2;若Δt1≤0,输出时钟误差Δt=Δt1-Δt2,至此完成时钟误差的计算。
[0050] 步骤十一:根据时钟误差调整本地主机时间,消除本地主机与目标主机之间的时间差,实现本地主机与目标主机的毫秒级时钟校准。
[0051] 选择一台与本地主机不在同一网段的远程机器测试结果,经过8次左右的交互误差趋于平稳,最终测得毫秒级误差为334ms,利用时钟校准模块将本地主机机与目标主机进行同步,同步后测试发现两台机器之间的误差为2ms,此2ms时间是由网络延时造成的并且误差的范围在毫秒级别完全可以接受。
[0052] 时钟校准模块,调用系统函数修改系统的时间,具体为Runtime类调用exec(String command)函数设置系统时间,使本地主机机和目标主机之间达到毫秒级别的同步。
[0053] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

附图说明

[0026] 图1是本发明中时钟误差计算流程图。
[0027] 图2是Δt1>0时,网络通信图。
[0028] 图3是Δt1≤0时,网络通信图。
[0029] 图中:每格代表1秒,Δt表示总时间误差;Δt1表示秒级误差;Δt2表示毫秒级误差。
专利联系人(活跃度排行)
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号