真实世界的跨平台去中心化异步点对点通信



我对网络编程的了解有限,所以,非常欢迎所有的评论。基本上我的问题归结为以下问题:

问题 1.真的有去中心化异步跨平台点对点通信这样的东西吗?

让我解释一下自己。

  • 如果我们有两个http服务器在具有实际IP地址的计算机上运行,那么显然答案是肯定的,假设其中一个为交互编写协议。

  • 更进一步,如果其中一个(或两个)位于路由器后面,那么通过端口转发仍然可以建立通信。但是,这里的问题开始了,因为如果有人想在后台运行这样的服务器,比如在手机上,那么依赖该服务器的应用程序在家时确实可以工作(我们不能真的期望在任何地方请求端口转发我们去)。

  • 但除此之外,

  • Q2. 当有人不使用Wi-Fi时,手机是否会从电信公司获得实际的IP地址?

  • 如果这是真的,那么很明显,人们可以通过在智能手机上运行http服务器来以不使用Wi-Fi为代价进行跨平台异步点对点通信。(我知道这不方便,但肯定是可行的。

最后,我能想到的两个(也许还有更多)相关问题是:

  • 问题 3.Skype是如何工作的?
  • 问题 4.Viber 究竟是如何工作的?
根据Skype

的答案,它说:如果其中一个或两个被叫方都没有公共IP,那么他们就会通过UDP或TCP将语音流量发送到另一个在线Skype节点。因此,Skype中似乎没有直接通信,因为他们必须在这种情况下使用中间人。

关于Viber,我找不到这个特定问题的详尽答案。人们是否通过Viber集中式服务器相互交谈,或者他们是否建立直接连接?当然,如果他们确实建立了直接连接,那么我真的很想知道他们是如何管理这样的事情的,因为手机可能有也可能没有物理地址。即使 Viber 没有运行并且我在路由器后面,我的一个朋友如何将 Viber 消息路由到我的手机?

我想Viber的答案实际上是推送通知,但据我所知,推送通知的所有变体都依赖于打开的连接,然后应用程序的服务器通过这种连接将通知发送到客户端。所以,这种方法给我们的感觉是它是异步的,但本质上不是。我们在作弊,从某种意义上说,与服务器的连接不断打开,而且,据我所知,应用程序服务器必须通过该服务器推送通知。示意图:

>中央应用程序服务器>管理服务器,打开与我的手机的连接>我

因此,这似乎再次是一种集中式方法。

老实说,我能想到的唯一既分散又异步(在手机上)的方法就是在每个平台/设备上运行 http 服务器,但这是以不使用 Wi-Fi 为代价的,并假设电信公司真的为每部手机分配了一个物理 IP 地址(我不知道这是否属实, 你呢?

废物、暗网、F2F 等呢?在某些相关方之间更直接的异步通信的意义上,它们是否具有优势?是否有实际应用(也包括移动电话)使用这种通信方法。

真的,这不是我想解决的实际问题,但我想知道最先进的技术是什么,以便我弄清楚如何从那里开始。因此,非常欢迎所有评论。如果您有最新技术的参考资料,我也想知道它们,但简要描述也会很好。

我提前感谢您的所有时间和精力。

你问了很多问题,这是答案的开始:

Q1: 是的。例如,以BitTorrent非常成功的1000万+节点网络为例。除了引导过程之外,该协议是完全去中心化和异步的。有关更多信息,请参阅此处。

Q2: 是的!转到手机上的 www.whatismyip.com,您将看到分配的IP。但是,您可能会被非常过滤(例如:端口 80 上的传入流量可能会被阻止)。

Q3:它具有P2P元素和解决NAT问题的巧妙技巧 - 有关更多信息,请参阅此处。

Q4:我不知道。

最新更新