数据包字节中的点字符是如何表示的?

How is the dot character represented within the bytes of a packet?

如果我们用 wireshark 捕获一个 DNS 数据包,我们可以在它的字节中看到域名,在这种情况下 tools.kali.org:

十六进制的字节是746f6f6c73046b616c69036f726700,我们可以用ascii table检查74如何对应字符't',6f到'o' 等等。当我们到达点字符时,问题就来了,它应该用 2e 以十六进制表示,但是,在第一次出现时用 04 表示,在第二次出现时用 03 表示。 为什么会发生这种情况,如果它们是不同的值,wireshark 如何知道它必须代表一个点?

点未表示。点是文本表示,用于分隔标签,因此它们不会出现在数据包中。

Each label is represented as a one octet length field followed by that number of octets.

—IETF RFC 1035 DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION

tools 有 5 个八位字节(字节),kali 有 4 个,org 有 3 个。它们只是偶然的序列。