我正在尝试使用 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才能进行此计算,但这不是数据包消息的一部分。我怎样才能获得这个时间戳?