使用sharppcap或packetdotnet发送http post数据包

时间:2012-12-18 16:03:27

标签: c# .net packet sharppcap packet.net

出于测试原因,我正在尝试生成具有不同源IP地址的http数据包,并将其发布到目的地。

我将使用 sharppcap packetdotnet

在这里找到好样品:

http://www.tamirgal.com/blog/post/SendTcpSynExamplecs.aspx

在这里:

http://pcapdotnet.codeplex.com/wikipage?title=Pcap.Net%20Tutorial%20-%20Sending%20Packets

但我是这方面的菜鸟,我需要帮助:

  1. 在发送http数据包之前,我该怎么做?做一个 tcp 握手还是什么?你可以发布任何关于呼叫a的样本吗? 网址通过发送http数据包 使用发布动词?

  2. 对于做一些压力测试我需要更改源IP地址和目标响应对我来说并不重要。所以改变了     源地址 足够?那么校验和其他属性呢?

  3. 任何示例或链接都会有所帮助。

2 个答案:

答案 0 :(得分:2)

正如你所描述的那样做是不可能的,正如克里斯摩根在他的回答中指出的那样。原因如下:

  • HTTP协议(出于实际目的 - 始终)通过TCP连接工作
  • 在实际数据开始流动之前,TCP连接必须执行握手(3个数据包相互交换 - 客户端 - >服务器 - >客户端 - >服务器)
  • 由于握手,无法替换HTTP源IP地址 - 为了建立连接,您需要提供有效的IP(或者您不会收到第二个数据包,也无法发送第三个数据包包)
  • 源IP地址将取自已建立的连接属性,因此在建立连接后也无法伪造它。

有一些特殊情况的例子,其中部分可能(HTTP请求中的X-Forwarded-For和类似标题),但必须根据每个应用程序进行研究。

因此,简而言之:您要求的是不可能的(除了一些非常特殊的情况),您可以阅读有关在this Wiki article建立的TCP连接的更多信息

答案 1 :(得分:1)

在您能够发送将要接收的http数据包之前,您必须与服务器建立TCP连接。从ip级别构建你可能需要进行这种测试的一些工作。

虽然有些工具可以为您生成http会话。它们通常也可以配置为打开特定数量的同时http会话,如果这是您在提及更改源IP时尝试执行的操作。像http://code.google.com/p/httperf/http://httpd.apache.org/docs/2.2/programs/ab.html之类的东西可能会这样做。