2013-01-16 25 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流量。