对于一个项目,我必须阅读 mDNS 响应。
我阅读了 IETF 文档(和 tcpguide,其中包含很多架构),我认为我尊重它们,但我有一个问题。
我经常尝试读取我的流,但流对于我要读取的数据来说太短了。
我有几个案例,我想我错过了一些东西。
一个具体的例子:我收到了这个(我做了一个小的“响应解析器”来查看我收到的内容并“解码”它:
0000000000000000 0 ID
1 True IsResponse
0000 0 Opcode
1 True Authoritative
0 False Truncation
0 False Recursion desired
0 False Recursion available
000 000 Zero
0000 0 RCode
0000000000000000 0 Question count
0000000000000100 4 Answers count
0000000000000000 0 Authority count
0000000000000000 0 Additional count
Answers:
00001001 9 Size
01011111 _
01110011 s
01100101 e
01110010 r
01110110 v
01101001 i
01100011 c
01100101 e
01110011 s
00000111 7 Size
01011111 _
01100100 d
01101110 n
01110011 s
00101101 -
01110011 s
01100100 d
00000100 4 Size
01011111 _
01110101 u
01100100 d
01110000 p
00000101 5 Size
01101100 l
01101111 o
01100011 c
01100001 a
01101100 l
00000000 0 Size
00000000 0 Size
00001100 12 Size
00000000
00000001 ?
00000000
00000000
00011100 ?
00100000
00000000
00010111 ?
00001111 ¤
01011111 _
01110000 p
01100100 d
01101100 108 Size
00101101 -
01100100 d
01100001 a
01110100 t
01100001 a
01110011 s
01110100 t
01110010 r
01100101 e
01100001 a
01101101 m
00000100 ?
01011111 _
01110100 t
01100011 c
01110000 p
11000000 ?
00100011 #
11000000 ?
00001100 ?
00000000
00001100 ?
00000000
00000001 ?
00000000
00000000
00011100 ?
00100000
00000000
00001011 ?
00001000
01011111 _
01110000 p
01110010 r
01101001 i
01101110 n
01110100 t
01100101 e
01110010 r
11000000 ?
01000100 D
11000000 ?
00001100 ?
00000000
00001100 ?
00000000
00000001 ?
00000000
00000000
00011100 ?
00100000
00000000
00000111
00000100 ?
01011111 _
01101001 i
01110000 p
01110000 p
11000000 ?
01000100 D
11000000 ?
00001100 ?
00000000
00001100 ?
00000000
00000001 ?
00000000
00000000
00011100 ?
00100000
00000000
00001000
00000101 ?
01011111 _
01101000 h
01110100 t
01110100 t
01110000 p
11000000 ?
01000100 D
out of range out of range
out of range out of range
[...]
我不明白为什么我这里没有足够的数据。截断位设置为假,所以我应该在这个数据包中包含所有数据,01101100
实际上意味着大小为 108,而我这里只有 ~75 个字节。那么我做错了什么?这个问题似乎主要发生在包含答案的数据包中。