CN104935630B - 基于http的毫秒级时钟校准方法 - Google Patents
基于http的毫秒级时钟校准方法 Download PDFInfo
- Publication number
- CN104935630B CN104935630B CN201510197388.3A CN201510197388A CN104935630B CN 104935630 B CN104935630 B CN 104935630B CN 201510197388 A CN201510197388 A CN 201510197388A CN 104935630 B CN104935630 B CN 104935630B
- Authority
- CN
- China
- Prior art keywords
- time
- millisecond
- host
- error
- new
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Abstract
本发明公开了一种基于HTTP的毫秒级时钟校准方法,包括在本地时钟到达整数秒时,由本地主机间隔一个时间间隔向目标主机发送两个HTTP请求,分别记录本地主机发送时间、收到响应时间和目标主机发送响应的时间;计算网络时延,根据网络时延计算秒级误差;根据秒级误差判断本地主机时间比目标主机时间快或慢或同步,确定新的误差范围;根据新的误差范围利用二分法确定新的时间间隔,以新的时间间隔向目标主机再次发送2次HTTP请求逐步缩小误差;最后计算输出时钟误差,进行时钟校准,实现本地主机与目标主机的毫秒级时钟校准。本发明可将本地主机与目标主机之间的同步精确度提高到毫秒级别且不会对服务器带来过大压力。
Description
技术领域
本发明涉及一种基于HTTP的毫秒级时钟校准方法,属于技术领域。
背景技术
在日常生活中,越来越多网站推出了抢购活动,例如淘宝、京东、当当等互联网企业推出的限时抢购活动,以及12306的网上售票等,吸引了越来越多用户参与其中。但是由于本机与目标主机之间的时间存在误差,导致慢人一步,抢购失败而大失所望,这样的例子随处可见。
随着大家对抢购活动的热衷程度不断加深,网上出现了大量的抢购软件。这些抢购软件利用频繁刷新和验证的手段进行抢购,然而这种方式一方面随着验证方式复杂性的增强,破解验证的难度也不断增加;另一方面频繁刷新对网站的服务器造成了极大的压力,以至于各大网站通过各种技术手段来遏制这种行为。根据新华社的最新采访,12306网站表示为了保证旅客购票和网站平稳运行,他们正在加大对恶意抢票软件的遏制和防控,并且取得了一定的效果。所以,这种通过频繁刷新和破解验证的手段并非是最优的选择。于是怎样提高准确度成为了解决这个问题的关键点。
目前,许多网站的抢购时间提示只精确到秒级别,不显示毫秒级的时间,即使部分网站页面上显示了看似精确的毫秒级时钟倒计时,但是该倒计时通常是使用JavaScript脚本在客户端浏览器上使用SetTimeout函数模拟显示出来的,受到JavaScript计时机制的影响,该时钟并不精确。鉴于抢购过程中毫秒级的误差往往决定了抢购能否成功。
解决网络时钟同步常用的手段是NTP的同步对时方式,该方式是基于NTP协议,由服务器向客户端发送带有时间戳的NTP包从而估计客户端与服务器之间的时间误差,诸如《基于NTP协议的网络时间同步系统的研究与实现》、《高精度计算机网络时钟同步技术的研究》、《网络时钟同步的研究》等论文都对这种方式进行了深入研究。但是,这种方式的不足在于依赖服务器端对NTP的支持,所以在服务器不提供NTP支持的情况下,该方法并不能获得客户端与服务器之间的时钟误差。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种基于HTTP的毫秒级时钟校准方法,解决现有技术中目标网站仅显示到秒,对于毫秒级别的时间不能精确获取,导致本地主机与目标主机时钟不能同步精确到毫秒的技术问题。
为解决上述技术问题,本发明所采用的技术方案是:基于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;
步骤十一:根据时钟误差调整本地主机时间,消除本地主机与目标主机之间的时间差。
所述毫秒级时钟误差下限t1=0ms,毫秒级时钟误差上限t2=1000ms,发送HTTP请求的毫秒级时间间隔t=500ms。
所述目标主机发送响应的时间是通过解析接收到的HTTP响应中的Date字符串得到的。
所述本地主机发送时间、接收到响应时的本地主机时间和目标主机发送响应时间均采用UTC格式。
与现有技术相比,本发明所达到的有益效果是:(1)该发明能够将本机与目标主机的之间的误差精确到毫秒级别;(2)按照HTTP协议规范,服务器返回的响应数据头信息中包含有精确到秒的时间,因此本发明可以与任何网站服务器进行时钟校准;(3)使用二分法估计毫秒级误差,仅需要进行10次左右的交互即可以将误差确定到毫秒级别,且本地主机每秒只与目标主机进行一次交互,在提高效率的同时也不会对服务器造成过大压力,应用于网站购票能够提高购票成功率,具有较好的实用价值和市场推广前景。
附图说明
图1是本发明中时钟误差计算流程图。
图2是Δt1>0时,网络通信图。
图3是Δt1≤0时,网络通信图。
图中:每格代表1秒,Δt表示总时间误差;Δt1表示秒级误差;Δt2表示毫秒级误差。
具体实施方式
本发明充分利用现有HTTP协议中的机制,无需增加客户端和服务器之间额外通信开销即可有效解决客户端时间和服务器时间的同步问题,将本地主机与目标主机之间的同步精确度提高到毫秒级别。
作为本发明的一个实施例,采用Java编程语言以Windows作为运行环境,主要由预处理模块、时钟误差计算模块、时钟校准模块组成。
预处理模块为了将获取的本地主机时间精确到毫秒,使用Windows多媒体时钟:调用Windows系统API的timeGetTime函数,从而获得从Windows启动开始所经历的时间(精度为毫秒),进而得到本地主机精确到毫秒的准确时间。
假设本地主机与目标主机之间的时间误差为Δt,Δt可定义为两部分:Δt=Δt1+Δt2,其中Δt1为秒级别的误差,Δt2为毫秒级别的误差。假定测算过程中毫秒级误差Δt2的误差范围是t1至t2,且计算过程中t1、t2精确到毫秒。为了计算方便,本发明中本地主机发送时间、接收到响应时的本地主机时间和目标主机发送响应时间均采用UTC格式存储,即自1970年1月1日0时0分0秒以来的毫秒数。
下面结合附图对本发明作进一步描述。
如图1所示,为本发明中时钟误差计算方法,包括如下步骤:
步骤一:设置毫秒级时钟误差下限为t1,毫秒级时钟误差上限为t2,发送HTTP请求的毫秒级时间间隔为t,t=(t1+t2)/2;本发明中,毫秒级时钟误差下限t1=0ms,毫秒级时钟误差上限t2=1000ms,发送HTTP请求的毫秒级时间间隔t=500ms。
步骤二:利用URLConnection的实例化对象调用getOutputStream函数,在本地时钟到达整数秒时,本地主机向目标主机发送第一个HTTP请求,通过timeGetTime函数获得精确到毫秒的本地主机发送时间sendTime1,利用URLConnection的实例化对象调用getInputStream()函数,得到接收到第一次响应时的本地主机时间backTime1,目标主机发送响应的时间是通过解析接收到的HTTP响应中的Date字符串得到的,即利用URLConnection的实例化对象调用getDate获取目标主机发送响应的时间serverTime1。getDate是从HTTP的请求头中获取目标主机的时间,即使目标网站的页面没有时间显示也能获取目标网站的时间,精确到秒。
步骤三:等待一个时间间隔t,即0.5s,使本地主机向目标主机发送第二个HTTP请求,采用与步骤二同样的调用方式获取:本地主机发送时间sendTime2、接收到第二次响应时的本地主机时间backTime2以及目标主机发送响应的时间serverTime2。
步骤四:根据sendTime1、backTime1计算网络单向时延OWD,OWD=(backTime1-sendTime1)/2;
步骤五:通过时钟误差计算模块计算秒级误差Δt1:Δt1等于backTime1-serverTime1-OWD,取计算结果的值向上取整赋值给Δt1。例如:计算结果为0.5s,则Δt1=0;计算结果为-1.5s,则Δt1=-1。
步骤六:如图2所示,若Δt1>0,表示本地主机时间比目标主机时间快,则转到步骤七;
如图3所示,若Δ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,进入下一步;
步骤六至步骤九是根据新的误差范围利用二分法的原理确定新的时间间隔,以新的时间间隔向目标主机发送2次请求获得新的探测数据,重复时钟误差计算模块的步骤进一步缩小误差,经过10次左右的计算得到两机之间的毫秒级误差Δt2,从而获得真实误差Δt,进入步骤十。
步骤十:若Δt1>0,输出时钟误差Δt=Δt1+Δt2;若Δt1≤0,输出时钟误差Δt=Δt1-Δt2,至此完成时钟误差的计算。
步骤十一:根据时钟误差调整本地主机时间,消除本地主机与目标主机之间的时间差,实现本地主机与目标主机的毫秒级时钟校准。
选择一台与本地主机不在同一网段的远程机器测试结果,经过8次左右的交互误差趋于平稳,最终测得毫秒级误差为334ms,利用时钟校准模块将本地主机机与目标主机进行同步,同步后测试发现两台机器之间的误差为2ms,此2ms时间是由网络延时造成的并且误差的范围在毫秒级别完全可以接受。
时钟校准模块,调用系统函数修改系统的时间,具体为Runtime类调用exec(String command)函数设置系统时间,使本地主机机和目标主机之间达到毫秒级别的同步。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (4)
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格式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510197388.3A CN104935630B (zh) | 2015-04-23 | 2015-04-23 | 基于http的毫秒级时钟校准方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510197388.3A CN104935630B (zh) | 2015-04-23 | 2015-04-23 | 基于http的毫秒级时钟校准方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104935630A CN104935630A (zh) | 2015-09-23 |
CN104935630B true CN104935630B (zh) | 2018-03-23 |
Family
ID=54122601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510197388.3A Expired - Fee Related CN104935630B (zh) | 2015-04-23 | 2015-04-23 | 基于http的毫秒级时钟校准方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104935630B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108650397A (zh) * | 2018-03-16 | 2018-10-12 | 维沃移动通信有限公司 | 一种时间显示方法和移动终端 |
CN112615691A (zh) * | 2019-10-06 | 2021-04-06 | 上海淡竹体育科技有限公司 | 一种在计时类体育测试系统多终端间精确对准时间的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7454648B2 (en) * | 2005-09-09 | 2008-11-18 | International Business Machines Corporation | System and method for calibrating a time of day clock in a computing system node provided in a multi-node network |
US8073976B2 (en) * | 2008-03-27 | 2011-12-06 | Microsoft Corporation | Synchronizing clocks in an asynchronous distributed system |
CN102821108A (zh) * | 2012-08-24 | 2012-12-12 | 北龙中网(北京)科技有限责任公司 | 将客户机和服务器进行时间精确同步的方法 |
-
2015
- 2015-04-23 CN CN201510197388.3A patent/CN104935630B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN104935630A (zh) | 2015-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chow et al. | The mystery machine: End-to-end performance analysis of large-scale internet services | |
CA2837709C (en) | Method for improving accuracy in computation of one-way transfer time for network time synchronization | |
AU2016386053B2 (en) | Client-side activity monitoring | |
CN104935630B (zh) | 基于http的毫秒级时钟校准方法 | |
CN107613012A (zh) | 一种多终端网页同步计时方法及系统 | |
CN106533399B (zh) | 修改时钟信号的电路和方法及执行时间敏感任务的装置 | |
WO2017107793A1 (zh) | 一种数据处理方法和设备 | |
CN104730983B (zh) | 一种高精度时间程控方法 | |
US8874732B1 (en) | System and method for end-to-end network-based services usage metering validation | |
US20160323158A1 (en) | Estimating utilization of network resources using time series data | |
CN107229219A (zh) | 一种基于gps模块、嵌入式系统的计算机精确授时方法及其实现系统 | |
CN111106976A (zh) | 一种cdn网络的探测方法、装置、电子设备及可读存储介质 | |
CN109302255A (zh) | 时间同步控制方法、装置、系统及计算机可读存储介质 | |
KR20170047856A (ko) | 로그 데이터 분석 방법 및 장치 | |
CN1968077A (zh) | 客户端与服务器端的对时方法及其系统 | |
CN104636395A (zh) | 一种计数处理方法及装置 | |
US20180288636A1 (en) | A method for automatic measurement of App load power consumption on mobile devices based on physical measurement | |
Grinev et al. | Analytics for the real-time web | |
Jones et al. | An evaluation of the state of time synchronization on leadership class supercomputers | |
US9065859B1 (en) | Server side disambiguation of ambiguous statistics | |
CN103490856B (zh) | 用于深空探测的Mark5B格式VLBI数据接收解码与纠错系统及方法 | |
CN103647615A (zh) | 报文传输过程中延迟抖动消除方法及装置 | |
Jones et al. | Clock synchronization in high‐end computing environments: a strategy for minimizing clock variance at runtime | |
Leira et al. | High-speed optical networks latency measurements in the microsecond timescale with software-based traffic injection | |
Wingerath et al. | Who watches the watchmen? on the lack of validation in nosql benchmarking |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180323 |