A Learning-Based Approach for IP Geolocation

下载地址:Towards IP geolocation using delay and topology measurements | Proceedings of the 6th ACM SIGCOMM conference on Internet measurement

被引次数:185

Abstract

定位IP主机地理位置的能力对于在线广告和网络攻击诊断等应用程序是非常吸引力的。虽然先前的方法可以准确地识别主机在互联网的某些区域的位置,但当它们所基于的延迟或拓扑测量有限时,它们会产生错误的结果。我们工作的假设是,可以通过创建一个能够适应不同类型的地理位置信息的灵活的分析框架来提高IP地理位置的准确性。

在本文中,我们描述了一个新的IP地理定位框架,它简化为一个机器学习分类问题。我们的方法考虑了从一组已知监视器到目标的轻量级测量,然后根据从训练集中学习到的概率密度的最可能的地理区域对目标的位置进行分类。在本研究中,我们采用了一个朴素贝叶斯框架,该框架的计算复杂度较低,并且易于添加额外的环境信息,以增强分类过程。

为了证明我们的方法的可行性和准确性,我们在超过16,000个路由器上测试了IP地理定位,并给出了来自78个已知地理位置的监视器的ping测量值。

我们的结果表明,我们的方法的简单应用提高了我们数据集中识别的对96%以上的节点的地理定位精度,与之前基于约束的地理位置相比,平均精度接近真实地理位置70英里。这些结果突出了我们的方法的前景,并表明了未来分类器的扩展如何导致地理定位精度的进一步提高。

1 Introduction

有很多方法可以考虑互联网的结构和拓扑特征。对广告商、应用程序开发人员、网络运营商和网络安全分析师有重大影响的一种方法是识别互联网设备的地理位置(如路由器或结束的主机)。地理位置可以指一个设备的精确的纬度/经度坐标,或一个更粗粒度的位置,如在一个邮政编码、城市、县或国家内。

在找到一个给定的互联网设备的地理位置方面有许多挑战。最明显的是,没有一个标准的协议可以提供全球范围内任何设备的位置(尽管DNS条目可以包含一个位置记录)。此外,互联网设备通常不具备位置识别能力(例如,GPS,尽管这种情况将来可能会改变),即使有,一些人也会认为这些信息是私人的。先前的方法集中于根据互联网设备的地理位置来识别其相对于已知位置的地标的主动测量的位置。虽然这些方法已被证明能够在某些地区产生相对准确的地理估计,但由于各种原因,仍然不准确。其中最主要的事实是,全球各地的特定测量数据的密度不一致。

我们工作的目标是广泛地提高IP地理定位的准确性。我们的假设是,由不完善的测量、稀疏的测量可用性和不规则的互联网路径引起的大估计误差可以通过扩展IP地理位置中考虑的信息范围来解决。我们开发来测试这一假设的估计框架是将IP地理定位转换为一个基于机器学习的分类问题。这种可扩展的方法可以将来自多个数据集的信息融合起来,这样,从一个测量中信息内容较低的区域就可以用来自其他测量的更好的信息内容进行补偿。

为了充实这个框架,为了检验我们的假设,我们必须同时选择一种分类方法和一组可以用来估计IP地理位置的测量值。我们开发了一种朴素贝叶斯估计方法,该方法基于与该IP目标相关联的一组测量值,将一个给定的IP目标分配给一个地理分区。考虑到对IP目标的大量测量,概率似然估计简化为朴素贝叶斯方法。该框架中考虑的网络测量数据包括从一组地标到IP目标的延迟和跳数计数。我们还在框架中包括了人口密度,作为一个非网络测量的演示,可以帮助改进估计。选择这种分类器/测量组合是为了证明这种新方法的潜力,但并不意味着是明确的或全面的。

为了测试和评估我们基于学习的方法的这个初始实例的能力,我们考虑了在美国大陆的县级别上的地理划分。(在我们的框架中,根据邮政编码或城市街区的顺序进行更细粒度的划分当然是可行的,但由于测试和评估数据的可用性,我们选择了县级划分。)

虽然相当多的互联网拓扑结构位于美国大陆以外,但对该数据集的初步验证将激发未来对位于美国以外的终端主机的工作。我们在互联网上确定了114,815个空间不同节点从行星实验室节点的网格跟踪探测的目标集,来自iPlane [1]项目的补充数据,以及仔细的别名解析。对于这些目标节点的地理位置的基本真相,我们使用Maxmind数据库[2]作为我们的方法的验证集。在我们的测量中确定的114,815个IP目标节点中,有16,874个在Maxmind数据库中被确定为在美国境内,具有已知的城市位置。由于它作为一种商业产品的使用,Maxmind数据库的确切基础方法是不可用的,尽管已知已经广泛使用了用户调查地理位置信息。(由于它依赖于用户生成的数据,更新Maxmind数据库需要大量的用户调查,而这是我们基于学习的方法所不需要的。)

1. Madhyastha, H., Isdal, T., Piatek, M., Dixon, C., Anderson, T., Krishnamurthy, A., Venkataramani, A.: iPlane: An Information Plane for Distributed Services. In: USENIX OSDI 2006 (November 2006)

2. Maxmind geolocation database, http://www.maxmind.com

对于这组16K个目标节点,我们从位于美国的78个PlanetLab节点中收集了跳数计数和延迟测量值,这是我们评估的起点。

我们选择了目标节点的一个子集来训练我们的分类器,训练集节点具有对监视器的已知测量值和已知的地理位置。(在本文中,我们认为IP地址和节点是等价的,因为即使路由器上的别名解析不完善,也不应该影响我们的经验结果。)

对于其余的节点,我们将基于学习的方法和基于约束的地理位置(CBG)[3](使用ping度量的当前最先进的地理位置算法)的地理位置估计与使用Maxmind数据库发现的位置进行比较。我们发现,对于96%的节点,我们的估计器能够提供比CBG更好的位置估计值,并且平均提供的估计值距离真实位置更近70英里。我们相信,这些结果为未来发展基于学习的IP地理定位方法提供了一个令人信服的理由。

3. Gueye, B., Ziviani, A., Crovella, M., Fdida, S.: Constraint-based geolocation of internet hosts. IEEE/ACM Transactions on Networking (December 2006)

2 Learning-Based IP Geolocation

给定一个目标IP地址,我们能确定目标IP的地理位置吗?考虑一个目标IP地址,从一组已知地理位置的监视器到这个目标IP地址。为了本工作,测量集M(= {m_{1}m_{2},...,m_{M} })是来自监视器集的延迟和跳计数值的集合。没有一般性,现在考虑一组可能的县在美国大陆(C),这样的目标位于某个县c\in C,这将使根本的问题更改为,给定测量集M,我们能估计出目标IP位于哪个县c\in C吗?最好的分类器将选择目标最可能位于的县(\hat{c}),即\hat{c}=_{c\in C}^{argmax}\textrm{P(c|M)}。利用贝叶斯定理[4](P(A|B)=\frac{P(B|A)P(A)}{P(B)}),因此我们可以将分类器重申为\hat{c}=_{c\in C}^{argmax}\textrm{P(c|M)}=_{c\in C}^{argmax}\textrm{P(M|c)}P(c)。其中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/803814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ruoyi-nbcio-plus基于vue3的flowable的自定义业务单表例子的升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

SQL查询:UNION用法详解

在SQL查询中,UNION是一种非常有用的操作符,它可以将两个或多个SELECT语句的结果集合并成一个结果集。每个SELECT语句必须拥有相同数量的列,且相应的列也必须具有相似的数据类型。UNION的结果集自动去除了重复的行,如果要包含重复行…

JVM指令:方法调用之解析调用

文章目录 介绍-方法调用指令1.invokestatic静态方法测试类反编译字节码 2.invokespecial特殊方法测试类反编译字节码 3.invokeinterface接口方法测试类反编译字节码 4.invokedynamic动态调用方法测试类反编译字节码 5.invokevirtual虚方法测试类反编译字节码 介绍-方法调用指令…

[Kubernetes集群:master主节点初始化]:通过Calico和Coredns网络插件方式安装

文章目录 前置:Docker和K8S安装版本匹配查看0.1:安装指定docker版本 **[1 — 7] ** [ 配置K8S主从集群前置准备操作 ]一:主节点操作 查看主机域名->编辑域名->域名配置二:安装自动填充,虚拟机默认没有三&#xf…

程序员如何搞副业?在线教育!

程序员如何搞副业? 程序员不仅拥有将抽象概念转化为实际应用的能力,还通常具备强大的逻辑思维和问题解决能力。然而,许多程序员并不满足于仅仅在一家公司工作,他们渴望通过副业来实现个人价值的最大化,增加收入&#…

深度学习-多尺度训练的介绍与应用

一、引言 在当今快速发展的人工智能领域,多尺度训练已经成为了一种至关重要的技术,特别是在处理具有复杂结构和不同尺度特征的数据时。这种技术在许多应用中发挥着关键作用,例如图像识别、自然语言处理和视频分析等。 多尺度训练的定义 多尺…

使用C++语言构建基于mysql API的统一数据库访问接口

文章目录 基本设计理念mysql的基本API基本的demo示例自增的处理架构设计代码DataRecord接口DataRecord代码TABLE A数据结构类DBAdaptermysql Adapterbusiness层在java这种web领域的后台语言里,操作数据库的框架已经炉火纯青,非常的成熟,包括了关系型数据库和非关系型等。 关…

「44」直播间换脸,揭开神秘的面纱……

「44」换脸神器 让你瞬间秒变「明星脸」带货 DeepFace是Facebook的人脸识别系统之一,旨在在照片和视频中准确识别和标识人脸。它使用深度学习和神经网络技术来进行高度精确的人脸匹配和验证。 DeepFace利用了大量的训练数据和先进的人脸识别算法,能够…

小程序中展示富文本 图片不适配?视频不显示?

最近遇到一个问题在小程序中渲染富文本的内容,如果里面有图片和视频,渲染的时候图片大小超屏幕了,而视频完全没有显示!!! 最后通过正则匹配替换后 图片可以了视频还是不行,看了微信小程序api官…

react项目中需要条形码功能,安装react-barcode使用时报错

react项目中需要条形码功能,用yarn add安装react-barcode后,在项目中使用import Barcode from ‘react-barcode’,页面中一直白屏,加载中 查看控制台报以下错误 load component failed Error: Module "./react-barcode"…

Word 画三线表模板---一键套用

1、制作三线表 1)设置为无边框 选中表格,点击「右键」——「边框」——「无框线」。 2)添加上下边框线 选中表格后,点击【右键】——【表格属性】——【边框和底纹】,边框线选择【1.5磅】,然后点击【上框…

【数组】【最长距离】使循环数组所有元素相等的最少秒数

本文涉及知识点 数组 最长距离 LeetCode2808. 使循环数组所有元素相等的最少秒数 给你一个下标从 0 开始长度为 n 的数组 nums 。 每一秒,你可以对数组执行以下操作: 对于范围在 [0, n - 1] 内的每一个下标 i ,将 nums[i] 替换成 nums[i] …

react17+18 中 setState是同步还是异步更新

在类组件中使用setState,在函数式组件中使用hooks的useState。 setstate目录 1. 类组件1.1 react 17版本1.2 react 18版本 2、函数式组件 1. 类组件 1.1 react 17版本 参考内容:第十一篇:setState 到底是同步的,还是异步的&…

【BUG】element-ui表格中使用video标签,数据翻页,video中的视频仍然显示第一页的视频,没有重新加载

BUG描述 遇到一个问题&#xff0c;使用element-ui构建的管理端后台&#xff0c;表格里面每一行都有一个video标签&#xff0c;里面有视频&#xff0c;当我翻页了以后&#xff0c;视频不会重新加载&#xff0c;仍然显示的是第一页的视频&#xff0c;代码如下&#xff1a; <e…

24.Linux下程序调试分析工具`Valgrind`

Linux下程序调试分析工具Valgrind 文章目录 Linux下程序调试分析工具Valgrind1.基本介绍2.下载编译安装Valgrind C程序内存扫描示例reference 欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; 1.基本介绍 Valgrind是开源的Linux程序调试工…

Openstack(T)openstack event list 验证panko,显示为空

部署完panko,通过执行openstack event list 显示为空 表示没有获取到事件数据 排错思路: 1.保障ceilometer panko服务都是正常的 2.保障ceilometer 到 panko 的数据传输&#xff0c;是正确配置从采集点到存储点的 下面展示配置详情&#xff0c;执行openstack event list 事…

ROS中不同情况下配置文件的编写

配置文件 话题中自定义msg1. 编写msg2. 编辑package.xml3. 编辑CMakeLists.txt4. 编译5. 使用5. 在其他功能包中调用msg5.1 编辑package.xml5.2 编辑CMakeLists.txt 服务中自定义srv1. 编写srv2. 其他 调用头文件1. 编写头文件2. (可选&#xff0c;为了编程时有代码提示)3. 编写…

opencv+python(二值化图像)

1、全局二值化&#xff1a;将图像全部变成两种值&#xff0c;比如&#xff1a;0&#xff0c;255 threshold(src: ndarray&#xff08;图像&#xff0c;最好是灰度图&#xff09; thresh: float,&#xff08;阙值&#xff09; maxval: float,&…

function 包装器 ——C++新特性(二)

文章目录 包装器function包装器可以包装可调用对象其他使用示例 &#x1f396; 博主的CSDN主页&#xff1a;Ryan.Alaskan Malamute &#x1f4dc; 博主的代码仓库主页 [ Gitee ]&#xff1a;ryanala [GitHub]&#xff1a; Ryan-Ala 包装器 function 使用 function包装器…

身份证二、三、四要素实名认证接口、C#开发示例

在瞬息万变的网络时空&#xff0c;每一次点击&#xff0c;每一份交易都离不开对“你是谁”的确认。想象一下&#xff0c;当我们畅游在网络的海洋中&#xff0c;无论是注册心仪已久的APP还是在线办理重要的业务&#xff0c;甚至是在虚拟世界中结交新朋友等活动时&#xff0c;只需…