我想创建一个简单的基于 JSON 的协议,以允许我的游戏与我的自定义服务器对话,但我不想将其嵌入 HTTP。
如果我向服务器的 80 端口发送自定义的基于文本的协议请求,防火墙会因为未使用 HTTP 格式而阻止它吗,还是他们只关心端口号?
我不会使用与 Web 服务器相同的服务器,因此我不介意丢失用于实际 Web 服务的端口 80。
需要澄清的是,我主要关注的是大多数人可能拥有的典型家庭防火墙,而不是高端的企业防火墙。
答案1
主题防火墙只根据端口号进行阻断,而应用层防火墙(17 filter、wfilter enterprise)则根据协议模式进行阻断。
因此如果您的防火墙是应用层防火墙,您的聊天程序将无法工作。
答案2
需要澄清的是,我主要关注的是大多数人可能拥有的典型家庭防火墙,而不是高端的企业防火墙。
大多数典型的家用防火墙默认不会阻止出站连接。事实上,大多数家用设备甚至没有防火墙,它们只是依靠 NAT 来阻止入站连接。因此,我个人不会太担心发送端口 80。只需使用任何大于 1024 的端口即可。
我还要补充一点,任何拥有防火墙过滤出站连接的人也都有打开所需出站端口的经验。
答案3
大多数典型的防火墙都会执行基本的基于端口的规则(如果它在端口 80 上,那就没问题,即使它实际上是一些非 HTTP 协议),或者它们会进行更深入的检查并拒绝符合特定不良模式(文件扩展名、病毒 shellcode 等)的流量。我不知道有哪个防火墙采用白名单方法,阻止端口 80 上任何非 HTTP 的内容。
答案4
您在使用 HTTP 时遇到了什么问题 - 许多人使用 HTTP 作为聊天服务器等,其行为与游戏引擎与服务器通信的行为相同。
对于此类应用程序,node.js 可能非常适合服务器端。
另外值得关注的是 Google 在 SPDY 上的工作 -http://en.wikipedia.org/wiki/SPDY- Chrome 使用它与 Google 的资产进行大量通信。
安迪