2012-04-16 251 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命令后,代理只需在两个方向上复制字节。可能这对您的问题是“透明的”。

相关问题