如何在我的局域网上找到另一台不可公开访问的计算机的正确 IP 地址?
Posted
技术标签:
【中文标题】如何在我的局域网上找到另一台不可公开访问的计算机的正确 IP 地址?【英文标题】:How would I locate the correct IP address of another computer on my LAN which is not publicly accessible? 【发布时间】:2011-09-27 04:30:15 【问题描述】:我正在编写一个分布式 Java 应用程序,但是网络方面的事情让我很困惑。由于某种原因,它无法正常工作。我认为这是因为我通过 ipconfig /all 获得的 IP 地址无法从 LAN 外部访问。我很感激任何提示或建议。
【问题讨论】:
您可能还想在 ServerFault 上问这个问题。 @Tim,这个问题很好解决,适合Stack Overflow 好的,复制粘贴很容易,谢谢! 【参考方案1】:概述
您需要众所周知的"NAT Traversal" 或ICE。目前互联网上使用的主要协议有两种,TCP 和 UDP。 TCP 套接字在其中携带大量会话状态信息;因此它是一个比 UDP 更难用于 P2P 的协议。
UDP 隧道
以下列表是更通用的STUN Protocol (RFC 5389) 的简化大纲,您可以使用它来实现基于 UDP NAT Traversal 的 P2P 服务...
-
部署具有公共地址的 UDP 服务器并开始侦听来自客户端的 UDP 数据包。客户端会将其私有 IP 地址嵌入发送到您的服务器的 UDP 数据包中;实施某种形式的身份验证以确保您从有效的客户端(而不是一些随机数据包扫描器)获取连接是个好主意。
服务器从 UDP 数据报中读取他们的私有 IP 地址是如何转换为公共 IP 地址的。
如果您想在特定用户之间建立连接,也可以将此信息嵌入从客户端发送到您的服务器的数据包中;您的服务器将实现一个用户名目录,以将客户端 UDP 套接字信息与用户名相关联(对等方将尝试连接到该用户名)。
您的 UDP 服务器应将相应信息发送回其他相关对等方。
现在,对等方可以通过向这些已转换地址发送 UDP 数据报直接通信;只要允许相关的 UDP 端口并且此协议引入的延迟不会触发 NAT 设备中的状态超时,这些数据包就会通过路径中的客户端 NAT 设备。
在您建立 UDP 连接之后,您可以使用 Open*** 之类的东西在两个客户端之间形成一个 UDP SSL ***;这将为您提供一个简单的通道来启动客户端之间的 TCP 连接。但是,在此连接模型中需要考虑一些重要的安全和信任问题;在互联网上的随机用户之间不太可能有用。
TCP
如果需要 TCP 连接,我建议查看这个互联网草案,MMUSIC-ICE-TCP:TCP Candidates with Interactive Connectivity Establishment (ICE)
【讨论】:
非常感谢迈克,感谢您提供这些有用的信息!我来了!【参考方案2】:某些 IP 地址不可路由:http://en.wikipedia.org/wiki/IP_address - 如果您有其中之一,您将无法直接从局域网外部访问它。您可以从该局域网上的一个地址访问您的局域网上的其他地址。
如果你在局域网之外,你不能启动到局域网上特定机器的 tcp 连接,但那台机器可以和你一起启动:http://en.wikipedia.org/wiki/Network_address_translator
【讨论】:
嗯,这很奇怪。这里的其中一台计算机有一个 192.168.XX.XX,它似乎是私有的。但是另一个是 137.30.XX.XX .. 我很好奇,当我向另一台计算机发送消息(制作套接字 CX)时,我是否首先使用 http://?还是只是 IP? Socket 连接通常使用 IP 完成。 HTTP 是协议。为了在两台计算机之间建立连接,它们都需要能够看到对方。如果一台计算机正在通过 Internet,则需要另一台计算机的公共 IP。如果两台计算机都在同一个 LAN/WAN/VLAN/无论它们应该能够相互通信,除非网络已被分段以防止这种情况。 @James,非常感谢 - 是的,这很有道理,我会再试一次! 希望对您有所帮助。这只是网络理论。另外,我忘了补充一点,计算机可以访问 Internet,但它可能无法像主机一样运行(用于 FTP 服务、站点、游戏......)。 Mike Pennington 的回复中解释了一些进一步的概念。最后,这个关于 OSI 模型的链接值得一读:en.wikipedia.org/wiki/OSI_model以上是关于如何在我的局域网上找到另一台不可公开访问的计算机的正确 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章