我正在处理 NTP 客户端。其他一些线程表明包含 "\x1b' + 47 * '\0"的消息被发送到 NTP 服务器,但这些线程都没有解释该消息的实际含义或发送的原因。我曾尝试查看 NTP RFC,但我也无法在其中找到任何有关它的信息。
最佳答案
"\x1b' + 47 * '\0"
表示一个 48 字节的数据字段。 0x1B
其次是 47 次0
. 48 字节是 NTP UDP 数据包的大小。第一个字节 (0x1B) 指定 LI
, VN
, 和 Mode
.
RFC 5905 NTP Specification (7.3. Packet Header Variables)指定消息头如下:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|LI | VN |Mode | Stratum | Poll | Precision |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
将数据的第一个字节设置为 0x1B
或 00 011 011
方法LI = 0 (Leap indicator)
VN = 3 (Version number)
Mode = 3 (Mode, mode 3 is client mode)
您也可以使用更新的版本 ( VN = 4
)。这将需要将第一个 header 字节设置为0x23 (00 100 011)
.模式定义为
+-------+--------------------------+
| Value | Meaning |
+-------+--------------------------+
| 0 | reserved |
| 1 | symmetric active |
| 2 | symmetric passive |
| 3 | client |
| 4 | server |
| 5 | broadcast |
| 6 | NTP control message |
| 7 | reserved for private use |
+-------+--------------------------+
指定 Mode = 3
将该消息指示为客户端请求消息。将这样的数据包发送到 NTP 服务器的 123 端口将强制服务器发送回复包。
关于networking - 发送到 NTP 服务器的 '\x1b' + 47 * '\0' 消息是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26937857/