繁体   English   中英

如何获取唯一的传入请求IP地址

[英]How do I get unique incoming request IP address

有四个人共享相同的wifi连接,根据下面的定义,IP必须是唯一的。
IP地址是分配给参与计算机网络的每个设备的数字标签,该计算机网络使用因特网协议进行通信。

Q1。 是这样吗?

为了唯一识别它们,我试过:

request.remoteAddress

但我为这四个人获得相同的IP。

问题2.HOW如何识别他们?(我应该说他们传递一些令牌的东西来识别它们吗?但我会更喜欢独特的IP)

正确的措辞是,他们都是4防火墙 - 这就是;

这是大多数家庭/办公室网络连接到互联网的常用方式,原因有两个 - 它需要的公共互联网地址要少得多,而且它还使网络更安全,因为避免内部资源的公共地址意味着更少您可能无法正确配置防火墙。

缺点是IP地址绝不是用户的唯一ID - 这就是Cookie的用途。

这4个人可能是从同一个网络连接的。 在这种情况下,IP地址将被视为外部网络的相同IP地址。

从路由器发送到该本地网络外部的服务器的请求都将具有相同的IP地址。 这是会话ID有用的一个原因。 如果您需要一个每个用户必须唯一的标识符,即使它们位于同一本地网络下,您也需要使用会话变量。

考虑一下这篇文章Play 2.0中的session.id是什么?

基本上创建您的唯一ID。 (代码摘自参考SO帖子)

// Generate a unique id
String uuid=session("uuid");
if(uuid==null) {
    uuid=java.util.UUID.randomUUID().toString();
    session("uuid", uuid);
}

所有4个用户都使用相同的互联网线路进行访问。 因此,所有这些的公共IP地址将是相同的。 如果您有本机应用程序,那么在第一次请求您对服务器发出请求时,请发送带有请求的设备ID。 除非所有设备上的设备ID相同(非常罕见),否则设备ID与IP地址相结合应该是相当独特的。 另一个解决方案是,您可以在第一次向服务器发出请求时生成唯一的Id(在服务器上创建会话时可以使用JSessionID)并将其作为响应发送。 然后在随后的所有请求中传递唯一ID。

如果您使用的是移动设备的Web浏览器,那么您可以创建会话(JsessionId cookie将由服务器生成)。 移动浏览器将负责发送每个请求的jsessionid cookie。

我担心没有简单的方法来识别用户,因为他们总是可以修改他们发送给你的数据。 这就是几乎所有Web服务都需要登录(他们自己的系统或Facebook,Google等)的原因。 然而,问题是,如果有人注册了足够的帐户,他们可以一直向您请求。 为避免此问题,您可能希望即使在注册后也经常引入验证码验证。

此外,并非每个用户都具有静态IP,这意味着他们可以在每次被阻止时更改IP(如果您通过IP阻止,如果我正确理解了问题)。

它们在其内部网络上都具有唯一的IP地址(如192.168.xx或其他内部IP地址),请参阅http://en.wikipedia.org/wiki/Private_network和RFC1918以获取详细信息。 它们通过网络地址转换的防火墙/网关连接到公共互联网(有关详细信息,请参阅http://en.wikipedia.org/wiki/Network_address_translation )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM