2017-10-05 82 views
0

我想写一个应用程序,它通过互联网在两个设备之间建立直接的TCP \ IP连接。 我有一台服务器来交换IP地址和端口,但它足以建立连接?直接TCP IP连接需要什么?

如何处理两个设备都在同一个IP上(连接到同一个Wi-Fi热点)的情况?

此外,我不明白设备上的开放端口如何在没有热点端口转发设置的情况下访问?是否有任何范围的端口可供应用程序使用?

回答

1

对于大多数情况,您对端口转发是正确的。

TCP/IP是OSI Layer 4协议。您需要能够使用已知的IP地址和端口号将数据发送到服务器应用程序。现在在互联网上时,这可能会变得更加复杂,因为您通常不会直接与互联网其他用户访问的IP地址进行交互。这是您的公共IP地址。您从ISP获得的调制解调器可能会实现NAT ,这会将您的私人地址变成您的公共地址。您的调制解调器将阻止所有TCP SYN请求,除非专门为它提供转发规则。

这只是一个典型的案例,您还可以考虑将您的调制解调器设置为DMZ模式,甚至实现您自己的反向代理,如nginx。

+0

很好,但VoIP应用程序如何工作?他们不通过服务器传输所有数据 –

+1

取决于实施。我相信VOIP通常使用[SIP](https://en.wikipedia.org/wiki/Session_Initiation_Protocol),一个第5层协议。所以它不必使用TCP,它可以使用任何它想要的第3层协议。即使使用TCP,也可以实现许多不同的体系结构,其中一些电话是TCP服务器,客户端或两者。请查看开源VOIP服务器[Asterisk](https://wiki.asterisk.org/wiki/display/AST/Asterisk+Architecture%2C+The+Big+Picture)了解更多信息。 –

+0

SIP!这就是我正在寻找的词!只需一个字,现在我知道要在哪里深入挖掘!谢谢 –

0

我已经结束了在Firebase之上的WebRTC构建。

所以,我的问题的实际答案 - STUN。