【问题标题】:Ipv4 vs ipv6 client identificationipv4 vs ipv6 客户端识别
【发布时间】:2018-08-13 00:25:41
【问题描述】:

我想知道一个 HTTP 请求是否可以同时保存客户端的 ipv4 和 ipv6 地址?

我正在编写一个 .NET 应用程序并正在使用以下方法探测客户端的 IP 地址:

HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
Dns.GetHostAddresses(Dns.GetHostName())

我假设 HTTP 请求总是针对单个地址(IPV4 或 IPV6)发出的,不能同时正确吗?就算被 FQDN 调用?

理论上是否可以在一次http调用中同时获取客户端的ipv4和ipv6地址?

【问题讨论】:

    标签: c# .net networking ipv6 ipv4


    【解决方案1】:

    在单个 HTTP 请求中无法从客户端获取多个地址。有几个并发症:

    • 您已经怀疑 HTTP 连接一次使用一种协议
    • 客户端拥有多个 IPv6 地址是很常见的,这些地址会随时间变化
    • 客户端可能根本没有多个地址,并且是纯 IPv4 或纯 IPv6
    • 使用地址作为标识很棘手:ISP 使用 NAT44 和 NAT64 来节省地址空间,IPv6 地址经常随时间变化(至少在相同的前缀内,有时前缀也会变化)

    如果您想获得最佳估计,例如,您可以在页面上加载两张图片:一张托管在仅 IPv4 的主机名上,另一张托管在仅 IPv6 的主机名上。在 URL 中包含唯一标识符,您可能能够为大多数用户关联 IPv4 和 IPv6 地址。但这需要多个请求,而且并不完美,因此从技术上讲,它不能回答您的问题...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-10
      • 2020-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多