我目前正在编写解析TCP数据包的软件,我想将DNS查询解析到端口53.
这是我有问题的数据包:
00000 c6 f8 03 54 44 2d d0 7e 35 b0 60 7b 08 00 45 00 ...TD-.~5.`{..E.
00010 00 4f 3a ea 40 00 80 06 ee 8f c0 a8 00 77 08 08 .O:.@........w..
00020 08 08 f5 02 00 35 c9 8b a5 db 63 ee fd 0b 50 18 .....5....c...P.
% ^
00030 00 40 77 53 00 00 00 25 34 b6 01 00 00 01 00 00 .@wS...%4.......
** **
00040 00 00 00 00 03 77 61 6e 04 71 6c 74 79 07 66 69 .....wan.qlty.fi
00050 6e 61 72 65 61 02 63 68 00 00 10 00 01 narea.ch.....
我遇到的问题是TCP标头和DNS查询之间有2个额外的字节。额外的字节由**
标记,我还通过^
突出显示TCP标头大小,并通过%
是否有人知道这些字节来自何处以及它们的含义是什么?
提前感谢您的帮助。
亲切的问候
答案 0 :(得分:1)
我实际上是自己找到的。我记录了这一点,以便任何可能有相同问题的人都知道。
这些额外字节不是TCP标头的一部分,但实际上是TCP有效负载的一部分,即DNS。
从定义DNS的RFC1035中,规定TCP封装的DNS数据包必须以2个字节为前缀,表示DNS有效负载的大小。