首页 > 编程知识 正文

ntp协议支持的认证算法有哪些,ntp对应的安全协议

时间:2023-05-05 04:54:29 阅读:16795 作者:4324

查看原作者:转载自:

NTP协议介绍652013-06-1914336050:50 (转载

SNTP协议原理

SNTP是简单网络时间协议的简称,是目前互联网上实现时间同步的重要工程方法。 本文对SNTP协议的工作原理、工作模式、时间戳形式、信息帧形式进行了研究,最后对SNTP协议的应用提出了有益的建议。

关键字:SNTP; 时间同步; 时间戳形式; 消息格式

title analysis for sntp协议

Abstract:

sntpisabbreviationforsimplenetworktimeprotocol.atpresentitisanimportantengineeringmethodfortimesynchronizationininternet.ternet 模式,timestamp格式,消息格式of sntp,finallywegivesomeadviceforapplication。

Key words: SNTP; 时间同步化; timestamp format; 消息格式

引言0

在电力通信、通信费用、分布式网络计算和天气预报等需要精确时间同步的情况下,计算机本身提供的时钟信号是不够的。 据统计,计算机时间与国际标准时间的偏差在1分钟以上的占90%以上。 这是因为计算机时钟信号来源于自带的简单晶体振荡器,该晶体振荡器守时性差,调整时间后一般每天有几秒钟的时间漂移。 上述对APP应用时间精度的要求都是秒级的,而NTP协议是提供精确网络时间服务的重要途径。 NTP协议是广泛用于在互联网上同步计算机时钟的网络时间协议的简称。 NTP通过提供完整的机制访问国际标准时间,在大多数情况下,同步源和网络路径提供1-50MS的时间精度。

NTP协议需要复杂的算法来保证高精度,而在许多实际APP应用中,逐秒精度就足够了。 其中,SNTP协议问世。 它通过简化原始接入协议,在保证时间精度的前提下,便于网络时间的开发和应用。 SNTP主要减少了NTP协议的访问安全性、服务器自动迁移方面的部分。

SNTP协议的当前版本号为SNTP V4,与早期版本兼容。 更重要的是,SNTP与NTP协议具有互操作性。 这意味着SNTP客户可以与NTP服务器协同工作,NTP客户也可以从SNTP服务器接收时间信息。 这是因为NTP和SNTP的数据包格式相同,计算客户端时间、时间偏差和数据包往返延迟的算法也相同。 因此,NTP和SNTP实际上是不可分割的。

本文主要对SNTP协议进行分析,主要涉及协议的工作原理、工作模式、时间戳格式、消息格式,最后对SNTP协议的应用提出了一些建议。

1 SNTP协议的工作原理

SNTP协议采用客户/服务器的工作方式,服务器以GPS信号或自带的原子钟为系统时间基准,客户端通过定期访问服务器提供的时间服务获得准确的时间信息,调整自己的系统时钟,使网络客户与服务器的通信采用UDP协议,端口为123。 课程的原理可以用下图来说明。

图1 :授时原理图

T1:客户端发送查询请求的时间(请参见客户端时间系统) Originate Timestamp;

T2:服务器接收到查询请求的时间(参见服务器时间系统)被标记为接收时间表;

T3:服务器返回时间分组时间(见服务器时间系统)传输时间;

T4:客户收到时间包的时间(见客户的时间系统)标记为目标时间;

D1 )请求信息在互联网上传播之前所消耗的时间

D2 )回复信息在互联网上发布之前所消耗的时间

现在,已知T1、T2、T3、T4,为了调整客户时钟要求如下.

(1) ) ) )。

假设请求和回复在网上发布的时间相同,即D1=D2,则可以看到:

(2) ) ) )。

可见,d仅与T2T1差分、T3T4差分有关,与T2T3差分无关。 也就是说,最终结果与服务器处理请求所需的时间无关。 从而,客户端a能够在T1、T2、T3、T4计算时差来调整本地时钟。

2 SNTP协议工作模式

SNTP协议使用单播、广播或多播模式运行。 单播模式是客户端向预先指定的服务器地址发送请求,从服务器获取准确的时间、往返延迟和与服务器时间的偏差。 广播模式是一种广播服务器,定期向指定的广播地址发送时间信息,该地址中的服务器接收广播,但不发送请求。 组播模式扩展了广播模式,目的是协调一组地址未知的服务器。 在此模式下,多播客户端发送一个普

通的NTP请求给指定的广播地址,多个多播服务器在此地址上进行侦听。一旦收到一个请求信息,一个多播服务器就对客户返回一个普通的NTP服务器应答,然后客户依此对广播地址内剩下的所有服务器作同样的操作,最后利用NTP迁移算法筛选出最好的三台服务器使用。

客户和服务器地址可以采用通常的IPV4或IPV6。IANA保留IPV4地址224.0.1.1,保留IPV6以:101结束的地址作为NTP广播或多播的地址。用户也可以根据具体情况,建立自己的地址空间,只要不与已经使用的地址空间冲突。

为了局限广播或多播服务占用太多的网络资源,调节多播信息IP头中的TTL值到一个合理的水平非常重要。只有在地址范围内的多播客户能接收到多播信息,只有在地址范围内的服务器组能够对客户的响应进行应答。在Internet上,SNTP广播或多播客户极易受到来自其它SNTP服务器的攻击,因此在Internet上使用该服务时,一定要采用访问控制和加密的措施。

3 SNTP数据格式

SNTP协议同其它的网络应用层协议一样,都具有一定的数据格式,它主要涉及时间的表示,即时间戳的格式,数据如何组帧在网络上传输,即信息帧格式。

3.1 SNTP时间戳格式

SNTP时间戳是该协议的重要产品,用来对时间进行精确表示。它由一个64位无符号浮点数组成,整数部分为头32位,小数部分为后32位;单位为秒,时间相对于1900年1月零点。它能表示的最大数字为4,294,967,295秒,同时具有232PS的精确性,这能满足最苛刻的时间要求。值得注意的是在1968年的某一个时间(2,147,483,648秒)时间戳的最高位已被设置为1,在2036年的某一个时间(4,294,967,295秒)64位字段将会溢出,所有位将会被置为零,此时的时间戳将会被视为无效。为了解决这一问题,尽量延长SNTP时间戳的使用时间,一种可能的办法为:如果最高位设置为1,UTC时间范围为1968-2036之间,时间计算起点从1900年1月0点0分0秒开始计算;如果最高位设置为0,UTC时间范围为2036-2104之间,时间计算起点从2036年2月7日6点28分16秒开始计算;

3.2 SNTP信息帧格式

SNTP协议是UDP协议的客户,它利用UDP的123端口提供服务,SNTP客户在设置请求信息时要把UDP目的端口设置为该值,源端口可以为任何非零值,服务器在响应信息中对这些值进行交换。同其它应用层协议一样,SNTP协议的数据通信也是按数据帧的格式进行,下图是对SNTP信息帧格式的描述:

图2:SNTP信息帧格式

LI:当前时间闰秒标志。字段长度为2位整数,只在服务器端有效。取值定义为:

LI=0:无警告;

LI=1:最后一分钟是61秒;

LI=2:最后一分钟是59秒;

LI=3:警告(时钟没有同步)

服务器在开始时,LI设置为3,一旦与主钟取得同步后就设置成其它值。

VN:版本号。字段长度为3位整数,当前版本号为4。

Mode:指示协议模式。字段长度为3位,取值定义为:

Mode=0:保留

Mode=1:对称主动;

Mode=2:对称被动;

Mode=3:客户;

Mode=4:服务器;

Mode=5:广播;

Mode=6:保留为NTP控制信息;

Mode=7:保留为用户定义;

在单播和多播模式,客户在请求时把这个字段设置为3,服务器在响应时把这个字段设置为4。在广播模式下,服务器把这个字段设置为5。

Stratum:指示服务器工作的级别,该字段只在服务器端有效,字段长度为8位整数。取值定义为:

Stratum=0:故障信息;

Stratum=1:一级服务器;

Stratum=2-15:二级服务器;

Stratum=16-255:保留;

Poll Interval:指示数据包的最大时间间隔,以秒为单位,作为2的指数方的指数部分,该字段只在服务器端有效。字段长度为8位整数,取值范围从4-17,即16秒到131,072秒。

Precision:指示系统时钟的精确性,以秒为单位,作为2的指数方的指数部分,该字段只在服务器端有效。字段长度为8位符号整数,取值范围从-6到-20。

Root Delay:指示与主时钟参考源的总共往返延迟,以秒为单位,该字段只在服务器端有效。字段长度为32位浮点数,小数部分在16位以后,取值范围从负几毫秒到正几百毫秒。

Root Dispersion:指示与主时钟参考源的误差,以秒为单位,该字段只在服务器端有效。字段长度为32位浮点数,小数部分在16位以后,取值范围从零毫秒到正几百毫秒。

Reference Identifier:指示时钟参考源的标记,该字段只在服务器端有效。对于一级服务器,字段长度为4字节ASCII字符串,左对齐不足添零。对于二级服务器,在IPV4环境下,取值为一级服务器的IP地址,在IPV6环境下,是一级服务器的NSAP地址。

Reference Timestamp:指示系统时钟最后一次校准的时间,该字段只在服务器端有效,以前面所述64位时间戳格式表示。

Originate Timestamp:指示客户向服务器发起请求的时间,以前面所述64位时间戳格式表示。

Transmit Timestamp:指示服务器向客户发时间戳的时间,以前面所述64位时间戳格式表示。

Authenticator(可选):当需要进行SNTP认证时,该字段包含密钥和信息加密码。

4 SNTP服务器的基本工作过程

下面以最常用的SNTP工作模式-单播模式,来说明SNTP服务器的工作过程:

SNTP服务器在初始化时,Stratum字段设置为0,LI字段设置为3,Mode 字段设置为3,Reference Identifier字段设置为ASCII字符“INIT”,所有时间戳信息设置为0;

一旦SNTP服务器与外部时钟源取得同步后,进入工作状态,Stratum字段设置为1,LI字段设置为0,Reference Identifier字段设置为外部时钟源的ASCII字符,如“GPS”,Precision字段设置为-6到-20之间的一个数值,通常设置为-16。VN字段设置为客户端请求信息包的VN字段值,Root Delay和Root Dispersion字段通常设置为0,Reference Timestamp字段设置为从外部时钟源最新取得的时间,Originate Timestamp字段设置为客户请求包的Transmit Timestamp字段值,Transmit Timestamp字段设置为服务器发出时间戳给客户的时间。

SNTP服务器在工作过程中,如果与外部时钟源失去同步,Stratum字段设置为0,Reference Identifier字段设置为故障原因的ASCII字符,如:“LOST”,此时客户收到这个信息时,要丢弃服务器发给它的时间戳信息。

5 SNTP应用的建议

为了使SNTP更好地在网络中进行应用,尤其是在设计和管理有大量计算机需要授时的情况下,有以下建议:

尽量在本地局域网内部部署SNTP服务器,而不要采用Internet网上的公用SNTP服务器,因为Internet网络的时延不确定性,服务质量得得不到保证,会对授时的精度产生很大影响;

客户端对服务器的授时请求周期要大于1分钟,以免造成SNTP服务器资源迅速消耗,而不能及时响应客户的请求;

当网络中客户机数目大于500台时,应该配置多台SNTP服务器,以达到要求的授时精度。SNTP最多每秒种能同时响应500个请求,一旦超过这一数目,授时的精确度就得不到保证;

在需要高可靠授时的应用,最好配备多台SNTP服务器,利用DNS系统实现负载均衡和集群;

客户端应该能够识别服务器端的故障,一旦发现Stratum字段为0,应该立刻丢弃服务器发来的时间戳,转向其它服务器取时间,以避免授时错误;

6 结论

SNTP协议是目前网络上提供精确时间服务的一种有效手段,但是很少有人对它进行详细的分析,我们所作的工作对于开发者和网络管理人员来说都是非常有益的,对于开发者来说,能够根据协议开发自己的SNTP服务器,同时对SNTP协议的不足之处进行改进;对于网络管理者来说,在理解SNTP工作原理和方式的基础上,通过网络的优化,使SNTP服务发挥最佳的效能。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。