3
我想在C中使用Berkeley sockets API创建一个简单的SNTP客户端,但我在计算响应消息的调整时间时遇到了问题。我从RFC2030得到这个。确定(S)NTP数据包的目标时间戳?
当接收到服务器的回复,客户机确定一个目的地 时间戳变量作为到达时间根据其在 NTP时间戳格式时钟。下表总结了四个 时间戳。
- 原始时间戳(T1):时间请求由客户端发送
- 接收时间戳(T2):由服务器接收的时间请求
- 传送时间戳(T3):由服务器
- 目的地时间戳发送时间回复(T4):时间客户端收到答复
至于我可以告诉大家,我可以通过利用客户端的时间并增加第t计算调整后的当前时间IME偏移吨它,用时间偏移定义为
t = ((T2 - T1) + (T3 - T4))/2
我需要知道T4做出这样的计算,但它不是包的消息的一部分。我怎样才能获得这个时间戳?
* T1 *实际上嵌入在服务器发回的响应消息中,所以我不需要特殊的技巧来提取它。你可以通过Wireshark在这里将服务器的响应消息的例子分解为:http://i.imgur.com/En4iG.png – Pieter
我可以这样做,但理想情况下我想使用数据包的接收时间戳(如果数据可从系统获得;我不确定),因为它会产生更准确的结果。 – Pieter