我很清楚,这个问题本身已经被问过很多次了,但是请大家阅读这个问题。另外,我正在尽我所能来表达这个问题,因此是前奏/问题部分。
序幕:
GeoIP 数据库预先构建了 IP 与其地理位置的映射。不能保证它们是准确的,对吧?即 IANA 将 IP 块分配给各种 RIR,例如 APNIC。而且,APNIC 可以向世界任何地方的任何人提供 IP;不仅是亚太地区。因此,目前还不确定 Geo-IP 映射的准确性。
问题:
1.
鉴于这种不确定性,Facebook 和 Google 等大型网站如何处理这个问题?我特别在谈论他们给我们的电子邮件/消息的“时间戳”。他们不会猜测我们的位置,从而猜测访问 IP 的时区吗?比如说,当我通过连接到位于加拿大的 VPN 访问 gmail 时,我的邮件会加盖 ETC。当我连接到美国的一个时,它上面印有太平洋时区。考虑到前面提到的不确定性,他们提供错误时间戳的可能性不是很大吗?但老实说,我从未见过这种情况发生过。
我们如何解释它们总是显示准确的时区并且永远不会出错的事实?
2.
这可能类似于(1),如果是,请原谅。
我可以远程访问使用属于美国注册表的 IP 地址注册的服务器。但它在地理位置上位于东京的一个 DC。如果通过某种机制我正在通过此服务器访问我的 gmail 收件箱(可能是远程 X 会话?)。
我会在邮件中看到哪个时区?
问题更新:
(您甚至可以忽略前面的“问题”部分(1)和(2))
通过 Iain 的回复,我意识到我正在寻找的答案是 - “网站如何为用户提供地理定位的网络体验” 例如,来自加拿大的访问者将被重定向到 google.ca,而来自印度的访问者将被重定向到 google.co。在等等。甚至根据地理位置设置语言。
因此,如果我要创建一个需要为用户提供地理定位体验的网站,我将不得不依赖像 MaxMind 这样的地理 IP 数据库。所以我仍然有出错的机会,对吧?谷歌和 Facebook 等网站能够保持其地理 IP 的准确性,因为它们的服务资源丰富,而且它们从最终用户那里收集数据的方式,对吧?
虽然无法保证地理定位 IP 地址的准确性,但它们通常比您想象的更准确。正因为如此,你剩下的问题是没有实际意义的。同样,您假设地理定位的 IP 地址用于显示时间信息,但情况并非总是如此。
Gmail 不这样做。GMail 使用您正在使用的计算机的时区偏移设置,而不是您连接的地理定位 IP 地址。Facebook 也是如此。这很容易测试。
由此可见,在东京使用远程计算机时,如果系统时区设置为东京,GMail 将显示东京时间。
虽然 GMail 不使用您连接的地理定位 IP 地址来设置电子邮件的日期,但其他服务确实使用它为您提供地理定位体验。例如,谷歌搜索将为您提供地理定位服务。
非常有趣的问题。我对 Gmail 不太熟悉,所以我将提供部分背景:
RFC 2822 - Internet 消息格式指出:
因此,每个邮件服务器都会为每个传递的邮件添加一个标头值,其中包含根据该服务器的时间和与 UTC 的偏移量。
客户端随后查看它自己的邮件主机添加的时间戳,并根据客户端本身配置的时区重新解释它。
如果还使用 ip 地址地理定位,这将超出 Internet 消息格式规范。我自己从未见过电子邮件客户端/服务器设置使用的地理定位,但有兴趣了解其他人是否有。
前奏:这与其说是一个真正的答案,不如说是一个讨论的开始。实际上并没有回答问题的技术方面,我相信它可以让我们深入了解为什么 GeoIP 或类似服务对大玩家来说并不那么重要。
问题中提到的两家服务提供商谷歌和 Facebook 是迄今为止互联网上最广泛和最深入的公司。如果有一家公司拥有可靠的知识库来了解其客户从哪里连接,那么这些是最热门的候选人。
Facebook
您是否注意到有多少人在他们的所有帖子中添加了各种与地理相关的内容?Facebook 总是如何要求您在发布的任何内容中添加地址或位置?人们愿意提供有关其行踪的正确信息是最好的基础来源,任何好的统计方法都可以在此基础上做出类似准确的假设。
谷歌
谷歌无处不在——不仅是通过浏览器窗口提供的可见服务。以无处不在的 Android 手机、平板电脑和大量其他小工具为例,要求您提供您的职位(提供匿名承诺 - 在这种情况下为什么不呢,他们只需要 IP 相关内容和您的职位的组合)。还有广告和分析服务,在分散在全球各地的网站、他们的用户和……是的,任何可用的位置信息之间提供非常有价值的链接。您实际上不必监视人们,拥有如此出色且广泛的服务集可以更轻松地在 Google 数学大脑中添加必要的二加二。
您似乎对注册表的工作方式感到困惑。IP 地址范围(请注意,我们在这里讨论的是地址- 不是非常不同的 IP名称)可以由具有不同地理位置的注册商维护 - 但这种情况极为罕见 - 因为这也是来源有关将数据包路由到网络的信息。
如果您查看 whois 记录,您会看到它包含该国家/地区的 ISO-3166 代码。例如
[剪辑]
可以根据跟踪路由信息推测有关 IP 地址位置的更多信息 - 延迟是距离的指标 - 它应该逐渐接近(地理上)目标)。
但是,如果我的唯一目标是在客户端显示时间,那么我不会使用这种方法(除了作为后备) - javascript 知道如何将 UTC/GMT 时间转换为本地时区(尽管它实际上并不披露该时区是什么 - 至少不明确)。
此外,如果您可以访问 javascript,那么您可以使用地理定位 API 来获得更精确的位置。