出于测试原因,我尝试生成具有不同源 IP 地址的 http 数据包并将其发布到目的地。
我将使用sharppcap或packetdotnet。
在这里找到了很好的样本:
http://www.tamirgal.com/blog/post/SendTcpSynExamplecs.aspx
这里:
http://pcapdotnet.codeplex.com/wikipage?title=Pcap.Net%20Tutorial%20-%20Sending%20Packets
但我是这方面的菜鸟,我需要帮助:
在发送http数据包之前我应该做什么?执行 TCP 握手还是什么?您可以发布任何有关调用的示例吗 url使用post动词通过发送http数据包?
为了进行一些压力测试,我需要更改源 IP 地址,而目标响应对我来说并不重要。所以改变
源地址是否足够? 校验和和其他属性怎么样?
任何示例或链接都会有帮助。
最佳答案
正如克里斯·摩根在回答中指出的那样,按照您所描述的方式进行操作是不可能的。原因如下:
- HTTP 协议(protocol)(出于实用目的 - 始终)通过 TCP 连接运行
- 在实际数据开始流动之前,TCP 连接必须执行握手(3 数据包相互交换 - 客户端 -> 服务器 -> 客户端 -> 服务器)
- 由于握手,不可能替换 HTTP 源 IP 地址 - 为了建立连接,您需要提供有效的 IP(否则您将不会收到第二个数据包,也无法发送所需的第三个数据包)数据包)
- 源 IP 地址将从已建立的连接属性中获取,因此在建立连接后也无法伪造它。
在许多特殊情况下,这是部分可能的(X-Forwarded-For 和 HTTP 请求中的类似 header ),但这必须针对每个应用程序进行研究。
所以,简而言之:您所请求的内容是不可能的(除了一些非常特殊的情况),您可以阅读更多有关 this Wiki article 上建立的 TCP 连接的信息。
关于c# - 使用 Sharppcap 或 packetdotnet 发送 http post 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13936882/