2011-06-08 101 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

相关问题