NTP协议介绍及实现方案
1 NTP协议简介
NTP(Network Time Protocol,网络时间协议)是由RFC1305定义的时间同步协议,用来在分布时间服务器和客户端之间进行时钟同步,同时也是一个因特网标准,它采用应用层同步方法将计算机时钟和UTC时间(格林尼治时间)进行同步,因此时间精度不高,一般在10ms到100ms之间。
NTP协议属于应用层协议,定义了协议实现过程中所使用的结构、算法、实体和协议,它是基于IP和UDP的,也可以被其它协议组使用。
NTP协议时OSI参考模型的最高层协议,符合UDP传输协议格式,拥有专用端口123。NTP协议是OSI参考模型的高层协议,符合UDP传输协议格式,拥有专用端口123,在嵌入式linux系统中,采用Server/Cilent的模式来实现网络通信,客户端主动提出申请,而服务器端被动打开。又由于使用UDP套接字建立连接的好处在于,只有被该套接字指定为远程地址的计算机端口才能向该套接字发送数据,如果没有建立连接,任何IP地址和端口都能将数据发送到这个UDP套接字上。所以采用建立连接的UDP套接字来传输时间信息。
2 NTP协议实现原理
    2.1 NTP协议的分层结构
    NTP采用分层的方法来定义时钟的准确性,可分为从0~15共16个级别,级别编码越低,精确度和重要性越高。第0级设备是时间同步网络的基准时间参考源,位于同步子网络的顶端,目前普遍采用全球卫星定位系统,即由GPS播出的UTC时间代码。级别(n+1)从级别n获取时间。
图1 NTP协议分层结构图
    子网络中的设备可以扮演多重角,可以做客户机、服务器,也可以做对等机。比如图1中的第二层设备,对于第一层来讲是客户机,对于第三层来讲是服务器,对于第二层其它设备来讲可以是对等机。NTP协议就是通过这种网络层
状结构一层一层延伸下去,为其它设备提供对时服务。
2.2 NTP协议的对时方式
    NTP协议的精确对时主要是在主从工作方式下实现的。NTP算法首先要根据服务器和客户端的往返报文来确定两地时钟的差值和报文在网络中传输的延迟。求出多组差值和延迟值之后,将误差明显很大的去掉,然后根据时钟选择算法选则合适的时延来调整客户端时钟。
    假设客户方A要向服务器方B请求时间服务。A首先要生成一个标准的NTP查询信息包,通过网络发送到B。B收到查询信息包后,根据自己的本地时间,生成一个标准的NTP时间信息包,通过网络发回给A。具体过程如图2所示。
图2 NTP服务器和客户端对时过程
    图2中,T1为客户方发送查询请求时间,T2为服务器收到查询请求的时间,T3为服务器回复时间信息包的时间,T4为客户方收到时间信息包的时间。T1包含在A发到B的查询信息包中,到了B方后,B记下T2和T3的时间,并将其写到回复给A的时间信息包中。当这个包到达A时,A记录下当时的时间T4。这样,A就拥有了4个时间T1、Ttcpip四层模型与osi模型的关系2、T3、T4,通过这几个值计算出A和B之间时间上的差值,用以调整客户方时钟。
    假设A与B之间时差值为,A和B之间用于网络传输的往返延时为,A发送至B的请求信息在网络上传播所消耗的时间为,B发送至A的回复信息在网络上传播所消耗的时间为。则有:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。