数据包捕获!网络时间协议(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纳秒/秒。 下面是报文格式:
在这里插入图片描述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)

  • 8
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: IP数据包捕获分析程序是一种网络工具,用于截获和分析通过网络传输的IP数据包。它可以在网络通信过程中实时捕获数据包,提供分析数据包内容和网络性能的功能。 首先,IP数据包捕获分析程序可以用于网络故障排查。通过捕获数据包,我们可以分析网络连接是否存在延迟、丢包、冲突等问题,进而定位故障原因。例如,我们可以检查数据包的源IP地址和目标IP地址,确定网络中的通信路径,并分析各路径上的延迟和丢包情况。 其次,IP数据包捕获分析程序也可以用于网络安全监测。通过捕获传输的数据包,我们可以对网络流量进行实时检测和分析,以发现可能的网络威胁或攻击行为。例如,我们可以分析数据包的源IP地址、目标IP地址以及传输的协议和端口,发现潜在的恶意流量,从而加强网络防御和安全策略。 此外,IP数据包捕获分析程序还可用于网络性能优化。通过分析数据包网络延迟、丢包率、吞吐量等指标,我们可以评估网络性能,并发现网络瓶颈和改进的空间。例如,我们可以通过分析数据包的传输时延,确定网络中的瓶颈节点,并采取相应的措施提升网络带宽和优化路由选择。 综上所述,IP数据包捕获分析程序是一种重要的网络工具,它通过截获和分析数据包,帮助我们进行网络故障排查、网络安全监测和网络性能优化。在网络管理和维护中,它发挥着至关重要的作用。 ### 回答2: IP数据包捕获分析程序是一种用于捕获和分析网络数据包的工具。它可以在计算机网络中监控数据包的流动,并提供有关这些数据包的详细信息。 该程序通常由几个主要组件组成,包括捕获引擎、解析器和分析器。捕获引擎用于截取网络流量,并将捕获数据包传递给解析器。解析器将数据包中的原始二进制数据转换成易于理解的格式,并提取其中的关键信息,如源IP地址、目标IP地址、协议类型和数据大小等。分析器通过对这些信息进行统计和分析,揭示网络中的活动模式和问题。 IP数据包捕获分析程序的应用非常广泛。首先,它用于网络故障排除。管理员可以使用该程序捕获和分析网络流量,以查找导致网络故障的原因,并采取相应的措施进行修复。其次,它可以用于网络性能优化。通过分析数据包,并检测潜在的性能瓶颈,管理员可以对网络进行优化,以提高性能和响应速度。此外,该程序还可用于网络安全监控。它可以帮助管理员发现潜在的入侵行为、恶意软件传播和数据泄露等安全问题,并采取相应的防护措施。 总而言之,IP数据包捕获分析程序是一种强大的工具,用于监控、分析和解决计算机网络中的各种问题。它对于网络故障排除、性能优化和安全监控都起着重要的作用。 ### 回答3: IP数据包捕获分析程序是一种用来捕获和分析网络传输中的IP数据包的软件工具。它可以帮助用户监测和解决网络问题,以及分析网络流量和数据包传输状况。 首先,IP数据包捕获分析程序可以帮助用户捕获网络中的IP数据包。它通过监听网络接口,将经过该接口的数据包即时截获,并存储在本地设备中进行分析。通过捕获IP数据包,用户可以了解到网络流量的情况,包括源IP地址、目标IP地址、端口号、协议类型等。 其次,IP数据包捕获分析程序可以对捕获到的数据包进行分析。它可以根据用户设定的过滤条件,对捕获到的数据包进行筛选和过滤,以提供所需的信息。用户可以根据需要进行数据包的统计、排序和分类,以便更好地理解网络流量特点和数据传输情况。 此外,IP数据包捕获分析程序还可以帮助用户发现网络问题和故障。通过对捕获到的数据包进行深入分析,用户可以追踪和识别网络中存在的问题,如延迟、丢包、碰撞等。这对于网络管理员和技术人员来说尤为重要,因为它能帮助他们快速定位和解决网络故障。 总之,IP数据包捕获分析程序是一种功能强大的工具,它可以帮助用户捕获和分析网络中的IP数据包,了解网络流量和数据传输状况,并辅助用户解决网络问题和故障。对于网络管理和网络安全来说,它是一个不可或缺的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值