2

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

我将使用sharppcappacketdotnet

在这里找到了很好的样本:

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

和这里:

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

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

  1. 发送http包之前我应该​​做什么?做一个tcp握手还是什么?您可以通过发送 http 数据包发布任何有关使用post动词 调用 url的示例吗?

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

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

4

2 回答 2

2

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

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

有许多特殊情况是部分可能的(X-Forwarded-For 和 HTTP 请求中的类似标头),但这必须根据每个应用程序进行研究。

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

于 2012-12-24T08:17:34.240 回答
1

您必须先与服务器建立 tcp 连接,然后才能发送将接收的 http 数据包。从 ip 级别构建您可能需要进行此类测试的工作需要做一些工作。

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

于 2012-12-18T21:07:09.603 回答