浅聊一下NTP
仅了解,没实践过NTP
文章目录
- 浅聊一下NTP
- 1.什么是NTP
- 2.基本原理
- 3.工作模式
- 1.单播服务器/客户端模式
- 2.对等体模式
- 3.广播模式
- 4.组播模式
- 4.NTP数据报文
1.什么是NTP
网络时间协议NTP(Network Time Protocol)是TCP/IP协议族里面的一个应用层协议,用来使客户端和服务器之间进行时钟同步,提供高精准度的时间校正。NTP基于UDP报文进行传输,使用的UDP端口号为123。精准度5ms左右。
2.基本原理
服务器和客户端之间通过二次报文交换,确定主从时间误差,客户端校准本地计算机时间,完成时间同步。
基本过程:客户端发送附带T1时间戳的查询报文给服务器,服务器在该报文上添加到达时刻T2和响应报文发送时刻T3,客户端记录响应报到达时刻T4。
- NTP客户端在T1时刻发送一个NTP请求报文给NTP服务器。
- NTP请求报文到达NTP服务器,此时NTP服务器的时刻为T2。
- NTP服务器处理之后,于T3时刻发出NTP应答报文。该应答报文中携带离开NTP客户端时的时间戳T1、到达NTP服务器时的时间戳T2、离开NTP服务器时的时间戳T3。
- NTP客户端在T4时刻接收到该应答报文。
NTP报文的往返时延Delay = [ ( T4 - T1 ) - ( T3 – T2 ) ]
时间差offset=((T2-T1)+(T3-T4))/2
NTP客户端根据计算得到的offset来调整自己的时钟,实现与NTP服务器的时钟同步。
3.工作模式
1.单播服务器/客户端模式
这种模式下,需要预先知道服务器的IP地址。
客户端能够与NTP服务器的时间同步,NTP服务器无法与客户端的时间同步。
客户端上需要手工指定NTP服务器的地址。客户端向NTP服务器发送NTP时间同步报文。NTP服务器收到报文后会自动工作在服务器模式,并回复应答报文。如果客户端可以从多个时间服务器获取时间同步,则客户端收到应答报文后,进行时钟过滤和选择,并与优选的时钟进行时间同步。
2.对等体模式
这种模式下,主动对等体和被动对等体可以互相同步,等级低(层数大)的对等体向等级高(层数小)的对等体同步。
主动对等体上需要手工指定被动对等体的地址。主动对等体向被动对等体发送NTP时间同步报文。被动对等体收到报文后会自动工作在被动对等体模式,并回复应答报文。如果主动对等体可以从多个时间服务器获取时间同步,则主动对等体收到应答报文后,进行时钟过滤和选择,并与优选的时钟进行时间同步。
3.广播模式
广播客户端能够与广播服务器的时间同步,广播服务器无法与广播客户端的时间同步。
广播服务器周期性地向广播地址255.255.255.255发送NTP时间同步报文。广播客户端侦听来自广播服务器的广播报文,根据接收的广播报文将设备的时间与广播服务器的时间进行同步,广播客户端接收到广播服务器发送的第一个NTP报文后,会与广播服务器进行报文交互,以获得报文的往返时延,为时间同步提供必要的参数。之后,只有广播服务器单方向发送报文。
4.组播模式
组播客户端能够与组播服务器的时间同步,组播服务器无法与组播客户端的时间同步。
组播服务器周期性地向指定的组播地址发送NTP时间同步报文。客户端侦听来自服务器的组播报文,根据接收的组播报文将设备的时间与组播服务器的时间进行同步。
了解详细的工作模式可以参考:NTP工作模式 - S2720, S5700, S6720 V200R013C00 配置指南-设备管理 - 华为 (huawei.com)
4.NTP数据报文
NTP有两种不同类型的报文,一种是时钟同步报文,另一种是控制报文。
控制报文仅用于需要网络管理的场合,它对于时钟同步功能来说并不是必需的。
以下是时间同步报文。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9xNupCWi-1684207858441)(C:\Users\10078\AppData\Roaming\Typora\typora-user-images\image-20230516112008199.png)]
LI:2比特,值为“11”时表示告警状态,时钟未被同步。为其他值时NTP本身不做处理。
VN:3比特,NTP版本号。
Mode:3比特,NTP工作模式。(0未定义,1表示主动对等体模式,2表示被动对等体模式,3表示客户模,4表示服务器模式,5表示广播模式或组播模式,6表示此报文为NTP控制报文,7预留给内部使用)
Stratum:时钟层数,表示时钟精确度。取值1-15,精确度递减。
Poll:发送探测报文的最小间隔时间。
Precision:时钟精度,由多个计算量经一系列算法计算得到(时差、网络拥塞等)。
Root Delay:到主参考时钟的总往返时间。
Root Dispersion:本地时钟相对于主参考时钟的最大误差。
Reference Timestamp:本地时钟最后一次被设定或更新的时间。如果值为0表示本地时钟从未被同步过。
Originate Timestamp:NTP报文离开本地NTP客户端的时间戳(T1)。
Receive Timestamp:NTP报文到达对端时钟源(server)的本地时间(T2)。
Transmit Timestamp:应答报文离开对端时钟源(server)的本地时间(T3)。
Authenticator:验证信息。
(应答报文到达本地的时间为T4,就可以代入上面公式计算)