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