数据包捕获!网络时间协议(NTP)讲解

您所在的位置:网站首页 ntp服务器状态 数据包捕获!网络时间协议(NTP)讲解

数据包捕获!网络时间协议(NTP)讲解

2023-10-21 12:47| 来源: 网络整理| 查看: 265

NTP是计算机系统中的时钟同步协议。它属于TCP / IP协议套件的最老部分之一,是基于用户数据报协议(UDP),端口号是123。

对于同步过程,NTP依赖于协调世界时(UTC),该时间是从分层系统中的各个客户端和服务器获得的。

NTP如何工作?

NTP的四种工作模式,我们主要讲服务器 / 客户模式(server / client) 这种模式只需要在客户端配置,服务器端除了配置NTP 主时钟外,不需要进行其他专门配置。并且,只能是客户端同步到服务器,服务器不会同步到客户端。

在这里插入图片描述

当NTP客户端启动与NTP服务器的时间请求交换。交换的结果是客户端能够计算链路延迟及其本地偏移,并调整其本地时钟以匹配服务器计算机上的时钟。

客户端向服务器发送时钟同步报文,报文中的Mode字段设置为3(客户模式)。

在这里插入图片描述

服务器端收到报文后会自动工作在服务器模式,并发送应答报文,报文中的Mode字段设置为4(服务器模式)。

在这里插入图片描述

客户端收到应答报文后,进行时钟过滤和选择,并同步到优选的服务器。

NTPv4报文格式

NTPv4在NTPv3上进行了改进,并纠正了某些错误。NTP时间戳定义已得到扩展,以鼓励使用浮动双精度数据类型。这导致时间分辨率优于1纳秒,而频率分辨率小于1纳秒/秒。 下面是报文格式: 在这里插入图片描述NTP消息的标头字段如下:

LI字段值如下

0: 无leap秒调整 1: 一天的最后一分钟为61秒 2: 一天的最后一分钟为59秒 3:时钟未同步

VN:NTP版本号 (3 bits) (当前版本为4),

模式(Mode)字段的值如下:

0:保留 1:对称主动 2:对称被动 3:客户端 4:服务器 5:广播 6:NTP控制消息 7:保留供私人使用

Stratum:时间源的层级别(8bits)Stratum字段的值如下

0:未指定或无效 1:主服务器 2 – 15:辅助服务器 16:未同步 17 –255:保留

Poll:轮询间隔(8位有符号整数)连续NTP消息之间的最大间隔的2值,以秒为单位。

Precision: 时钟精度(8位有符号整数)。

Root Delay:本地到主参考时钟源的往返时间。

Root Dispersion:系统时钟相对于主参考时钟的最大误差。

Reference Identifier:参考时钟标识符,占用8个bits,用来标识特殊的参考源。

Reference Timestamp:该字段是上次设置或纠正系统时钟的时间,格式为64位时间戳。

Originate Timestamp:该值是请求离开服务器客户端的时间,采用64位时间戳格式。

Receive Timestamp: 该值是客户端请求以64位时间戳格式到达服务器的时间。

Transmit Timestamp:此值是服务器回复离开服务器的时间,采用64位时间戳格式。

NTPv4报文抓包:

在pcap中, 显示了客户端到服务器的基本通信。NTP客户端询问服务器时间。在服务器的答案中,您可以看到参考时钟(94.198.159.10)。

通常,NTP通信在ntp服务运行的整个生命周期中都在进行;它以“轮询”间隔查询服务器。

在这里插入图片描述 NTPv4客户/服务模式实例

int main(int argc, char* argv[]) { char errbuf[1024]; pcap_t *desc = 0; char *filename = argv[1]; if (argc != 2) { printf("usage: ./dissect_ntp [pcap file]\n"); return -1; } printf("ProcessFile: process file: %s\n", filename); if ((desc = pcap_open_offline(filename, errbuf)) == NULL) { printf("pcap_open_offline: %s error!\n", filename); return -1; } //pcap_buff2user_loop(desc, 0, (pcap_handler)pcap_hand, 0); pcap_loop(desc, pkt_number, (pcap_handler)ace_pcap_hand, NULL); pcap_close(desc); return 0; }

编译结果: 在这里插入图片描述

NTP使用协调世界时(UTC),以极其精确同步计算机时钟时间,在小型网络中提供更高的精度-在一个到一个单一的毫秒局域网和几十通过互联网毫秒内。NTP不考虑时区,而是依靠主机来执行此类计算。

总结

在实际开发中,网络中准确的时间很重要。即使是几分之一秒的差异也会引起问题。例如,分布式过程取决于协调时间,以确保遵循正确的顺序。

关于数据包捕获,网络时间协议(NTP)了解,请参考官方文档。剖析NTP数据包第3版和第4版可参考(RFC5905, RFC2030, RFC1769, RFC1361, RFC1305)等。

欢迎关注微信公众号【程序猿编码】需要完整NTP源码和报文的可以加我微信号(17865354792)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3