2013-01-16 27 views
2

我想构建一个包括客户端和Web服务器的测试平台,在那里我可以向Web服务器重放一些记录的http请求。所以我打算准确模拟具有原始源地址和端口号的请求的实际流量。用原始源地址重播http流量

为了构建客户端,我跳转到可以使用套接字选项IP_FREEBIND绑定到任何可能的源地址和端口号。有没有已知的代码用于此目的? (我真的不想重新发明轮子)我应该使用原始套接字作为this thread建议?

任何帮助将不胜感激。

回答

1

IP_FREEBIND是在当前主机上没有尚未配置,因此,如果它后来与该地址配置,你的程序可以接收到它连接的地址听。它不允许您发送假装来自不同计算机的数据包。你需要一个原始的插座。

如果你在客户端伪造数据包的源地址,请记住服务器会将其响应发送到该伪造的地址。您的客户端必须能够接收这些返回数据包,因为在发送实际的HTTP请求之前,您需要双向通信来建立TCP连接。您可以使用原始套接字来实现您自己的整个假IP层,但是在隔离网络上执行测试可能会更简单,并且只需配置您希望测试请求来自的任何IP地址的客户端计算机即可。

+0

这组源地址可能是任何东西!我无法在客户端界面上设置这些地址...... IP_TRANSPARENT选项如何?我的网络是隔离的btw ... – Amir

+0

“隔离网络”我的意思是一个没有连接到互联网。您可以将任何想要的地址分配给测试客户端,即使是那些通常属于某个主机的“在那里”的Internet。 IP_TRANSPARENT看起来好像可以做你想做的事情,但是你仍然需要在测试网络上设置路由,以便发送到假地址的数据包被传送到客户机。 – Wyzard

+0

可以说我已经找到了与互联网断开的隔离网络中的路由。源地址的数量可以是数百万。将它们分配到界面实际上是不可能的。 – Amir

0

您可以尝试tcpcopy,它会重放带有原始源地址的http流量。