我正在编写一个分布式Java应用程序,但是网络方面的东西把我难倒了。由于某些原因,它不能正常工作。我认为这是因为我通过ipconfig /all获得的IP地址不能从局域网外部访问。我很感谢任何提示或建议。
发布于 2011-07-02 19:20:34
概述
您需要的是通常所说的"NAT Traversal"或ICE。目前,互联网上使用的主要协议有TCP和UDP。TCP套接字在其中携带大量的会话状态信息;因此,与UDP相比,用于P2P的协议要困难得多。
UDP隧道
下面的列表是更通用的STUN Protocol (RFC 5389)的简化概要,您可以使用它们来实现基于UDP NAT穿越的P2P服务……
在建立了UDP连接之后,您可以使用类似于OpenVPN的东西在两个客户端之间形成一个UDP SSL VPN;这将为您提供一个简单的通道来启动客户端之间的TCP连接。然而,在这个连通性模型中有许多安全和信任问题需要考虑;它不太可能在互联网上的随机用户之间有用。
TCP
如果需要TCP连接,我建议查看这个互联网草案,MMUSIC-ICE-TCP:TCP Candidates with Interactive Connectivity Establishment (ICE)
发布于 2011-07-02 15:28:47
一些ip地址是不可路由的:http://en.wikipedia.org/wiki/IP_address -如果你有一个这样的地址,你将不能从局域网外部直接访问它。您可以从lan上的某个地址访问lan上的其他地址。
如果您在局域网之外,则不能启动到局域网上特定计算机的tcp连接,但该计算机可以启动与您的连接:http://en.wikipedia.org/wiki/Network_address_translator。
https://stackoverflow.com/questions/6555570
复制相似问题