我想创build一个简单的基于JSON的协议,以允许我的游戏与我的自定义服务器交谈,但是我不想将其embedded到HTTP中。
如果我在端口80上向我的服务器发送一个自定义的基于文本的协议请求,防火墙会阻止它使用HTTP格式,还是只关心端口号?
我不会使用与服务器相同的服务器,所以我不在乎丢失真正的Web服务的端口80。
作为一点澄清,我主要关心的是大多数人可能拥有的典型的家庭防火墙,而不是高端的企业防火墙。
主题防火墙只根据端口号进行阻塞。 但是,应用层防火墙(17filter,wfilter企业)基于协议模式进行阻塞。
所以如果你的防火墙是一个应用层防火墙,你的聊天程序将无法工作。
作为一点澄清,我主要关心的是大多数人可能拥有的典型的家庭防火墙,而不是高端的公司防火墙。
大多数典型的家庭防火墙默认情况下不会阻止出站连接。 事实上,大多数家庭设备甚至没有防火墙,他们只是依靠NAT来阻止入站连接。 所以,我个人不会太担心发送端口80.只要使用任何端口> 1024和发挥不错。
我还要补充一点,任何拥有防火墙过滤出站连接的人都可以打开所需的出站端口。
大多数典型的防火墙都会执行基本的基于端口的规则(如果端口80是正常的,即使它实际上是一些非HTTP协议),或者他们将做更深入的检查并且拒绝符合特定恶劣模式(文件扩展名,病毒shellcode等)。 我不知道任何采取白名单的方法,阻止端口80上不是HTTP的任何东西。
进行深度包检测的防火墙会将其标记为非HTTP,并可能作出反应。 偏执的公司types不希望你通过端口80运行SSH,这样你就可以挖掘出他们的networking策略框架。
但是运行Linksys / Dlink / Netgeear的商品级防火墙一般不具备这样的function。 特别是出站。
你使用HTTP看到了什么问题 – 有很多人使用HTTP作为聊天服务器等,它们与游戏引擎与服务器通信具有相同的行为。
node.js在服务器端可能适合这种types的应用程序。
还有一件事是Google在SPDY上的工作 – http://en.wikipedia.org/wiki/SPDY – Chrome使用它来与Google的各种媒体进行大量的沟通。
安迪