确定HTTP数据包

时间:2010-04-16 02:45:27

标签: c# http packet-capture sharppcap

问候语,

如果数据包是否为http数据包,如何使用sharppcap从捕获的数据包中确定?

如果数据包是HTTP,我们可以确定frpm TCP数据包吗?

3 个答案:

答案 0 :(得分:3)

根据rfc2616 - Hypertext Transfer Protocol -- HTTP/1.1

  

HTTP消息的版本由消息第一行中的HTTP-Version字段指示

因此,您可以检查数据包并扫描消息标头中的HTTP版本文本和/或HTTP协议的其他已知字段。虽然如果将消息分解为多个数据包,这种方法可能不是100%准确,但它可能已经足够好了,至少作为第一次切割。

答案 1 :(得分:2)

我是sharppcap/packet.net的作者/维护者。

我有一些类执行tcp重组和http解析,这些类在复杂的网络监控应用中用于识别和跟踪http sessions。这些都经过了完整的单元测试和评论。

它们可以在二进制或源级别进行许可。

编辑:为什么要投票呢?开发代码和测试花费了数百小时,这是一个已被重用的解决方案。在重新实现相同的功能之前,这当然值得考虑。

答案 2 :(得分:1)

听起来你正在看一个单独的TCP片段。如果它来自消息的开头,它将在第一行中有一个HTTP版本,但是如果你只是从网络中提取随机数据包并希望能够告诉他们是HTTP你运气不好 - TCP片段中没有任何内容指示其中的内容。知道的唯一方法是查看整个对话。