2011-06-08 75 views
0

可否要求您在端口80上打開一個tcp套接字來處理http請求,並在端口443上打開一個ssl套接字來處理https ...某些代理如何提供在同一個端口上訪問他們兩個?如何在同一端口上提供tcp/ssl支持

我發現只有這link但它不是很有用。你能給我一個erlang的例子,或者建議我一些資源,從中我可以更多地瞭解這個話題?

在此先感謝

+0

只是爲了澄清,是你對「端口統一」(同一端口上運行兩個不同類型的服務器)或HTTP代理如何處理兩者的HTTP請求的問題和HTTPS服務器? – Bruno 2011-06-08 17:51:50

+0

好吧......我會對你指出的兩種情況感興趣(我試圖儘可能地學習這類話題)..謝謝 – user601836 2011-06-09 08:30:34

+1

港口統一不太常見,但它依靠看傳入的數據包查看它應該處理哪個協議(@ seb的答案)。在使用HTTPS時,HTTP代理並不真正中繼HTTP請求,而是在客戶端完成後,它將整個TCP連接轉發給HTTPS服務器(因此SSL/TLS層直接在瀏覽器和目標服務器之間建立)使用'CONNECT'(@ MattH的回答)。 – Bruno 2011-06-09 10:17:27

回答

3

正如您所提供的鏈接列出,你將需要編寫嗅着請求,然後相應地重定向到正確的協議,自己的自定義服務器。

由於http://www.faqs.org/rfcs/rfc2818.html表示,HTTP會話將初始請求線(如GET /)開始,而TLS會話將與客戶問候開始(更多關於wikipedia TLS會話)

有很多資源在線關於在Erlang編寫服務器,例如How to write a simple webserver in Erlang?

順便說一句,您的術語不正確:http,https SSL和TLS是協議,並且都使用TCP套接字運行(通過網絡)。

5

一些代理如何在同一端口提供對它們兩個的訪問?

通過實施HTTP CONNECT方法,(非透明)代理可以切換到提供TCP隧道,瀏覽器可以在其上訪問例如HTTPS資源。

一個相當稀疏規格:
http://tools.ietf.org/html/rfc2616#section-9.9

相關問題