上飛

2012-10-05 33 views
2

修改HTTP URL是可以修改用戶的HTTP請求上飛

www.example.com/options 

,而不是

www.example.com/options_and_params 

我的情況是,30000用戶連接到我公司的網絡骨幹和我想要在主幹交換機和Radware LoadProof之間添加一個或多個服務器(使用我當前正在處理的代碼)來實現此項工作。

谷歌搜索了一夜後,我沒有領先,但一些問題:

  1. 我不需要通過網絡攔截每一個數據包。有了像iptables這樣的幫助,我可以過濾掉我想要的軟件包。我在使用iptables之前完成了它。但是,數據包不等於HTTP流。我需要做HTTP重構嗎?
  2. 如果我成功找到了一種修改HTTP請求URL內容的方法,我仍然應該把它放回網絡流。據我所知,TCP數據包有一個校驗和,在我修改了內容之後,它一定是錯誤的。我如何計算新的校驗和並將數據包放回網絡?

這是我第一次做網絡編程或分組處理髮展。任何建議表示感謝。

+0

沒有辦法在服務器級別使用簡單的重寫規則?他們應該適合添加參數。 – arkascha

+0

參見[Fiddler2](http://www.fiddler2.com/fiddler2/)的'AutoResponder'。 AFAIK,你可以使用它的c#庫。 –

+0

@arkascha重寫規則不能滿足我的需要。該網站沒有在我的公司內部運行,我無法控制它。 –

回答

1

這取決於是否你正在做的HTTP/1.0或HTTP/1.1和其是否需要修改初始請求或單個HTTP 1.1會話的所有請求。

如果您有數據包,並且可以在發送數據包之前對其進行修改,並且您只是試圖修改請求,然後給定一個典型數據包的長度以及HTTP請求流中URL的位置(非常接近開始),並且它將成爲TCP流中發送的第一件事情,我認爲您可以安全地假設它會出現在發送的第一個數據包的前N個字節中,因此不會被拆分爲多個數據包。

然而,如果這是一個HTTP/1.1流然後多個請求將經由在該情況下在將來請求可以很好地在兩個TCP數據包分割的URL相同的TCP連接發送。

如果你可以強制HTTP/1.0,或者如果你修改初始或全部請求爲HTTP/1.0,那麼你可以確信第一個數據包將對應於TCP流的第一個數據包,而你很難看到URL被拆分爲多個數據包,這意味着不需要重建和僅僅進行替換的能力。

然而,這會在新的TCP連接的成本,這是非常低效。

如果不這樣做,你把它作爲HTTP/1.1,則URL可以是在任何未來要求的任何隨機點,因此分割在多個TCP數據包(二逼真給出的URL的大小)。

0

如果我收到了你的問題的權利,那麼這可能是可能與像nginx的一些快速反向代理完成。