网络时间协议简介NTP(Network Time Protocol)是由美国德拉瓦大学的David L. Mills教授于1985年提出,除了可以估算封包在网络上的往返延迟外,还可独立地估算计算机时钟偏差,从而实现在网络上的高精准度计算机校时,它是设计用来在Internet上使不同的机器能维持相同时间的一种通讯协定。
时间服务器(time server)是利用NTP的一种服务器,通过它可以使网络中的机器维持时间同步。
在大多数的地方,NTP可以提供1-50ms的可信赖性的同步时间源和网络工作路径。
网络时间协议(NTP)的详细说明在RFC-1305[Mills 1992]中。
RFC-1305对NTP协议自动机在事件、状态、转变功能和行为方面给出了明确的说明。
它以合适的算法以增强时钟的准确性,并且减轻多个由于同步源而产生的差错,实现了准确性低于毫秒的时间服务,以满足目前因特网中路径量测的需要。
NTP是一个跨越广域网或局域网的复杂的同步时间协议,它通常可获得毫秒级的精度。
RFC2030[Mills 1996]描述了SNTP(Simple Network Time Protocol),目的是为了那些不需要完整NTP实现复杂性的主机,它是NTP 的一个子集。
通常让局域网上的若干台主机通过因特网与其他的NTP主机同步时钟,接着再向局域网内其他客户端提供时间同步服务。
注:清华大学网络中心的服务器采用NTP协议,所以同时支持NTP和SNTP客户端的时间同步请求。
有关NTP更详细的资料,请访问David L. Mills的主页。
网络时间服务的层状结构网络延时与时钟偏差的测量TimestampNameID When GeneratedOriginate Timestamp T1 time request sent by clientReceive Timestamp T2 time request received atservert 为服务器和客户端之间的时间偏差;d 为两者之间的往返时间∵T2=T1+t+d/2; T2-T1=t+d/2;T4=T3-t+d/2; T3-T4=t-d/2;∴d=(T4-T1)-(T3-T2);t=((T2-T1)+(T3-T4))/2[返回页面顶端]网络时间服务的实现方式•网络时间服务的实现方式o无线时钟:服务器系统可以通过串口连接一个无线时钟。
无线时钟接收GPS(全球卫星定位系统)的卫星发射的信号来决定当前时间。
无线时钟是一个非常精确的时间源,但是需要花一定的费用。
o时间服务器:还可以使用网络中NTP时间服务器,通过这个服务器来同步网络中的系统的时钟。
/~mills/ntp/servers.html列出了Internet上有效的一级时间服务器。
o局域网内的同步:如果只是需要在本局域网内进行系统间的时钟同步,那么就可以使用局域网中任何一个系统的时钟。
你需要选择局域网中的一个节点的时钟作“权威的”的时间源,然后其它的节点就只需要与这个时间源进行时间同步即可。
使用这种方式,所有的节点都会使用一个公共的系统时钟,但是不需要和局域网外的系统进行时钟同步。
如果一个系统在一个局域网的内部,同时又不能使用无线时钟,这种方式是最好的选择。
o注:网络中心的一级服务器从GPS获得精确时间。
•网络时间服务的工作模式o Sever/Client mode:用户向一个多几个服务器提出服务请求,根据所交换的信息,从中选择认为最准确的时间,并调整本地的时钟。
o Multicast/Broadcast mode:此种模式是适用于用在高速的LAN上。
利用一个或多个服务器在固定的周期向某个多播地址做广播。
o Symmetric mode:二个以上的Server互相进行时间消息的通讯,可以互相校正对方的时间,以维持整个subnet的时间一致性。
o注:对校园网用户采用服务器/客户端模式的时间服务。
•保持网络节点时间同步的机制o ntpdate命令:此命令被用来立即同步客户端和服务器的时间。
这是同步客户端和服务器的时间的最快方式。
系统每次启动的时候会使用这个命令,用来确保客户端和服务器的时间的同步。
这个命令通常指定一个NTP服务器作为一个参数,客户端的时钟被设置为和服务器的时间匹配。
当这个命令使用多个NTP服务器作为参数时,客户端会使用最低级的NTP服务器。
如果级别相等,客户端会使用加权平均数。
o ntpd守护进程:此进程在后台持续运行,并且会定时校验客户端的时钟和NTP服务器的时间。
xntpd守护进程通常是在系统启动的时候启动。
因为客户端的时钟可能产生漂移,以致与实际的NTP时钟有差异。
xntpd守护进程会周期性地发送一个NTP服务器的网络请求,并且与客户端的时钟对比,在必要的时候修正客户端的时间,同时将时间差存到名为/etc/ntp.drift文件。
默认的xntpd时间检查的间隔为64秒,在第一次检查的时候,客户端的时钟和NTP服务器上的时钟的差异会被记录下来,同时依靠这个时间差异来计划下一次检查。
如果这个时间差异很大,下一次的时间检查会很快发生。
如果这个差异很小,下一次的检查到来的时间会相应的延长。
这样就避免每次都去查询网络中的时间服务器,从而可以减轻网络负载。
查询NTP服务器的次数会慢慢变少。
直到达到NTP请求的最小值。
o注:在命令行方式下,可以采用"ntpd-q"或者"ntpdate [-b] "进行对时。
使用ntpd进行时间同步时,应事先配置好ntp.conf文件。
简单网络时间协议( SNTP)(RFC1769 ——Simple Network Time Protocol)本备忘录的状况:本备忘录为Internet community提供了信息,但不规定任何一种类型的Internet 标准。
本备忘录的分发没有限制。
概要本备忘录描述简单网络时间协议(SNTP),这是网络时间协议(NTP) 的一个改写本,NTP协议适用于同步因特网上的计算机时钟。
当不须要实现RFC 1305 所描述的NTP完全功能的情况下,可以使用SNTP。
它能用单播方式(点对点)和广播方式(点对多点)操作。
它也能在IP 多播方式下操作(可提供这种服务的地方)。
SNTP与当前及以前的NTP版本并没有大的不同。
但它是更简单,是一个无状态的远程过程调用(RPC),其准确和可靠性相似于UDP/TIME 协议在RFC868描述中所预期的。
本备忘录淘汰相同的标题的RFC 1361。
它的目的是解释用广播方式操作的协议模式,提供某些地方的进一步说明并且改正一些印刷上的错误。
在NTP版本3 RFC 1305中说明的工作机理对SNTP的实现不是完全需要的。
本备忘录的分发没有限制。
目录1. 介绍 22. 工作模式与地址分配 23. NTP时间戳格式 34. NTP 报文格式 45. SNTP 客户端操作66. SNTP 服务器操作77. 参考资料88. 安全考虑99. 作者的地址91. 介绍RFC 1305 [MIL92] 指定网络时间协议(NTP)来同步因特网上的计算机时钟。
它提供了全面访问国家时间和频率传播服务的机制,组织时间同步子网并且为参加子网每一个地方时钟调整时间。
在今天的因特网的大多数地方, NTP 提供了1-50 ms 的精确度,精确度的大小取决于同步源和网络路径等特性。
RFC 1305 指定了NTP协议机制中的事件,状态,传输功能和操作,另外,还有可选择的算法,它改进测时质量并且减少了一些同步源中可能存在的错误。
为了获得因特网上主要路径的延时精确到毫秒级,使用一些复杂的算法或者他们的等价算法是必要的。
但是,在许多场合这样的精确度是不要求,或许精确到秒已足够了。
在这样的情况下,更简单的协议例如“时间协议”[POS83 ]已被使用。
这些协议通过基于RPC交换:客户端请求此刻时间,然后服务器回传从某个已知时间点到现在的秒钟数。
NTP被设计成了性能差异很大的客户端及服务器均能适用,且适用于客户端及服务器所在网路有大范围的网络延迟和抖动的情况。
今天的因特网上的NTP同步子网的大多数用户使用一个软件包包括了一整套的NTP 的选择和算法,是一个比较复杂,实时的应用系统。
软件要适用于多种硬件平台:从巨型计算机到个人计算机。
要在这样的范围都适用,它的庞大尺寸和复杂性就不适合于很多应用了。
按照要求,探求一些可供选择的访问策略( 使用适合于精确度要求不是很严格的简单软件)是有用的。
本备忘录描述简单网络时间协议(SNTP),它是一个简化了的NTP服务器和NTP客户端策略。
SNTP在协议实现上没有什么更改,在最近也不会有什么变动。
访问范例与UDP/TIME 协议是一致的,实际上,SNTP应该更容易适用于使用个人计算机的 UDP/TIME 客户。
而且,SNTP 也被设计在一个专门的服务器( 包括一台集成的无线电时钟)里操作。
由于在系统里的那些各种各样反应机制的设计和控制,交付调节时间精确到微秒是可能的。
这样的专门设计是切实可行的。
强烈建议SNTP 仅仅在同步子网的末端被使用。
SNTP 客户端应该仅在子网的叶子( 最高的阶层) 操作并在配置过程中没有依靠其它NTP或者SNTP客户端来同步。
SNTP 服务器应该仅在子网的根( 阶层1) 操作并在配置过程中,除一台可靠的无线电时钟外中没有其它同步源。
只有使用了有冗余的同步源及不同的子网路径及整套NTP实现中的crafted 算法,主服务器通常期望的可靠性才有可能达到。
这种做法使主同步源在无线电时钟通信失败或者交付了错误时间时,还能用到其它几个无线电时钟和通向其它主要服务器的备份路径。
因此,应该仔细考虑客户端中SNTP的使用,而不是在主服务器里的NTP的使用。
2. 工作模式与地址分配象NTP一样,SNTP 能在单播(点向点) 或者广播(点对多点) 模式中操作。
单播客户端发送请求到服务器并且期望从那里得到答复,并且(可选的),得到有关服务器的往返传播延迟和本地时钟补偿。
广播服务器周期性地送消息给一指定的IP 广播地址或者IP多播地址,并且通常不期望从客户端得到请求,广播客户端监听地址但通常并不给服务器发请求。
一些广播服务器可能选择对客户端作出反应请求以及发出未经请求广播消息;同时一些广播客户端可能会送请求仅为了确定在服务器和客户端之间的网络传播延迟。
在单播方式下,客户端和服务器的IP 地址按常规被分配。
在广播方式下,服务器使用一指定的IP播送地址或者IP多播地址,以及指明的媒介访问播送地址,客户端要在这些地址上帧听。
为此,IP 广播地址将限制在一个单独的IP 子网范围,因为路由器不传播IP广播数据报。
就以太网而论,例如,以太网媒介访问广播地址(主机部分全部为1) 被用于表示IP广播地址。