您的位置:首页 > 编程语言 > PHP开发

NTP协议

2016-07-06 12:04 405 查看
一:NTP的工作原理(UDP端口 123)




NTP工作原理:
上图是NTP的基本工作原理,路由器A和路由器B通过网络连接,它们都有自己独立的系统时钟,要实现各自的系统时钟的自动同步,作如下的假设:

—路由器A和B的系统时钟同步之前,路由器A的时钟设定为10:00:00am,路由器B的时钟设定为11:00:00am。
—以路由器B为NTP时间服务器,即路由器A将使自己的时钟与路由器B的时钟同步。
—数据包在路由器A和B之间单向传输所需要的时间为1秒。

时钟同步的过程:
系统时钟同步的工作过程如下:

—路由器A发送一个NTP消息包给路由器B,该消息包带有它离开路由器A时的时间戳,该时间戳为10:00:00am(T1)。
—当此NTP消息包到达路由器B时,路由器B加上自己的时间戳,该时间戳为11:00:01am(T2)。
—当此NTP消息包离开路由器B时,路由器B再加上自己的时间戳,该时间戳为11:00:02am(T3)。
—当路由器A接收到该响应消息包时,加上一个新的时间戳,该时间戳为10:00:03am(T4)。

NTP的工作模式:
按照实现同步所必须的模式组合,有以下几种常用的模式:

服务器 / 客户模式(server / client)
对等体模式(symmetric active / symmetric passive)
广播模式(broadcast server / broadcast client)
组播模式(multicast server / multicast client)

关于NTP的层数及时间戳:
层数(取值范围 1-15):
层数是NTP中一个比较重要的概念,它基本上可以说是代表了一个时钟的准确度,层数为1的时钟准确度最高,从1到15依次递减.
时间戳:
Reference Timestamp:本地时钟最后一次被设定或校准的时间
Originate Timestamp: 同步请求报文离开发送端时的本地时间
Receive Timestamp:同步请求到达被请求端时的本地时间
Transmit Timestamp:应答报文离开应答者时的本地时间

时钟过滤及时钟选择:
时钟过滤:
时钟过滤是针对本地时钟的同一个对等体而言,用来从这个给定的对等体选择最好的时间样本.
时钟选择:
时钟选择是针对不同的对等体,比如一个client可以配置多个server,还可以配置多个peer,这样它分别向各个server和被动对等体发送时钟同步报文,在接收到应答报文后利用时钟选择算法选择出最好的时钟进行同步.

二:NTP数据报文格式





NTP的实现模型:



—在模型中,一台主机上运行了三个进程,这三个进程共享同一分块的数据文件,每一个对等体使用数据文件中一个特定的分块,三个进程通过报文传送系统互相连接。

发送进程:
—由每个对等体中的独立的计时器控制,收集数据文件中的信息并向它的对等体发送NTP报文;每个NTP报文中包括报文发送时的本地时间戳、上次接收到报文的时间戳和其它确定层次和管理关联所必须的信息。
接收进程:
—接收NTP报文(也可能包括其它协议的报文)和来自于与主机直接相连的Radio Clocks 的信息。

更新过程:
—在接收到NTP报文时或其它时间启动,它处理来自于每一个对等体的偏移数据,并用选择算法选择出最好的对等体。
本地时钟进程:
—根据由更新过程中产生的偏移数据用一定的机制对本地时钟的相位和频率进行调节。

NTP实验:
下面的部分是转载的别人的,在此说声感谢:

一、使用windows2003作为时钟源
ParametersType -> NTP
ConfigAnnounceFlags -> 5
TimeProvidersNtpServerEnabled -> 1
TimeProvidersNtpClientSpecialPollInterval -> 900
ConfigMaxPosPhaseCorrection -> 172800
ConfigMaxNegPhaseCorrection -> 172800
ConfigLocalClockDispersion -> 0 (Previous 10)

Run the commands to restart the time service:
- net stop w32time
- net start w32time

二:思科设备作为客户端配置1、配置命令
clock timezone CST 8
ntp server x.x.x.x
ntp source interface
2 状态检查
show ntp status
show ntp associations detail
3 注意事项如果没有同步,最好先no ntp server 再重新配置ntp server

三、思科设备作为源

clock timezone CST 8
ntp source Loopback0
ntp authenticate
ntp authentication-key 1234 md5 104D000A0618 7
ntp trusted-key 1234
ntp master 3

四、Linux作为时间源
如果你的服务器是Linux,请先用如下指令查看本机是否已安装ntp server
rpm -qa|grep ntp
如无,则安装上此RPM包。
也可安装tar包。
配置NTP server
NTP server的主配置文件为/etc/ntp.conf
现对/etc/ntp.conf的各项进行说明

#设置此服务器同上层服务器做时间同步的IP地址,prefer意味着首选IP地址
server 61.246.176.141 prefer
server 210.59.157.10 prefer
server 202.112.7.150 prefer

server 203.116.5.254 #asia.pool.ntp.org
server 202.162.32.12 #1.asia.pool.ntp.org
server 202.155.248.212 #0.asia.pool.ntp.org
#记录上次我们的NTP server与上层NTP server连线时所花费的时间
driftfile /etc/ntp/drift
#设置默认策略为允许任何主机进行时间同步
restrict default ignore
#设置允许访问此时间服务器的时间服务的IP地址
restrict 127.0.0.1    # 开启內部环路lo
restrict 192.168.0.2  # 主机本身的 IP 也同時开启
restrict 211.101.48.56
restrict 192.168.1.0 mask 255.255.255.0 意味着允许192.168.1.0/24子网内主机可同步

restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap #允许任何主机跟此服务器进行时间同步
#指定阶层编号为5,降低其优先度。
fudge 127.127.1.1 stratum 5
#设置ntp日志的path
statsdir /var/log/ntp/
#设置ntp日志文件
logfile /var/log/ntp/ntp.log
keys /etc/ntp/keys
NTP server的维护
1、 启动
service ntpd start或者ntpd –p /var/log/ntpd.pid或手工指定配置文件的带path的全名
如ntpd –c /etc/ntp/ntp.conf –p /var/log/ntpd.pid
2、 停止
service ntpd stop
3、 ntpq –p 查看本机和上层服务器的时间同步结果
4、 ntptrace 可以用來追踪某台时间服务器的时间对应关系
5、 ntpdate IP 客户端要和NTP server进行时钟同步。
6、 查看ntp日志/var/log/ntp/ntp.log
客户端的配置
LINUX客户端:
echo “10 5 * * * root /usr/sbin/ntpdate 192.168.5.3;/sbin/hwclock -w”>>/etc/crontab
意为每天凌晨的5:10同NTP server进行一次时钟同步,并写入本机BIOS
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: