我正在創建一個通過自定義套接字協議進行通信的客戶端 - 服務器應用程序。我希望客戶端可以在具有限制性防火牆的網絡(公司,學校等)中使用。通常這是通過HTTP連接完成的,因爲它始終可用。使用HTTP端口來逃避防火牆
如果我想這樣做,我真的必須使用HTTP還是足夠使用我的自定義協議通過服務器端口80?
我正在創建一個通過自定義套接字協議進行通信的客戶端 - 服務器應用程序。我希望客戶端可以在具有限制性防火牆的網絡(公司,學校等)中使用。通常這是通過HTTP連接完成的,因爲它始終可用。使用HTTP端口來逃避防火牆
如果我想這樣做,我真的必須使用HTTP還是足夠使用我的自定義協議通過服務器端口80?
防火牆的限制檢查可能比限制端口的限制更多,您也可能有一些代理服務器,他們會處理HTTP。
儘管如此,使用衆所周知的端口以外的東西比其正常使用仍然遠遠優於許多方案通過HTTP做固有的非HTTP東西,基本上實現RFC 3093(當人們實現愚人節RFC通常顯示幽默和技術敏銳的組合,RFC 3093是例外)。
爲了解決代理問題,您可以使用443而不是80,因爲HTTPS流量無法以完全相同的方式進行代理。事實上,你甚至不需要使用SSL,因爲代理只會假設他們看不到它。
這些都不需要用你的應用程序來完成。你的應用程序需要做的是讓它的端口是可配置的(無論如何應該用任何服務器應用程序來完成)。默認應該是遠離知名端口的東西,但是系統管理員可以使用80或443,或者如果他們需要。
+1 - 在端口80上可能有一個透明代理/緩存。 – 2010-10-08 10:50:39
+1 - 用於SSL .... – Aliostad 2010-10-08 10:54:28
@Douglas,@Aliostad, Aww,而且我很滿意的一點是我說它應該可以在應用程序中配置;) – 2010-10-08 11:06:35
如果它是自定義套接字協議,那麼它不是HTTP。
但是,您仍然可以在端口80上使用TCP來轉義防火牆,但是您也必須處理代理情況。代理可以識別HTTP,並且自定義TCP可能不起作用,他們可能不會轉發您的請求。
我不知道你想做這件事的原因(如果它合法或不合法),但有一些軟件被用來繞過伊朗等國的過濾。其中一個軟件(Haystack)使用複雜的加密技術將請求僞裝成無辜的數據包。
你最好用SSH調查隧道效應。它是專門爲此設計的。一個HTTP代理不可能有多種原因,包括其他答案中給出的原因。
是否可以切換到其他端口(例如443)來解決這些問題?我們有類似的問題,目前正在使用端口80. – tjg184 2013-05-23 17:49:35