远程桌面协议实现

我试图find适用于我自己的远程桌面应用程序的最佳networking解决scheme,仅适用于Windows(以上XP),我有以下要求:

  1. 首先,应用程序应该工作,比方说,默认的OSnetworkingconfiguration,不需要进一步的代理(或其他)configuration
  2. 它必须是防火墙意识(也有一些基本的configuration)
  3. 它应该通过NAT工作(通信双方可能在NAT后面)

你会build议我什么概念? 你将如何开发(从networking的angular度来看)远程桌面应用程序? 什么协议和端口可能是最好的?

我很确定端口80上的HTTP可能符合上述条件,但是我觉得这对远程桌面应用程序来说效率不高。 对于我的实现将是最好的使用我自己的基于TCP协议(理想的是在一些安全层后),但我认为这不会通过防火墙。

作为最好的候选人寻找我的SSH ,但我想这将被许多防火墙默认阻止,或者我错了?

对不起,这个跛脚(和一点点主观)的问题,我真的不熟悉networking的东西。
我正在使用Synapse库来实现。

80上的HTTP不符合你的约束。 事实上,没有任何事情:默认的操作系统configuration被完全locking,NAT中没有任何孔用于端口转发。 您可能可以使用uPnP控制在路由器上打开相应的端口,但假定您的程序在可以执行此操作的级别上运行。

如果你正在做一个远程桌面的替代(似乎不是这样,但我会提到它),你仍然会有相同的问题。 远程桌面在启用时通常会在本地Windows防火墙策略中添加一个例外,并且会手动input到路由器中。

哦,公司的NAT将必须手动configuration,以允许您的程序。 如果双方都是公司的NAT,这是没有办法的。

采摘3389为您提供了一些机会,可以在远程桌面的防火墙上进行打开,但是当然这是因为远程桌面通常在那里运行。

挑选分配给特定服务的任何端口是坏事™,因为a)人们期望在那里find服务,b)它可能实际上已经在那里。

这使我想到了最后一点:为什么不使用远程桌面? 这是一个相当全面的协议,可能是最简单的避免在这里重新发明轮子。