11
我想了解瀏覽器和Web服務器之間的TCP連接。我有一臺運行在本地機器上的web服務器,可以按照預期使用localhost:3000或127.0.0.1:3000瀏覽它。 (我正在運行「rails s」和WEBrick。)爲什麼socat在連接到Web服務器時需要「fork」?
我想在瀏覽器和Web服務器之間放置一個軟件中介,於是開始嘗試使用socat。以下工作就好了:
socat TCP-LISTEN:8080,fork TCP:localhost:3000
我可以瀏覽到localhost:8080,事情按預期工作。但是,如果我省略這樣的「,fork」參數,
socat TCP-LISTEN:8080 TCP:localhost:3000
本地導軌網站在瀏覽器中顯得很破碎。
爲什麼fork參數是必需的?爲什麼瀏覽器< - > Web服務器連接沒有它的工作?
非常感謝Celada。這很有道理。 – user691307 2012-03-09 18:34:49
我實際上想要做的是在瀏覽器和Web服務器之間編寫我自己的「in-between」程序。它打開到Web服務器的客戶端TCP連接,並在另一個端口上「偵聽」TCP服務器。瀏覽器打開一個到監聽端口的客戶端連接。所以在一個瀏覽器端,有一系列打開和關閉的TCP會話序列。但在Web服務器端,只有一個建立的TCP連接。那失敗了。我想我的自制軟件中介可以在每次客戶端啓動和停止TCP連接時關閉並重新打開Web服務器連接。聲音好嗎? – user691307 2012-03-09 18:50:56
聽起來不錯,也是最簡單的事情。每次HTTP用戶代理都會打開一個到服務器的新連接,並且同時關閉它們。與解釋HTTP請求的內容相比,這樣做的工作量要少得多,以確定何時可以調整內容,以便將來自客戶端的多個連接聚合到一個連接到服務器的連接上。這種方式就是實現一個完整的HTTP代理服務器! – Celada 2012-03-10 15:46:05