根据用户IP查找最近的服务器?

时间:2011-09-17 21:37:14

标签: perl ip

用户将文件上传到我的服务器。在perl中,如果给出服务器ips列表和用户ip,我怎么能检测哪个服务器最合适呢?我看着MaxMind,但它只会告诉我ips的位置。我怎样才能找到最近的一个?

4 个答案:

答案 0 :(得分:3)

也许我错过了一些东西,但是

如果您知道IP(服务器和用户通过MaxMind)的位置,只需计算每个服务器IP与用户IP之间的距离,并选择最小的...

编辑 - 根据评论:

物理距离并没有太多关于性能... OTOH用于测量/比较性能,您需要在用户和服务器之间发送测试数据包然后比较/决定...

编辑2 - 根据评论:

如果每个大陆只有一台服务器,那么计算相当容易......检查用户IP的大陆并相应地选择服务器,因为通常可以非常安全地确定与用户不同的大陆上的服务器表现得更糟......

答案 1 :(得分:1)

您是否需要最近的服务器或最快的服务器?

如果您需要找到性能最佳的服务器,您可能需要发送一个测试数据包并获得每个服务器的响应时间以便找到它。

如果您需要找到最近的,那么您可以计算每个目的地之间的跳数以选择最接近的。

PS:我不熟悉perl,为你提供perl特定的命令。

答案 2 :(得分:0)

如果他们要多次执行此操作,您可以记录所有上传的IP(或C类块),然后从每个服务器运行一次性traceroute / ping,并保留该值以供下次使用他们上传。

答案 3 :(得分:0)

如果它是您所追求的实际地理位置,那么无法通过IP地址可靠地确定,尽管您可以使用DNS或第三方服务(例如MaxMind)进行启发式测试。

但是,如果你是在最短的网络距离之后,这是预期响应时间的一些指示,那么你可以检查数据包标题的TTL字段:较低的TTL意味着数据包走得更远。它并非万无一失,因为不同的操作系统供应商使用不同的默认TTL,但它是一种选择。