我正在处理 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Run Code Online (Sandbox Code Playgroud)
将数据的第一个字节设置为0x1B或00 011 011意味着
LI = 0 (Leap indicator)
VN = 3 (Version number)
Mode = 3 (Mode, mode 3 is client mode)
Run Code Online (Sandbox Code Playgroud)
您也可以使用更新的版本 ( VN = 4)。这将需要将第一个标头字节设置为
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 |
+-------+--------------------------+
Run Code Online (Sandbox Code Playgroud)
指定Mode = 3将消息表示为客户端请求消息。
将这样的数据包发送到 NTP 服务器的 123 端口将强制服务器发送回复包。
| 归档时间: |
|
| 查看次数: |
1319 次 |
| 最近记录: |