当第一次听到NTP时,完全不知道是什么概念,只好问度娘。度娘搜到的答案如下:
看了度娘的解释后,才大概明白该协议是进行网络对时的协议,比如当自己的电脑时间不对,可以从另外一台电脑病基于NTP协议进行对时,以另外一台电脑的时间作为基准。那么,更官方的理解就是:使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。对于运行NTP的本地系统,既可以接收来自其他时钟源的同步,又可以作为时钟源同步其他的时钟,并且可以和其他设备互相同步。
NTP的基本工作原理如图所示。Device A和Device B通过网络相连,它们都有自己独立的系统时钟,需要通过NTP实现各自系统时钟的自动同步。为便于理解,作如下假设: 在Device A和Device B的系统时钟同步之前,Device A的时钟设定为10:00:00am,Device B的时钟设定为11:00:00am。NTP报文在Device A和Device B之间单向传输所需要的时间为1秒。
1.Device A发送一个NTP报文给Device B,该报文带有它离开Device A时的时间戳,该时间戳为10:00:00am(T1)。 2.当此NTP报文到达Device B时,Device B加上自己的时间戳,该时间戳为11:00:01am(T2)。 3.当此NTP报文离开Device B时,Device B再加上自己的时间戳,该时间戳为11:00:02am(T3)。 4.当Device A接收到该响应报文时,Device A的本地时间为10:00:03am(T4)。 5.至此,Device A已经拥有足够的信息来计算两个重要的参数: NTP报文的往返时延Delay=(T4-T1)-(T3-T2)=2秒。 Device A相对Device B的时间差offset=((T2-T1)+(T3-T4))/2=1小时。
主要字段的解释如下:
上述总结了NTP协议的原理,下一篇将讲解NTP的代码实现。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/182734.html原文链接:https://javaforall.cn