2012-04-16 115 views
3

因爲我在互聯網/網絡世界一個初學者,我總是惹了這類疑惑的在我的頭上,而編程;)..我的疑惑是,代理服務器如何與tcp/http連接一起使用?

  1. 雖然工作在一個代理,我的請求和響應如何工作? 這是否意味着我的請求標頭和數據首先會到達代理服務器 - >然後代理服務器會將它(相同的標頭和數據)發送到相應的服務器。 服務器響應它的響應標題和正文代理服務器 - >然後代理服務器將它發送到我的電腦。對?

  2. 使用websockets時,我們正在升級我們的HTTP連接到TCP。目前在代理服務器上發生了什麼?代理服務器是否也將其連接升級爲普通TCP?

  3. 打開這樣的TCP連接後,代理服務器能夠跟蹤/記錄那些套接字消息嗎?

  4. 最重要的是,代理服務器是透明的還是像客戶端的原始服務器?

感謝您提供任何答案或有用的鏈接。

回答

0
  1. 是的,這是正確的。

  2. 如果你在談論html5 websockets,那麼需要提到幾件事情。首先要使用websocket,你需要一個處理這種連接的服務器,而且我不知道任何可以支持它的服務器。有一些apache模塊可以實現這些功能,還有perl和python獨立應用程序。底線是,除非你的服務器可以處理websocket,否則什麼都不會發生。 同樣適用於websockets代理,它可以用類似的原理工作,我沒有閱讀websockets協議規範,但服務器會讀取數據包的目標地址並將它們中繼到服務器,然後中繼服務器返回。我其實並沒有聽說過一個websockets代理服務器,也不知道我該如何去寫它,我不相信還有這樣的事情;請記住,協議還沒有完全標準化。

  3. 我會這樣想,畢竟所有的數據包都是通過代理傳輸的,除非你通過SSL加密。

道歉我沒能給你提供更多的信息,但最近我纔開始討論websockets,它還沒有廣泛的技術。

此外,我想指出你以下資源,他們似乎提供了一些問題的答案:

http://www.infoq.com/articles/Web-Sockets-Proxy-Servers http://stackoverflow.com/questions/2201317/why-dont-current-websocket-client-implementations-support-proxies

http://en.wikipedia.org/wiki/WebSocket#Proxy_traversal

+0

感謝您的回覆。您是否聲稱代理服務器的行爲與客戶端的原始服務器一樣?或者,如果客戶端應用程序有辦法檢測它是否正在與代理/實服務器通話? – Vivek 2012-04-16 11:58:30

+0

使用普通的HTTP代理非常依賴,有些發送額外的HTTP頭指示它是代理服務器請求('X-Forwarded-For')。還有其他技術可以查找用戶是否在代理(flash,ajax,兩者的組合)之後,但是如果代理服務器設置正確,則可能很難檢測連接是否來自代理或不。至於websockets,我不認爲有這樣的規範,所以可能有解決方法,但默認情況下不可能確定數據包是否來自用戶... – 2012-04-16 12:04:53

+0

從Kaazing的網站[http ://websocket.org/aboutwebsocket.html, 我認爲websockets通過提供HTTP隧道從不關心(一旦它實現了)代理服務器。但我仍然懷疑這是否只發生在ws或wss(安全)? – Vivek 2012-04-16 12:30:05

3
  1. 權。

  2. 沒有'將HTTP升級到TCP'這樣的東西。 HTTP連接已經是TCP連接。這個問題因此沒有意義。

  3. 它能夠跟蹤連接,它可以看到所有數據在雙向交換。

  4. 我不確定這是什麼意思。處理CONNECT命令後,代理只需在兩個方向上覆制字節。可能這對您的問題是「透明的」。

相關問題