首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在无法公开访问的LAN上找到另一台计算机的正确IP地址?

如何在无法公开访问的LAN上找到另一台计算机的正确IP地址?
EN

Stack Overflow用户
提问于 2011-07-02 14:57:08
回答 2查看 572关注 0票数 3

我正在编写一个分布式Java应用程序,但是网络方面的东西把我难倒了。由于某些原因,它不能正常工作。我认为这是因为我通过ipconfig /all获得的IP地址不能从局域网外部访问。我很感谢任何提示或建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-02 19:20:34

概述

您需要的是通常所说的"NAT Traversal"ICE。目前,互联网上使用的主要协议有TCP和UDP。TCP套接字在其中携带大量的会话状态信息;因此,与UDP相比,用于P2P的协议要困难得多。

UDP隧道

下面的列表是更通用的STUN Protocol (RFC 5389)的简化概要,您可以使用它们来实现基于UDP NAT穿越的P2P服务……

  1. 使用公共地址部署UDP服务器,并开始侦听来自客户端的UDP数据包。客户端会将其私有IP地址嵌入到发送到服务器的UDP数据包中;最好实现某种形式的身份验证,以确保您从有效的客户端(而不是某个随机的数据包扫描器)获得连接。
  2. 服务器读取他们的私有IP地址如何从UDP数据报转换为公共IP地址。
  3. 如果您想在特定用户之间建立连接,也可以将此信息嵌入从客户端发送到服务器的数据包中;您的服务器将实现一个用户名目录,以便将客户端UDP套接字信息与用户名(对等方将尝试连接到的用户名)相关联。
  4. 您的UDP服务器应将相应的信息发送回其他相关的peer(s).
  5. Now,对等方可以通过向这些转换后的地址发送UDP数据报直接通信;只要允许有问题的UDP端口,并且此协议引入的延迟不会触发NAT设备中的状态超时,这些数据包就会通过路径中的客户端NAT设备。

在建立了UDP连接之后,您可以使用类似于OpenVPN的东西在两个客户端之间形成一个UDP SSL VPN;这将为您提供一个简单的通道来启动客户端之间的TCP连接。然而,在这个连通性模型中有许多安全和信任问题需要考虑;它不太可能在互联网上的随机用户之间有用。

TCP

如果需要TCP连接,我建议查看这个互联网草案,MMUSIC-ICE-TCP:TCP Candidates with Interactive Connectivity Establishment (ICE)

票数 3
EN

Stack Overflow用户

发布于 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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6555570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档