环境
- ubuntu 18.04 64bit
- python3
- ntp 4.2.8p11
NTP简介
网络时间协议( Network Time Protocol
,简称 NTP
)是在数据网络潜伏时间可变的计算机系统之间通过分组交换进行时钟同步的一个网络协议。自1985年以来,NTP
是目前仍在使用的最古老的互联网协议之一。NTP
由特拉华大学的 David L. Mills
设计。
NTP
意图将所有参与计算机的协调世界时( UTC
)时间同步到几毫秒的误差内。它使用 Marzullo
算法的修改版来选择准确的时间服务器,其设计旨在减轻可变网络延迟造成的影响。NTP
通常可以在公共互联网保持几十毫秒的误差,并且在理想的局域网环境中可以实现超过1毫秒的精度。不对称路由和拥塞控制可能导致100毫秒(或更高)的错误。
该协议通常描述为一种主从式架构,但它也可以用在点对点网络中,对等体双方可将另一端认定为潜在的时间源。发送和接收时间戳采用用户数据报协议( UDP
)的通信端口123实现。这也可以使用广播或多播,其中的客户端在最初的往返校准交换后被动地监听时间更新。
当前协议为版本4( NTPv4
),这是一个 RFC 5905
文档中的建议标准。它向下兼容指定于 RFC 1305
的版本 v3
。
安装ntpd
到站点http://ntp.org/downloads.html下载最新版的 ntp
服务端的源码包
# 解压
tar xvf ntp-4.2.8p11.tar.gz
cd ntp-4.2.8p11
# 配置
./configure
# 编译
make
# 安装
sudo make install
启动服务
sudo ntpd
使用python进行时间同步
首先安装 ntplib
依赖库
sudo pip install ntplib
然后书写代码,如下
# -*- coding:utf-8 -*-
import datetime
import ntplib
client = ntplib.NTPClient()
# 向本地的ntp server发送请求,如果是其它主机,就填写对应的ip地址
response = client.request('127.0.0.1')
print(datetime.datetime.fromtimestamp(response.tx_time))
执行上述代码,程序输出
2020-09-28 10:29:23.110938