3

我正在尝试使用 Berkeley 套接字 API 在 C 中创建一个简单的 SNTP 客户端,但是我无法从响应消息中计算调整后的时间。我从RFC2030得到这个。

当收到服务器回复时,客户端根据其NTP时间戳格式的时钟确定一个Destination Timestamp变量作为到达时间。下表总结了四个时间戳。

  • Originate Timestamp (T1):客户端发送的时间请求
  • Receive Timestamp (T2):服务器接收到的时间请求
  • Transmit Timestamp (T3):服务器发送的时间回复
  • 目标时间戳(T4):客户端收到的时间回复

据我所知,我可以通过获取客户的时间并将时间偏移量t添加到它来计算调整后的当前时间,时间偏移量定义为

t = ((T2 - T1) + (T3 - T4)) / 2

我需要知道T4才能进行此计算,但这不是数据包消息的一部分。我怎样才能获得这个时间戳?

4

1 回答 1

0

仅从您发布的这一点来看,我相信您应该能够以与获得 T1 相同的方式获得 T4(又名,它们都是根据本地计算机处理请求的特定阶段时的时间)。

Originate Timestamp (T1):客户端发送的时间请求
Destination Timestamp (T4):客户端收到的时间回复

哎呀,我的错误假设。

在收到响应数据包后立即使用C 的 gettimeofday 函数创建自己的时间戳就足够了吗?

于 2011-10-06T13:48:47.900 回答