数据包捕获!网络时间协议(NTP)讲解 | 您所在的位置:网站首页 › ntpdate源码分析 › 数据包捕获!网络时间协议(NTP)讲解 |
NTP是计算机系统中的时钟同步协议。它属于TCP / IP协议套件的最老部分之一,是基于用户数据报协议(UDP),端口号是123。 对于同步过程,NTP依赖于协调世界时(UTC),该时间是从分层系统中的各个客户端和服务器获得的。 NTP如何工作? NTP的四种工作模式,我们主要讲服务器 / 客户模式(server / client) 这种模式只需要在客户端配置,服务器端除了配置NTP 主时钟外,不需要进行其他专门配置。并且,只能是客户端同步到服务器,服务器不会同步到客户端。 当NTP客户端启动与NTP服务器的时间请求交换。交换的结果是客户端能够计算链路延迟及其本地偏移,并调整其本地时钟以匹配服务器计算机上的时钟。 客户端向服务器发送时钟同步报文,报文中的Mode字段设置为3(客户模式)。 服务器端收到报文后会自动工作在服务器模式,并发送应答报文,报文中的Mode字段设置为4(服务器模式)。 客户端收到应答报文后,进行时钟过滤和选择,并同步到优选的服务器。 NTPv4报文格式 NTPv4在NTPv3上进行了改进,并纠正了某些错误。NTP时间戳定义已得到扩展,以鼓励使用浮动双精度数据类型。这导致时间分辨率优于1纳秒,而频率分辨率小于1纳秒/秒。 下面是报文格式: 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服务运行的整个生命周期中都在进行;它以“轮询”间隔查询服务器。
编译结果: NTP使用协调世界时(UTC),以极其精确同步计算机时钟时间,在小型网络中提供更高的精度-在一个到一个单一的毫秒局域网和几十通过互联网毫秒内。NTP不考虑时区,而是依靠主机来执行此类计算。 总结 在实际开发中,网络中准确的时间很重要。即使是几分之一秒的差异也会引起问题。例如,分布式过程取决于协调时间,以确保遵循正确的顺序。 关于数据包捕获,网络时间协议(NTP)了解,请参考官方文档。剖析NTP数据包第3版和第4版可参考(RFC5905, RFC2030, RFC1769, RFC1361, RFC1305)等。 欢迎关注微信公众号【程序猿编码】需要完整NTP源码和报文的可以加我微信号(17865354792) |
CopyRight 2018-2019 实验室设备网 版权所有 |