本发明涉及ip地址定位
技术领域:
,特别是一种ip地址区县街道级定位方法。
背景技术:
:ip地址定位是指根据网络设备的ip地址确定其在地理上的位置。在研究中,通常将具有ip地址的网络设备划分为测量点、基准点和待测点三类,其中测量点是指能向目的ip发起主动测量的网络设备,基准点是指地理位置已知且可对测量点所发数据包做出响应的网络设备,而待测点则是指需要实现地理位置定位的ip地址,即待定位的网络设备。目前,传统的ip地址定位算法总体上可分为基于推测和基于时延两类。前者一般通过查询whois数据库,或直接根据主机名来推测当前ip地址对应设备的位置。而基于时延的定位算法是结合网络拓扑信息,通过测定目标主机到测量点的时延,来估测目标主机的地理位置。基于推测的ip地址定位算法按照思路的不同可以分为三类。第一类算法是直接在ip地址库中查找目的ip,根据ip地址对应的主机名、行政区等信息,从而推测其所在的地理位置,此类代表算法有ip2ll(ip2ll.iptolatitude/longitudeserver[db/ol].2019,https://www.iptolatlng.com)和netgeo(moored.whereintheworldisnetgeo.caida.org?[c].internetsocietyconference,isoc,2000)等。第二类是基于主机名和数据库信息的ip地址定位算法。如padmanabhanvn等人提出的geotrack算法(padmanabhanvn,subramanianl.aninvestigationofgeographicmappingtechniquesforinternethosts[j].acmsigcommcomputercommunicationreview,2001,31(4):173-185),visualroute算法(visualroute.visualwareinc[db/ol].2019,https://www.visualroute.com),gtrace算法(nemethe.gtrace-agraphicaltraceroutetool[c].usenixconferenceonsystemadministration,usenixassociation,1999)和neotrace算法(neotrace.geographicaldisplayoftraceroute,whoisandping[db/ol].2019,https://www.neoworx.com)等。除了将主机名纳入考虑因素外,第三类基于网络结构和数据库信息的ip地址定位算法,是通过将ip地址分配的层次结构特点与ip地址库信息相结合,来实现对ip地址所处位置的粗粒度定位,其中的典型算法为geocluster算法(padmanabhanvn,subramanianl.aninvestigationofgeographicmappingtechniquesforinternethosts[j].acmsigcommcomputercommunicationreview,2001,31(4):173-185)。基于时延的ip地址定位算法主要是通过发起主动测量,得到测量点至待测点间的时延,并结合数学方法或网络拓扑等多要素,来实现待测点地理位置的定位。从原理上进行区分,基于时延的ip地址定位算法可以分为基于空间理论和基于概率估计两类。基于空间理论的ip地址定位算法是通过时延与地理距离间的映射关系,来计算测量点到待测点间的距离,从而进一步确定待测点的地理位置。如2001年提出的geoping算法(padmanabhanvn,subramanianl.aninvestigationofgeographicmappingtechniquesforinternethosts[j].acmsigcommcomputercommunicationreview,2001,31(4):173-185),katz-bassette等人提出的shortestping算法(katz-bassette,johnjp,krishnamurthya,etal.towardsipgeolocationusingdelayandtopologymeasurements[c].proceedingsofthe6thacmsigcommconferenceoninternetmeasurement2006,acm,2006),gueyeb等人提出的cbg算法(gueyeb,ziviania,crovellam,etal.constraint-basedgeolocationofinternethosts[c].acmsigcommconferenceoninternetmeasurement,acm,2004)等。与基于空间理论的ip地址定位算法略有不同,基于概率估计的ip地址定位算法则是通过统计科学理论,分析时延与地理距离间的分布关系,来对ip地址进行定位。如erikssonb等人提出的基于贝叶斯估计的ip地址定位算法(erikssonb,barfordp,sommersj,etal.alearning-basedapproachforipgeolocation[c].11thpassiveandactivemeasurementconference2010,springer,2010),mazikuh等人提出的elc算法(mazikuh,shettys,hank,etal.enhancingtheclassificationaccuracyofipgeolocation[c].2012ieeemilitarycommunicationsconference(milcom2012),ieee,2012)和laki等人提出的spotter算法(laki,sándor,mátray,péter,hága,péter,etal.spotter:amodelbasedactivegeolocationservice[j].2011proceedingsieeeinfocom,2011:3173-3181)等。目前,传统ip地址定位算法定位精度大多仅停留在城市级,定位精度低,不能满足实际应用的需求。技术实现要素:本发明提出了基于邻居关系的ip地址定位方法,解决现有技术定位精度低的问题。实现本发明的技术解决方案为:基于邻居关系的ip地址定位方法,具体步骤为:步骤1、根据主动测量数据,定义ip地址关联度、路由路径关联度、时延关联度和路由跳数关联度;步骤2、根据ip地址四段关联度、路由路径关联度、时延关联度和路由跳数关联度,定义ip地址的邻居关系;步骤3、根据ip地址的邻居关系,计算待定位ip地址的邻居节点;步骤4、根据改进的质心法,确定待定位ip地址所处的区县街道。本发明与现有技术相比,其显著优点为:(1)定义的邻居关系考虑了ip地址分配在地理上的聚集特性,以及网络拓扑结构,改进了传统算法仅仅考虑时延所存在的不足。(2)结合空间几何的知识,实现了对ip地址所处区县街道的更高精度定位。下面结合附图对本发明做进一步详细的描述。附图说明图1为本发明基于邻居关系的ip地址定位方法的示意图。图2为本发明步骤4中改进的质心法的示意图。图3为本发明实施例1所得到的定位误差分布情况示意图。其中横坐标为待测点序号,纵坐标为定位误差,单位为千米。图中,有56个待测点定位误差小于2千米,有69个待测点定位误差小于5千米,有90%的待测点定位误差小于20千米。具体实施方式基于邻居关系的ip地址定位方法,具体步骤为:步骤1、根据主动测量数据,定义ip地址关联度、路由路径关联度、时延关联度和路由跳数关联度,具体步骤为:步骤1.1、以本机为测量点,已知经纬度的ip地址为基准点,待定位的ip地址为待测点,通过traceroute命令,采集测量点到基准点和待测点的路由路径、时延和路由跳数;步骤1.2、将ip地址以“.”字符为分隔符,分割为{ip1,ip2,ip3,ip4}四段,定义ip地址每段间的距离为:distk(i,j)=ipik⊕ipjk式中,ipik表示待测点i的第k段ip地址,ipjk表示基准点j的第k段ip地址,distk(i,j)即表示这两段ip地址间的距离。根据distk(i,j),定义ip地址第k段的关联度为:iprelek(i,j)=28-1-distk(i,j)式中,k∈{1,2,3,4};步骤1.3、定义待测点i和基准点j路由路径间的关联度为:routerele(i,j)=length(lcs(routeseqi,routeseqj))式中,routeseqi为测量点向待测点i发起测量时,traceroute追踪到的路由路径,routeseqj为同一测量点向基准点j发起测量时,traceroute追踪到的路由路径,lcs(routeseqi,routeseqj)为routeseqi和routeseqj的最长公共子序列,路由路径关联度表示为两条路由路径间最长公共子序列的长度;步骤1.4、定义待测点i和基准点j在时延上的关联度为:delayrele(i,j)=|delaysumi-delaysumj|式中,delaysumi为测量点到待测点i的时延,delaysumj为同一测量点到基准点j的时延;步骤1.5、定义待测点i和基准点j在路由跳数上的关联度为:hoprele(i,j)=|routenumi-routenumj|式中,routenumi为测量点到待测点i的路由跳数,routenumj为同一测量点到基准点j的路由跳数。步骤2、根据ip地址四段关联度、路由路径关联度、时延关联度和路由跳数关联度,定义ip地址的邻居关系,具体步骤为:步骤2.1、定义待测点i的邻居关系计算式为:neighbour(i,j)=g(ω1iprele1(i,j)+ω2iprele2(i,j)+ω3iprele3(i,j)+ω4iprele4(i,j)+ω5routerele(i,j)+ω6delayrele(i,j)+ω7hoprele(i,j)+b)式中,g为回归函数,ωμ代表求解后第μ个特征的系数,且有1≤μ≤7,b为常数项;步骤2.2、设定地理距离阈值distanceδ,若待测点i和基准点j间满足:neighbour(i,j)≤distanceδ则称基准点j和待测点i间存在邻居关系。步骤3、根据ip地址的邻居关系,计算待定位ip地址的邻居节点,具体步骤如下:步骤3.1、对iprelek(i,j)进行标准化处理:式中,k∈{1,2,3,4};对routerele(i,j)进行标准化处理:对delayrele(i,j)进行标准化处理:对hoprele(i,j)进行标准化处理:式中,max和min分别为对应关联度的最大值和最小值;步骤3.2、对于待测点i与基准点j的经纬度(loni,lati)和(lonj,latj),计算其在地理上的距离:式中,r为地球半径。通过随机森林回归拟合,使neighbour(i,j)的值符合distance(i,j),并且损失函数最小。拟合后,根据邻居关系计算得到的neighbour(i,j)若满足neighbour(i,j)≤distanceδ,则基准点j是待测点i的邻居节点;步骤3.3、对于与待测点i处于相同城市记得基准点集合p,计算其中每一个基准点j与待测点i的neighbour(i,j),得到与待测点i满足邻居关系的基准点j′集合p′,且步骤4、根据改进的质心法,确定待定位ip地址所处的区县街道,具体步骤为:步骤4.1、对于p′中的每一个基准点j′,将其按照neighbour(i,j′)的值进行升序排列,rankj′表示基准点j′在集合p′中的排名,toleranceδ表示预先设定的容忍度阈值,那么确定待测点位置的步骤如下:(1)、|p′|=0时,以集合p中neighbour(i,j)的值最小的基准点j的位置作为待测点i的定位;(2)、|p′|≥0,并且rankj′=1的基准点j′,其neighbour(i,j′)≤toleranceδ,则取当前基准点j′的位置作为待测点i的定位;(3)、|p′|=2,并且对于p′中的基准点a有ranka=1且neighbour(i,a)>toleranceδ,对于p′中基准点b有rankb=2且neighbour(i,b)≥neighbour(i,a)时,分别以基准点a和b为圆心,neighbour(i,a)和neighbour(i,b)为半径作圆cira和cirb,则有:1)、若圆cira和cirb相离,则以基准点a和b的连线中点作为待测点i的定位;2)、若圆cira和cirb相切,则以切点位置作为待测点i的定位;3)、若圆cira和cirb相交且交点为inta和intb,则以基准点a和b的连线,与inta和intb的连线的交点作为待测点i的定位;(4)、|p′|>2,并且对于tanka=1的基准点a,其neighbour(i,a)>toleranceδ时,取p′中满足rankj′∈{1,2,3}的三个基准点a、b和c,采用改进的质心法获得待测点i经纬度,即分别连接基准点a和b得到线段ab,连基准点b和c得到线段bc,连接基准点a和c得到线段ac,在ab上取点d,bc上取点e,ac上取点f,使得:取点d、e和f围成的三角形的质心作为待测点i的定位:式中,loni和lati为待测点i经纬度,lond和latd为点d经纬度,lone和late为点e经纬度,lonf和latf为点f经纬度;步骤4.2、将步骤4.1中得到的待测点i经纬度通过百度地图地理编码api获得地理位置描述,确定待测点i所处的区县街道。下面结合实施例进行更详细的描述。实施例1基于邻居关系的ip地址定位方法,具体步骤为:步骤1、根据主动测量数据,定义ip地址关联度、路由路径关联度、时延关联度和路由跳数关联度,具体步骤为:步骤1.1、以南京市内ip地址为测量点,选取了盐城市内若干ip地址作为基准点,同时从盐城市内选取100个除基准点外的ip地址作为待测点,通过traceroute命令,采集测量点到基准点和待测点的路由路径、时延和路由跳数;表1部分主动测量数据步骤1.2、将ip地址以“.”字符为分隔符,分割为{ip1,ip2,ip3,ip4}四段,定义ip地址每段间的距离为:distk(i,j)=ipik⊕ipjk式中,ipik表示待测点i的第k段ip地址,ipjk表示基准点j的第k段ip地址,distk(i,j)即表示这两段ip地址间的距离。根据distk(i,j),定义ip地址第k段的关联度为:iprelek(i,j)=28-1-distk(i,j)式中,k∈{1,2,3,4};步骤1.3、定义待测点i和基准点j路由路径间的关联度为:routerele(i,j)=length(lcs(routeseqi,routeseqj))式中,routeseqi为测量点向待测点i发起测量时,traceroute追踪到的路由路径,routeseqj为同一测量点向基准点j发起测量时,traceroute追踪到的路由路径,lcs(routeseqi,routeseqj)为routeseqi和routeseqj的最长公共子序列,路由路径关联度表示为两条路由路径间最长公共子序列的长度;步骤1.4、定义待测点i和基准点j在时延上的关联度为:delayrele(i,j)=|delaysumi-delaysumj|式中,delaysumi为测量点到待测点i的时延,delaysumj为同一测量点到基准点j的时延。步骤1.5、定义待测点i和基准点j在路由跳数上的关联度为:hoprele(i,j)=|routenumi-routenumj|式中,routenumi为测量点到待测点i的路由跳数,routenumj为同一测量点到基准点j的路由跳数。步骤2、根据ip地址四段关联度、路由路径关联度、时延关联度和路由跳数关联度,定义ip地址的邻居关系,具体步骤为:步骤2.1、定义待测点i的邻居关系计算式为:neighbour(i,j)=g(ω1iprele1(i,j)+ω2iprele2(i,j)+ω3iprele3(i,j)+ω4iprele4(i,j)+ω5routerele(i,j)+ω6delayrele(i,j)+ω7hoprele(i,j)+b)式中,g为回归函数,ωμ代表求解后第μ个特征的系数,且有1≤μ≤7,b为常数项。步骤2.2、地理距离阈值distanceδ=50,单位为千米。若待测点i和基准点j间满足:neighbour(i,j)≤distanceδ则称基准点j和待测点i间存在邻居关系。步骤3、根据ip地址的邻居关系,计算待定位ip地址的邻居节点,具体步骤如下:步骤3.1、对iprelek(i,j)进行标准化处理:式中,k∈{1,2,3,4};对routerele(i,j)进行标准化处理:对delayrele(i,j)进行标准化处理:对hoprele(i,j)进行标准化处理:式中,max和min分别为对应关联度的最大值和最小值。步骤3.2、对于待测点i与基准点j的经纬度(loni,lati)和(lonj,latj),计算其在地理上的距离:式中,r为地球半径。表2部分基准点经纬度ip纬度经度222.188.95.23132.84337120.293222.188.96.4334.29041120.1081222.188.97.25533.99851119.8484222.188.102.6733.47256119.7989222.188.104.9133.79294119.8126222.188.80.11133.36447120.043222.188.82.6333.99381119.838222.188.86.23134.00183119.8494222.188.87.6332.74801120.8551222.188.88.7532.86922120.3257通过随机森林回归拟合,使neighbour(i,j)的值符合distance(i,j),并且损失函数最小。拟合后,根据邻居关系计算得到的neighbour(i,j)若满足neighbour(i,j)≤distanceδ,则基准点j是待测点i的邻居节点。表3部分标准化后的数据步骤3.3、对于与待测点i处于相同城市记得基准点集合p,计算其中每一个基准点j与待测点i的neighbour(i,j),得到与待测点i满足邻居关系的基准点j′集合p′,且步骤4、根据改进的质心法,确定待定位ip地址所处的区县街道,具体步骤为:步骤4.1、对于p′中的每一个基准点j′,将其按照neighbour(i,j′)的值进行升序排列,rankj′表示基准点j′在集合p′中的排名,toleranceδ表示预先设定的容忍度阈值,实例中取toleranceδ=2,单位为千米,那么确定待测点位置的步骤如下:(1)、|p′|=0时,以集合p中neighbour(i,j)的值最小的基准点j的位置作为待测点i的定位。(2)、|p′|≥0,并且rankj′=1的基准点j′,其neighbour(i,j′)≤toleranceδ,则取当前基准点j′的位置作为待测点i的定位。(3)、|p′|=2,并且对于p′中的基准点a有ranka=1且neighbour(i,a)>toleranceδ,对于p′中基准点b有rankb=2且neighbour(i,b)≥neighbour(i,a)时,分别以基准点a和b为圆心,neighbour(i,a)和neighbour(i,b)为半径作圆cira和cirb,则有:1)、若圆cira和cirb相离,则以基准点a和b的连线中点作为待测点i的定位;2)、若圆cira和cirb相切,则以切点位置作为待测点i的定位;3)、若圆cira和cirb相交且交点为inta和intb,则以基准点a和b的连线,与inta和intb的连线的交点作为待测点i的定位。(4)、|p′|>2,并且对于ranka=1的基准点a,其neighbour(i,a)>toleranceδ时,取p′中满足rankj′∈{1,2,3}的三个基准点a、b和c,采用改进的质心法获得待测点i经纬度,即分别连接基准点a和b得到线段ab,连基准点b和c得到线段bc,连接基准点a和c得到线段ac,在ab上取点d,bc上取点e,ac上取点f,使得:取点d、e和f围成的三角形的质心作为待测点i的定位:式中,loni和lati为待测点i经纬度,lond和latd为点d经纬度,lone和late为点e经纬度,lonf和latf为点f经纬度。步骤4.2、将步骤4.1中得到的待测点i经纬度通过百度地图地理编码api获得地理位置描述,确定待测点i所处的区县街道。表4区县街道级定位结果横向对比部分待测点的定位结果如表4所示。由表4的定位结果对比可知,在区县级定位上,本发明的定位结果与主流ip地址库结果基本一致,并且本发明的定位精度更高,可以实现对于ip地址所处街道的定位。当前第1页12