【问题标题】:How do apps like LogMeIn and TeamViewer work?LogMeIn 和 TeamViewer 等应用程序如何工作?
【发布时间】:2015-01-24 22:17:51
【问题描述】:

已经有一个问题How exactly does a remote program like team viewer work 给出了基本描述,但我对客户端注册到服务器后通信的工作方式很感兴趣。如果客户端在 NAT 之后,那么它不会有自己的 IP 地址,那么服务器(或另一个客户端)如何向它发送消息?还是客户端只是不断轮询服务器以查看其是否收到任何请求?

是否有与 LogMeIn 或 TeamViewer 等效的开源版本?

【问题讨论】:

  • 如果你投票结束这个问题,那么至少告诉我为什么!

标签: remote-desktop teamviewer logmein


【解决方案1】:

最简单和最可靠的方法(尽管并不总是最有效的)是让每个客户端与某处知名服务器建立传出 TCP 连接并保持该连接打开。只要 TCP 连接处于打开状态,数据就可以随时在任一方向通过该 TCP 连接。似乎 LogMeIn 和 TeamViewer 都使用这种方法,至少作为一种备用方法。这种技术的主要缺点是所有数据都必须通过 TeamViewer/LogMeIn 公司服务器(这可能成为瓶颈),并且 TCP 不能很好地处理丢弃的数据包——它会停止并等待丢弃的数据包被怨恨,而不是放弃它们并发送更新的数据。

他们有时可以使用的另一种技术(为了获得更好的性能)是UDP hole-punching。该技术依赖于这样一个事实,即许多防火墙将接受来自远程主机的传入 UDP 数据包,防火墙主机最近向其发送了传出 UDP 数据包。鉴于此,TeamViewer/LogMeIn 公司的服务器可以告诉两个客户端将传出数据包发送到另一个客户端防火墙的 IP 地址,之后(希望)每个防火墙将接受来自另一个客户端面向 Internet 的 IP 地址的 UDP 数据包。但是,这并不总是有效,因为不同的防火墙以不同的方式工作,并且可能不包括上述允许 UDP 的逻辑。

【讨论】:

  • 在这种情况下,客户端有一个 RTSP 服务器,它提供屏幕的视频馈送。建立 TCP 连接后,服务器有什么方法可以打开与此的连接?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 2016-01-30
  • 2023-03-27
  • 1970-01-01
相关资源
最近更新 更多