【问题标题】:How do you make sure your pakcet is delivered to right client using public ip address [closed]您如何确保使用公共 IP 地址将您的 pakcet 交付给正确的客户 [关闭]
【发布时间】:2012-09-02 11:00:23
【问题描述】:

所以私有 IP 地址是 192.168.00 ~ 192.168.255.255 或 10.0.0.0 或 172.16.0.0 ~ 172.31.255.255

如果我接受了一个客户端到我的 serversocket,我可以通过使用 socket.getremotesocketaddress(); 来获取客户端的 remoteIp 地址。但我怀疑我从这种方法获得的 IP 地址只是公共 IP 地址,它必须有多个客户端使用与这个相同的公共 IP(就像你在访问网站 www.whatismyip 时看到的那样) .com)。因此,如果我想确保我的数据包使用某个 IP 地址或其他可以唯一标识一个人的信息传递给正确的人,我应该怎么做?

【问题讨论】:

  • 在这种情况下关联子网掩码会起作用吗?
  • 如果是这样,您将如何描述它并将其作为参数传递给套接字对象?
  • 这个问题没有意义。如果两个客户端共享同一个公共 IP 地址,它们也将共享其网络掩码。

标签: java android http sockets ip


【解决方案1】:

我认为您无法通过这种方式可靠地识别返回用户的机器。 NAT 将用您的服务器看到的公共 IP 地址替换“私有”IP 地址。当数据包到达您的服务器时,替代标识符(如 MAC address)也将消失。

在您的应用程序中构建应用程序级别标识(让用户或客户端进行身份验证)或使用不那么唯一的上下文标识符的组合,例如通过browser fingerprinting

【讨论】:

    【解决方案2】:

    因此,如果我想确保我的数据包使用某个 IP 地址或其他可以唯一标识一个人的东西传递给正确的人,我应该怎么做?

    您无法确保这一点。这在技术上是不可能的。

    可以做的就是确保如果数据包被传递给错误的人或机器,则无法读取该数据包。这可以使用各种强加密方案来实现。在应用程序级别,HTTPS 将确保这一点,前提是:

    • 客户端彻底检查服务器提供的证书,并且
    • 服务器的私钥没有泄露。

    在正常情况下,HTTPS 服务器没有任何方法可以明确地识别客户端计算机。您可以使用客户端证书来解决此问题,但这需要大量的设置工作。此 IBM 说明提供了一个概述:

    所以通常的做法是使用纯 HTTPS,结合一些应用程序级别的方案来验证用户;例如用户名和密码、双重身份验证、生物识别、令牌生成器等。


    但我怀疑我从这种方法获得的 IP 地址只是公共 IP 地址,并且它必须有多个客户端使用与此相同的公共 IP ...

    是的。鉴于 IPv4 空间已经用尽,这在如今变得越来越普遍。例如,NAT 网关允许具有“私有”IP 地址的客户端通过 NAT 网关与外部服务通信。对于外部服务,连接似乎将 NAT 网关的 IP 地址作为客户端地址。该服务无法找出“真实”IP 地址是什么,即使有办法,它也无法唯一标识客户端。

    【讨论】:

      【解决方案3】:

      您如何确保使用公共 IP 地址将您的 pakcet 交付给正确的客户

      这个问题没有意义。如果您接受通过 TCP 的连接,则它已经连接到唯一的客户端。与该客户端交谈所需要做的就是通过该连接发送字节。您无需做任何事情来确保正确交付。

      【讨论】:

      • 我想将客户的唯一身份存储到数据库中
      • 另外,我想知道像torrent这样的P2P应用是如何处理这个问题的
      • @TemporaryNickName 正如故意引述清楚的那样,我正在回答您标题中的问题。您的标题和问题都没有提及数据库。我建议你澄清你的标题和你的问题,以表达你实际提出的任何问题。我们只能回答您实际说的话。
      【解决方案4】:

      在我看来,唯一的方法是使用 HTTPS 而不是 HTTP。 HTTP是一个比较弱的协议;以蜜蜂相当容易欺骗和监视而闻名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-26
        • 1970-01-01
        • 2014-09-16
        • 1970-01-01
        • 2013-05-22
        • 1970-01-01
        相关资源
        最近更新 更多