网络时间协议(Network Time Protocal, NTP)学习笔记

看了一些网络上比较好的介绍NTP知识的文章,做个笔记备忘。


什么是网络时间协议?

来自Wikipedia的定义
http://en.wikipedia.org/wiki/Network_Time_Protocol [传送门]
网络时间协议(Network Time Protocol, NTP)是通过包交换方式在可变延迟的数据网络中同步两个计算机系统的时钟的网络协议。


来自ntp.org的定义
NTP is a protocol designed to synchronize the clocks of computers over a network.


为什么要有网络时间同步?

只要你使用一段时间电脑,就会发现自己电脑上的时间变快了或者变慢了。这是因为计算机系统的时钟是由晶振产生的,不同的晶振是有频偏的。举个例子,你手头有100个晶振,他们都标称自己一分钟跳60下,但实际上,没有哪个晶振能够实现如此精确地“跳动”,可能某一个晶振每分钟会跳60.0001下,而另一个每分钟跳了59.999999下,这就是误差。你可以做了一个实验,让这100个晶振同时开始跳,坚持一年,随着时间流逝,每个晶振的误差逐渐累积,总有一天,你会发现其中一个晶振比其他晶振多跳了一下。如果有一天,你发现自己的电脑显示下班时间到了,可其他同事还纹丝不动,其中一种可能就是你的电脑时间比别人的快了。


介绍NTP的资源列表

1. Wikipedia

除了NTP的定义,Wikipedia上还给出了时钟分层(stratum)的详细介绍,说明了什么样的时钟可以作为第0层时钟,包括 atomic (铯 cesium, 铷 rubidium) clocks, GPS clocks or other radio clocks。

还包括一张美国海军天文台的NTP第0层时钟源的图片。


网络时间协议(Network Time Protocal, NTP)学习笔记_第1张图片


Wikipedia还介绍了时钟同步算法和相关的RFCs。


2. 鸟哥的 Linux 私房菜 -- NTP 时间服务器

http://vbird.dic.ksu.edu.tw/linux_server/0440ntp.php [传送门]
这篇综合性的文章最值得推荐,包含了时区、NTP通讯协议、NTP服务器的安装与设定、客户端的时间更新方式等很多内容,读完这篇文章,除了对NTP有理论上的理解,还能够获得动手操作的指导性知识。


3. 公共NTP时间服务器虚拟集群

http://www.pool.ntp.org/en/ [传送门]

如果你准备动手同步自己的计算机时间,你就会开始寻找一个可用的NTP服务器,上面这个地址是很好的去处,尤其对于在国内的朋友,有些服务器虽然名气大,可是你就是连不上。如果你在Linux下面使用ntpdate手动同步时间,建议大家到该网页右侧,选择[亚洲服务器索引页](http://www.pool.ntp.org/zone/asia),选择香港的服务器集群。另外一个比较有用的技巧是鸟哥提到的,如果你知道服务器的ip地址,那么最好不用域名,避免域名劫持。


4. CentOS下NTP实战指南

http://www.uptimemadeeasy.com/networking/setup-ntp-on-centos-linux [传送门]
这篇文章从系统管理员的视角介绍了常见的NTP使用模式:设置一台与外部时钟源同步的节点,内部的其他机器与该节点同步时钟,并详细介绍了如何在centos linux上安装和配置ntp。


找到独一无二的晶振

有了这些资源,基本可以应付日常工作了。最后介绍一个利用时钟偏差来寻找世界上那个独一无二的晶振的例子,许久之前看到的一篇论文中介绍的,有兴趣可以去Google一下,这里就不给链接了。
方法是这样的。如果一台笔记本电脑没有启用时间同步,可想而知,它的时钟就会一直变快或者一直变慢。如果我能够和他进行一段时间的持续通信,就可以估计出它的晶振的频偏,如果这个频偏估计的很精确,使得我可以将这个晶振和其他晶振区分开,我就能够知道这个晶振是不是我要寻找的。

你可能感兴趣的:(Linux)