2017-07-30 127 views
-1

我目前正在写一个软件解析在那里我想对DNS查询解析到端口53TCP数据包:这些额外字节的含义是什么?

这里是我的问题的数据包的TCP数据包:

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:[email protected] 
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 [email protected]%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报头的大小,并通过TCP报头的开始%

有谁知道哪里这些字节的来源以及他们有什么意义的想法?

在此先感谢您的帮助。

亲切的问候

+0

请参阅RFC 793.“我的TCP开始”没有意义。 – EJP

+0

我认为'%'处TCP数据包的开始有很多意义。如果你看看IP头,目的地址是8.8.8.8这是一个谷歌的DNS服务器。所以拥有目标端口0x0035(53)对于DNS查询有很大的意义。 顺便说一句,我只是注意到,我在谈论一个DNS答案,而这实际上是一个DNS查询 –

+0

它*会*有一定意义,如果这就是你说的,但事实并非如此。这不是我所说的话。 – EJP

回答

1

我实际上是自己找到的。我正在记录这一点,以便任何可能有同样问题的人都知道。

那些额外的字节不是TCP报头的一部分,但实际上是TCP有效负载的一部分,这是DNS。

根据定义DNS的RFC1035,规定TCP封装的DNS数据包必须以2字节为前缀,表示DNS有效负载的大小。

相关问题