NTP网络校时协议

 

网络时间协议(network time protocol,简称ntp)是用来在整个网络内发布精确时间的tcp/ip 协议,其本身的传输基于udp。Ntp协议基本原理如下:   
上图所示的是ntp 协议基本工作原理,路由器gwa 和gwb 通过网络相连,它们都有自己独立的系统时钟,    要实现各自系统时钟的自动同步,作如下假设:
1 在gwa 和gwb 的系统时钟同步之前, gwa 的时钟设定为10:00:00am,gwb 的时钟设定为11:00:00am。
2 以gwb 为ntp 时间服务器,即gwa 将使自己的时钟与gwb 的时钟同步。
3 数据包在gwa 和gwb 之间单向传输所需要的时间为1 秒。
    系统时钟同步的工作过程如下:
1 gwa 发送一个ntp 消息包给gwb,该消息包带有它离开gwa 时的时间戳,该时间戳为10:00:00am(t1)。
2 当此ntp 消息包到达gwb 时,gwb 加上自己的时间戳,该时间戳为11:00:01am(t2)。
3 当此ntp 消息包离开gwb 时,gwb 再加上自己的时间戳,该时间戳为11:00:02am(t3)。
4 当gwa 接收到该响应消息包时,加上一个新的时间戳,该时间戳为10:00:03am(t4)。
至此,gwa 已经拥有足够的信息,来计算两个重要的参数:
5 ntp 消息来回一个周期的时延delay=(t4-t1)-(t3-t2)。
6 gwa 相对gwb 的时间差offset=((t2-t1)+(t3-t4))/2。
这样,gwa 就能够根据这些信息,来设定自己的时钟,使之与gwb 的时钟同步。这只是ntp 工作原理的一个粗略描述,在rfc1305 规范中,ntp 使用复杂的算法,来确保时钟同步的精确性。
根据网络结构以及路由器在网络中的位置,ntp 有六种工作模式,其中前两种模式也称单播模式。
1 设置远程服务器为本地时间服务器,此时本地路由器工作在client 模式。在这种工作模式下,只能是本地客户机同步到远程服务器,而远程服务器不会同步到本地客户机;
2 设置远程服务器作为本地路由器的对等体,本地运行在symmetric active 模式(即主动模式)在。这种配置下,本地服务器能同步到远程服务器(被动模式),远程服务器也能同步到本地服务器。如果双方都有参考时钟,以层数小的为准;
3 设置本地路由器的一个接口发送ntp 的广播消息包,此时,本地路由器工作在广播服务器模式;
4 设置本地路由器的一个接口接收ntp 的广播信息包,此时,本地路由器工作在广播客户模式;
5 设置本地路由器的一个接口发送ntp 组播消息包,本地路由器运行在组播服务器模式;
6 设置本地路由器的一个接口接收ntp 组播消息包,本地路由器运行在组播客户模式。

 

Network Time Protocol(NTP)协议是用来使计算机时间同步化 的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等)做同步化,它可以提供高精确度的时间校正(LAN上与标准时间差小于1毫秒,WAN上几十毫秒),且可用加密确认的 方式来防止协议攻击。

     NTP提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。 NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。这样就有了准确而可靠的时间源。时间是按NTP服务器的等级传 播。按照距离外部UTC 源的远近将所有服务器归入不同的Stratun(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取 时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑上形成阶梯式的架构并 相互连接,而Stratum-1的时间服务器是整个系统的基础。

     进行网络协议实现时最重要的是了解协议数据格式。NTP数据包有48个字节,其中NTP包头16字节,时间戳32个字节。其协议格式如图10.9所示。

 

 

 

图10.9 NTP协议数据格式

     其协议字段的含义如下所示。

      LI:跳跃指示器,警告在当月最后一天的最终时刻插入的迫近闺秒(闺秒)。

      VN:版本号。

   Mode:工作模式。该字段包括以下值:0-预留;1-对称行为;3-客户机;4-服务器;5-广播;6-NTP控制信息。NTP协议具有3种工作模式,分别为主/被动对称模式、客户/服务器模式、广播模式。在主/被动对称模式中,有一对一的连接,双方均可同步对方或被对方同步,先发出申请建立连接的一方工作在主动模式下,另一方工作在被动模式下; 客户/服务器模 式与主/被动模式基本相同,惟一区别在于客户方可被服务器同步,但服务器不能被客户同步;在广播模式中,有一对多的连接,服务器不论客户工作 在何种模式下,都会主动发出时间信息,客户根据此信息调整自己的时间。

     Stratum:对本地时钟级别的整体识别。

     Poll:有符号整数表示连续信息间的最大间隔。

     Precision:有符号整数表示本地时钟精确度。

     Root Delay:表示到达主参考源的一次往复的总延迟,它是有15~16位小数部分的符号定点小 数。

     Root Dispersion:表示一次到达主参考源的标准误差,它是有15~16位小数部分的无符号 定点小数。

     Reference Identifier:识别特殊参考源。

     Originate Timestamp:这是向服务器请求分离客户机的时间,采用64位时标格式。

     Receive Timestamp:这是向服务器请求到达客户机的时间,采用64位时标格式。

     Transmit Timestamp:这是向客户机答复分离服务器的时间,采用64位时标格式。

     Authenticator(Optional):当实现了NTP认证模式时,主要标识符和信息数字域就 包括已定义的信息认证代码(MAC)信息。

     由于NTP协议中涉及比较多的时间相关的操作,为了简化实现过程,在本实验中,仅要求实现NTP协议客户端部分的网络通信模块,也就是构造NTP协议字段 进行发送和接收,最后与时间相关的操作不需进行处理。NTP协议是作为OSI参考模型的高层协议比较适合采用UDP传输协议进行数据传输,专用端口号为 123。在实验中,以国家授时中心服务器(IP地址为 202.72.145.44)作为NTP(网络时间)服务器

你可能感兴趣的:(网络编程)