更新时间:2023-01-17 10:47:08
"\x1b' + 47 * '\0"
表示一个 48 字节的数据字段.0x1B
后跟 47 次0代码>.48 字节是 NTP UDP 数据包的大小.第一个字节 (0x1B) 指定 LI
、VN
和 Mode
.
"\x1b' + 47 * '\0"
represents a data field of 48 bytes. 0x1B
followed by 47 times
0
. 48 bytes is the size of an NTP UDP packet. The first byte (0x1B) specifies LI
, VN
, and Mode
.
RFC 5905 NTP 规范(7.3. 包头变量) 指定消息标题如下:
RFC 5905 NTP Specification (7.3. Packet Header Variables) specifies the message header as follows:
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
表示
Setting the first byte of the data to 0x1B
or 00 011 011
means
LI = 0 (Leap indicator)
VN = 3 (Version number)
Mode = 3 (Mode, mode 3 is client mode)
您也可以使用更新的版本(VN = 4
).这将需要将第一个标头字节设置为0x23 (00 100 011)
.
You may also use the more recent version (VN = 4
). This would require the first header byte to be set to
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
表示该消息为客户端请求消息.
Specifying Mode = 3
indicates the message as a client request message.
将这样的数据包发送到 NTP 服务器的 123 端口将强制服务器发送回复包.
Sending such a packet to port 123 of an NTP server will force the server to send a reply package.