【发布时间】:2011-02-08 15:58:59
【问题描述】:
问候,
如何使用sharpcap从捕获的数据包中确定数据包是否为http数据包?
如果数据包是HTTP,我们能否确定frpm TCP数据包?
【问题讨论】:
标签: c# http packet-capture sharppcap
问候,
如何使用sharpcap从捕获的数据包中确定数据包是否为http数据包?
如果数据包是HTTP,我们能否确定frpm TCP数据包?
【问题讨论】:
标签: c# http packet-capture sharppcap
根据rfc2616 - Hypertext Transfer Protocol -- HTTP/1.1:
HTTP 消息的版本由消息第一行中的 HTTP-Version 字段指示
因此,您可以检查数据包并扫描消息头中的 HTTP 版本文本和/或 HTTP 协议的其他已知字段。虽然如果一条消息被分成多个数据包,这种方法可能不会 100% 准确,但它可能已经足够好了,至少作为第一次切割。
【讨论】:
我是sharppcap/packet.net的作者/维护者。
我有几个执行tcp 重组和http 解析的类,它们在复杂的网络监控应用程序中使用,以识别和关注http sessions。这些都经过了全面的单元测试和很好的评论。
它们可用于二进制或源代码级别的许可。
编辑:为什么要投反对票?开发代码和测试花费了数百个小时,这是一个已被重用的解决方案。在重新实现相同的功能之前,这当然值得考虑。
【讨论】:
听起来您正在查看单个 TCP 片段。如果它来自消息的开头,它将在第一行有一个 HTTP 版本,但如果你只是从网络中拉出随机数据包并希望能够告诉它们是 HTTP,那么你就不走运了- TCP 片段中没有任何内容表明其中的内容。唯一知道的方法是查看整个对话。
【讨论】: