【发布时间】:2015-08-19 08:27:34
【问题描述】:
我一直在从事一个项目,该项目涉及在问题(其中 2 个)中发送带有信息(不是实际域)的 DNS 请求。我一直在用wireshark 跟踪数据包。
这是创建的数据包的tcp 转储。
00000000 00 02 01 00 00 02 00 00 00 00 00 00 01 32 03 65
00000010 6e 64 03 63 6f 6d 00 00 01 00 01 01 32 04 73 61
00000020 76 65 03 63 6f 6d 00 00 01 00 01
........ .....2.e
nd.com.. ....2.sa
ve.com.. ...
i.d. 和 qdcount 应该是 2,需要递归,并且显示的域是正确的。 Wireshark 表示它是格式错误的 DNS 数据包。知道数据包有什么问题吗?
【问题讨论】:
-
这是通过 UDP 还是 TCP 发送的?如果它是通过 TCP 发送的,你需要在数据包前面加上一个 2 字节的长度字段,给出 DNS 数据包的长度;请参阅RFC 1035 中的第 4.2.2 节“TCP 使用”。
-
它应该通过UDP发送;但是,对于 UDP 和 TCP 之间的区别,我仍然很模糊。据我了解,当 DNS 数据包太大(>512 字节)时使用 TCP。
-
成功了,谢谢!