NTP网络时间协议

        参加计算所面试的时候查礼老师问到一个问题:如何利用UDP协议使客户机获得服务器上的标准时间,简单说就是对一下表。我当时本来就紧张,开口就说首先要保证可靠传输,要用TCP实现。老师又提醒说要求用UDP协议,然后我又是一阵沉默……总之老师提示一点,我就讲一点,答得一塌糊涂……

        前几天的时候又想起这个问题,就上网搜了一下,这才发现这个授时功能早就有标准协议来实现了。然后赶紧把这个NTP协议学习一下,发现它的原理其实是十分简单的,每个人都能想到,我当时只是想不出其中的两个假设,无法列出数学方程。想来也惭愧,这么常用的一个协议,我以前居然一点都不知道……不过正所谓学然后知不足,努力吧!

传说中的NTP(Network Time Procotol)

一、NTP协议简介

        NTP协议全称网络时间协议(Network Time Procotol)。它的目的是在国际互联网上传递统一、标准的时间。具体的实现方案是在网络上指定若干时钟源网站,为用户提供授时服务,并且这些网站间应该能够相互比对,提高准确度。

        NTP最早是由美国Delaware大学的Mills教授设计实现的,从1982件最初提出到现在已发展了将近20年,2001年最新的NTPv4精确度已经达到了200毫秒。对于实际应用,又有确保秒级精度的SNTP(简单的网络时间协议)。本项目使用网上时间传递格式NTPv3公布于1992年,当前几乎所有的授时网站都是基于NTPv3的。

二、NTP原理、结构与工作模式

NTP的基本原理

T1:客户方发送查询请求时间(以客户方时间系统为参照

T2:服务器收到查询请求时间(以服务器时间系统为参照)            

T3:服务器回复时间信息包时间(以服务器时间系统为参照)

T4:客户方收到时间信息包时间(以客户方时间系统为参照)                 

δ1:请求信息在网上传播所消耗的时间

δ2:回复信息在网上传播所消耗的时间  

θ :客户端和服务器的时间差

现已知T1 T2T3T4,希望求得θ以调整客户方时钟,有:

假设请求和回复在网上传播的时间相同,即δ1=δ2,则可解得:  

可以看到,θδ只与T2T1差值、T3T4差值相关,而与T2T3差值无关,即最终的结果与服务器处理请求所需的时间无关。据此,客户方A即可通过T1T2T3T4计算出时差θ去调整本地时钟。

NTP的网络体系结构

        NTP所建立起的网络基本结构是分层管理的类树形结构。网络中的节点有两种可能:时钟源或客户。每一层上的时钟源或客户可向上一层或本层的时钟源请求时间校正。

        0层为官方时钟所保留。 

        第一层为一级时钟源层,其上没有任何客户,只有主钟源,这些钟源之间相互不允许校正。一级钟源的任务就是将时间信息向第二层的钟源或客户发布。  

        第二层及以下层除层数不同、时间质量不一样外没有本质上的区别。第N层上的时钟源的时间来自第N-1层或第N层,并向第N层上的时钟源和第N+1层上的客户提供校时服务。

NTP的工作模式:

/被动对称模式:一对一的连接,双方均可同步对方或被对方同步,先发出申请建立连接的一方工作在主动模式下,另一方工作在被动模式下。

/服务器模式:与主/被动模式基本相同。唯一区别在于,客户方可被服务器同步,但服务器不能被客户同步。

广播模式:一对多的连接,服务器不论客户工作在何种模式下,主动发出时间信息,客户由此信息调整自己的时间,此时网络延时d2忽略,因此在准度上有损失,但可满足秒级应用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值