我非常清楚这个问题本身已经被问过很多次了,但大家请阅读一下这个问题。另外,我尽我所能来表达这个问题,因此有了序言/问题部分。
序幕:
GeoIP 数据库预先建立了 IP 到其地理位置的映射。无法保证它们的准确性,对吧?例如,IANA 向各种 RIR(例如 APNIC)提供 IP 块。而且,APNIC 可以向世界任何地方的任何人提供 IP;而不仅仅是亚太地区。因此,目前尚不确定 Geo-IP 映射的准确性。
问题:
1.
鉴于这种不确定性,Facebook 和 Google 等大型网站如何处理这个问题?我特别指的是他们给我们的电子邮件/消息提供的“时间戳”。他们难道不会猜测我们的位置,从而猜测访问 IP 的时区吗?比如说,当我通过连接到位于加拿大的 VPN 访问 Gmail 时,我的邮件会被标记为 ETC。当我连接到美国的 VPN 时,邮件会被标记为太平洋时区。鉴于前面提到的不确定性,他们提供错误时间戳的可能性不是很大吗?但说实话,我从来没有见过这种情况。
我们如何解释它们总是显示准确的时区并且从不出错的事实?
2.
这可能与(1)类似,如果是这样,请原谅。
我可以远程访问一台使用美国注册局的 IP 地址注册的服务器。但它的地理位置位于东京的 DC。如果我通过某种机制通过这台服务器访问我的 Gmail 收件箱(可能是远程 X-session?)。
我会在邮件中看到哪个时区?
问题更新:
(您甚至可以忽略前面的“问题”部分(1)和(2))
通过 Iain 的回复,我意识到我正在寻找的答案是 - “网站如何为用户提供地理定位的网络体验” 例如,来自加拿大的访问者将被重定向到 google.ca,来自印度的访问者将被重定向到 google.co.in 等等。语言甚至根据地理位置进行设置。
因此,如果我要创建一个需要为用户提供地理定位体验的网站,我必须依赖 MaxMind 等地理 IP 数据库。所以我仍然有出错的可能,对吧?而像 Google 和 Facebook 这样的网站能够保持地理 IP 的准确性,是因为它们拥有丰富的服务资源以及从最终用户收集数据的方式,对吧?
答案1
虽然无法保证地理定位 IP 地址的准确性,但它们通常比您想象的更准确。由于这个原因,您的问题的其余部分有点毫无意义。同样,您假设地理定位 IP 地址用于显示时间信息,但事实并非总是如此。
比如,当我通过连接到位于加拿大的 VPN 访问 Gmail 时,我的邮件会被标记为 ETC。当我连接到位于美国的 VPN 时,邮件会被标记为太平洋时区。
Gmail 不会这样做。GMail 使用您使用的计算机的时区偏移设置,而不是您连接的地理定位 IP 地址。Facebook 也一样。这很容易测试。
从上面可以得出,当使用东京的远程计算机时,如果系统的时区设置为东京,则 GMail 将显示东京的时间。
虽然 GMail 不会使用您连接的地理定位 IP 地址来设置电子邮件的日期,但其他服务会使用它为您提供地理定位体验。例如,Google 搜索将为您提供地理定位服务。
答案2
序言:这是一个讨论的开始,而不是真实的答案。实际上并没有回答问题的技术方面,但我相信它可能会让您了解为什么 GeoIP 或类似服务对大公司来说并不那么重要。
问题中提到的两家服务提供商 Google 和 Facebook 是互联网领域目前覆盖范围最广、最深入的公司。如果有一家公司拥有关于其客户从哪里连接的可靠知识库,那么它们就是最热门的候选人。
您是否注意到有多少人将各种与地理相关的内容添加到他们的所有帖子中?Facebook 总是要求您在发布的任何内容中添加地址或位置?人们愿意提供有关其行踪的正确信息是最好的基础来源,任何良好的统计方法都可以在此基础上做出准确的假设。
谷歌
Google 无处不在 - 不仅仅是可见的他们通过浏览器窗口提供的服务。以无处不在的 Android 手机、平板电脑和大量其他小工具为例,它们要求您提供您的位置(并承诺匿名 - 在这种情况下为什么不呢,他们只需要 IP 相关内容和您的位置的组合)。广告和分析服务为遍布全球的网站、其用户和...是的,任何可用的位置信息之间提供了非常有价值的链接。您实际上不必监视人们,拥有如此优质和广泛的服务可以更轻松地添加必要的二加二在 Google 数学大脑校园中。
答案3
你似乎对注册表的工作原理感到困惑。IP 地址范围(请注意,我们谈论的是地址此处 - 不是 IP名称非常不同的)可以由不同地理位置的注册商来维护 - 但这种情况极为罕见 - 因为这也是有关将数据包路由到网络的信息来源。
如果你查看 whois 记录,你会看到它包含该国家/地区的 ISO-3166 代码。例如
[colin@localhost ~]$ whois 82.13.151.104
% This is the RIPE Database query service.
[剪辑]
inetnum: 82.13.144.0 - 82.13.175.255
netname: INFRASTRUCTURE
descr: NTL Infrastructure - Watford
country: GB
admin-c: NNMC1-RIPE
tech-c: NNMC1-RIPE
status: ASSIGNED PA
mnt-by: AS5089-MNT
remarks: INFRA-AW
source: RIPE # Filtered
可以根据跟踪路由信息推断有关 IP 地址位置的更多信息 - 延迟是距离的指标 - 并且它应该逐渐接近(地理上)目标。
但如果我的唯一目标是在客户端显示时间,那么我就不会使用这种方法(除非作为后备) - javascript 知道如何将 UTC / GMT 时间转换为本地时区(尽管它实际上并没有透露该时区是什么 - 至少没有明确透露)。
此外,如果您可以访问 javascript,那么您可以使用地理位置 API 来获取更精确的位置。
答案4
这个问题很有趣。我对 Gmail 不太熟悉,所以我将提供部分背景信息:
"3.3. Date and Time Specification
Date and time occur in several header fields. This section specifies the syntax
for a full date and time specification.
[...]
The day is the numeric day of the month. The year is any numeric year 1900
or later.
The time-of-day specifies the number of hours, minutes, and optionally seconds
since midnight of the date indicated.
The date and time-of-day SHOULD express local time.
The zone specifies the offset from Coordinated Universal Time (UTC, formerly
referred to as "Greenwich Mean Time") that the date and time-of-day represent."
因此,每个邮件服务器都会向每封传递的邮件添加一个标头值,其中包含根据该服务器的时间和 UTC 偏移量。
客户端随后查看其自己的邮件主机添加的时间戳,并根据客户端本身配置的时区重新解释它。
如果还使用 IP 地址地理定位,这将超出 Internet 消息格式规范。我自己从未见过电子邮件客户端/服务器设置使用地理定位,但我很想知道是否有人见过。