我正在开发NTP客户端。一些其他线程表明包含“\ x1b'+ 47 *'\ 0”的消息被发送到NTP服务器,但这些线程都没有解释此消息的实际含义或发送原因。我已经尝试过查看NTP RFC,但我无法在那里找到任何有关它的信息。
答案 0 :(得分:3)
"\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
)。这将需要将第一个头字节设置为
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将强制服务器发送回复包。