代码之家  ›  专栏  ›  技术社区  ›  Bart van Heukelom

利用HTTP端口规避防火墙

  •  2
  • Bart van Heukelom  · 技术社区  · 15 年前

    我正在创建一个客户机-服务器应用程序,它通过自定义套接字协议进行通信。我希望客户端可以在具有限制性防火墙(公司、学校等)的网络中使用。通常,这是通过HTTP连接完成的,因为它总是可用的。

    如果我想这样做,我真的需要使用HTTP吗,或者通过服务器端口80使用我的自定义协议是否足够?

    3 回复  |  直到 15 年前
        1
  •  4
  •   Jon Hanna    15 年前

    防火墙可能具有比仅限制端口更多的限制性检查,并且您可能还拥有代理,它们将处理HTTP。

    尽管如此,将一个著名的端口用于其正常使用之外的其他用途仍然远远优于许多方案,这些方案通过HTTP执行固有的非HTTP内容,并基本上实现RFC3093(当人们实现April愚弄RFC时,通常显示幽默和技术敏锐的结合,RFC3093是例外)。

    为了解决代理问题,您可以使用443而不是80,因为HTTPS通信不能以完全相同的方式进行代理。实际上,您甚至不需要使用SSL,因为代理只会假设他们看不到它。

    不过,这些都不需要在应用程序中完成。您的应用程序需要做的是使其端口可配置(这无论如何都应该在任何服务器应用程序中完成)。默认值应该是远离已知端口的值,但是系统管理员可以使用80或443,或者 他们 需要。

        2
  •  0
  •   Aliostad    15 年前

    如果它是自定义套接字协议,那么它不是HTTP。

    但是您仍然可以使用端口80上的TCP来逃离防火墙,但是接下来您还必须处理代理情况。代理支持HTTP,自定义TCP可能不起作用,它们可能不会转发您的请求。

    我不知道你想这样做的原因(如果这是合法的或不合法的),但有一些软件被用来绕过伊朗等国家的过滤。其中一个软件(Haystack)使用复杂的加密技术将请求伪装成一个看起来无辜的包。

        3
  •  0
  •   user207421    15 年前

    您最好用ssh来研究隧道。它就是为这个设计的。HTTP代理不太可能工作的原因有很多,包括其他答案中给出的原因。