我正在创建一个客户端 - 服务器应用程序,它通过自定义套接字协议进行通信。我希望客户端可以在具有限制性防火墙(公司,学校等)的网络中使用。通常这是通过HTTP连接完成的,因为它始终可用。
如果我想这样做,我是否真的必须使用HTTP或者是否足以通过服务器端口80使用我的自定义协议?
答案 0 :(得分:4)
防火墙可能有比限制端口更多的限制检查,并且您可能还有代理,并且它们将处理HTTP。
尽管如此,将一个众所周知的端口用于正常使用之外的其他东西仍然远远好于通过HTTP本身实现非HTTP内容的许多方案,并且基本上实现了RFC 3093(当人们通常实现愚人节RFC时)显示了幽默和技术敏锐的结合,RFC 3093是例外)。
要解决代理问题,您可以使用443而不是80,因为HTTPS流量无法以完全相同的方式进行代理。实际上,您通常甚至不需要使用SSL,因为代理只会假设他们无法看到它。
但是,您的应用程序不需要这样做。您的应用程序需要做的是使其端口可配置(无论如何应该使用任何服务器应用程序完成)。默认值应远离众所周知的端口,但如果他们需要,系统管理员将能够使用80或443或其他任何内容。
答案 1 :(得分:0)
如果是自定义套接字协议,那么它不是HTTP。
但是你仍然可以在端口80上使用TCP来逃避防火墙,但是你也必须处理代理情况。代理是HTTP感知的,自定义TCP可能不起作用,他们可能不会转发您的请求。
我不知道你想要这样做的原因(如果它是合法的),但有些软件被用来绕过像伊朗这样的国家的过滤。其中一个软件(Haystack)使用复杂的加密技术将请求伪装成无辜的数据包。
答案 2 :(得分:0)
最好用SSH调查隧道。它正是为此而设计的。 HTTP代理不太可能由于多种原因而起作用,包括其他答案中给出的原因。