UDP客户端没有真正的IP地址

时间:2015-04-14 14:46:21

标签: java php sockets udp

我正在尝试创建一个由Java UDP客户端和PHP UDP服务器组成的应用程序。我正在考虑通过互联网将服务器与客户端绑定,因为客户端可能没有真实/公共IP地址。虽然服务器本身就是一个Web应用程序,它将通过某个端口打开公共地址上的监听器。客户端的任务是通过UDP通信(发送/接收)数据。

沟通部分:

  • 客户端:连接到Internet(Java应用程序)的Windows / Linux操作系统
  • 服务器:Windows IIS服务器,具有真实的IP和域(PHP Web应用程序)

2 个答案:

答案 0 :(得分:1)

这将取决于给定客户端站点的防火墙/ NAT-ing策略,但通常的设置是允许UDP输出到服务器,然后根据源和目标地址以及端口号允许相应的回复数据包重新登录

答案 1 :(得分:1)

如果您尝试在路由器后面创建服务器,那将是一个问题。

在您向服务器发送内容时,您的路由器将使用路由器的公共IP地址替换客户端的本地IP地址。路由器将在内部保留转换表。当服务器发送回复以检索发出请求的原始IP地址时,将查询此转换表,然后将回复简单地转发到该IP地址。因此,您似乎正在使用通常由路由器使用DHCP为您分配的ip @。但是这个本地ip @在互联网上从未在本地局域网上看到过。

由于转换表是在您尝试发送到服务器时构建的,因此无法在路由器后面轻松设置服务器。仅仅因为您的路由器在其转换表中没有条目来将来自Internet的请求路由到您的服务器。这称为NAT / PAT。因为转换表会跟踪ip adressen和ports。

所有IP地址都是真实的。但人们谈论公共IP @和本地IP @。公共IP @是互联网上使用的IP @,本地ip @是您在本地LAN上使用的IP @。