我在C ++中有一个嗅探器,我在那里获得源IP,目标IP,控制位和序列号。我也获得了IP标头,然后是TCP信息。我想获取数据包的内容类型。我需要重新组装数据包吗?或者我可以使用http请求并响应以获取数据包的内容类型。感谢任何帮助,谢谢!
答案 0 :(得分:0)
没有“内容类型”。 TCP将仅为TCP上面的层提供八位字节流来解释。如果您通过TCP嗅探HTTP,则必须汇编数据包,并自行解析HTTP。
您是否考虑过使用Wireshark?
<强>更新强>
通过将TCP数据包组合到八位字节流中,您基本上将TCP数据包的有效负载附加到一个大字节数组中。请确保注意TCP数据包的序列号,因为数据包可能无法到达。
解析HTTP内容要复杂得多。第一个标题始终为ASCII。它们指定内容类型和内容长度。内容类型部分很棘手。东西可以用各种编码技术编码,它们可以用另一种编码技术(zip流,SSL等)封装。
看看Wireshark和WinPcap是如何做到的,这可能是一个好主意。我不确定WinPcap是否包含HTTP的过滤器和解码器(基本上是为您提供HTTP的内容)。无论如何,可能值得查看代码。