来自 https://mp.weixin.qq.com/s/aOZQGMnMI2nkX4-qcJL4WQ

读者

不是说mac地址是计算机网卡唯一的地址吗?这样不是可以直接定位到某一台机器吗?为什么要用IP地址啊?是因为服务器历史记录只会存储IP地址还是什么原因阿?求大神解释一下~

大家还记得抓获“甘肃白银案”主犯的过程的来龙去脉吗?

白银警方一直握有案犯的DNA信息,而DNA信息是每个人唯一拥有的,那问题来了,既然DNA信息唯一识别一个人,警方为何那么多年却一直不能锁定案犯?

答案很简单,因为DNA信息库没有世间所有人的DNA信息。如果有,相信案犯绝不会多年逍遥于法网之外。。。

谁曾想案犯的远房亲戚犯事被抓进去了,提取了DNA信息。并把DNA信息录入了信息库,就是把案犯的DNA信息与其本人的身份证ID联系了起来。警方破案时,可以根据嫌疑人现场遗留DNA信息,如果在信息库里比对成功,就可以锁定嫌疑人。

白银警方没有放弃努力,一直用案犯DNA信息去比对DNA信息库。

有一天长时间的匹配查询之后,电脑上留下了相似度最高的一个DNA信息,不用说就是案犯的亲戚的,这一下大大缩小了排查范围。警方经过大量的排查工作,最终成功锁定嫌疑人,并于白银市工业学校一小卖部内将犯罪嫌疑人抓获。

为何不使用MAC地址而使用IP地址来定位位置信息?

MAC地址和IP地址在全球范围内都是唯一的,按理说都可以用来定位计算机的位置,但是目前全球范围内,并没有MAC地址与物理位置的一一对照数据库。

建MAC地址与位置信息库很难吗?

是的,销售商把电脑卖给用户时,可以轻松获得用户ID、电脑MAC对应关系,但是用户是在中国用,还是拿到非洲用,销售商无从知道,所以这个库是不可能建立起来的。

IP地址建库更可行

IP地址属于运营商的资产,运营商很容易将属于自己的IP资产与地理位置绑定起来,运营商可以将一段段的IP地址绑定到某台物理设备上,于是就生成了IP地理信息库(GeoIP),当把全球的IP地理信息库融合为一体,就可以根据用户的IP来粗略获得用户的位置信息。

读者肯定有一个大大的问题,那服务器到底可以获得客户端计算机网卡的MAC地址吗?

如果按照OSI参考模型的通信模式,服务器无法获得客户端网卡的MAC地址。

因为MAC地址位于数据链路层,本地数据链路层会被本地网关终结(Termination),然后网关提取出IP报文及以上(此时已经没有链路层的信息了),将IP报文朝着终点的方向继续中继,所以服务器可以轻松获得客户端的IP,却看不到客户端MAC地址的影子。

难道服务器就没任何办法获得计算机网卡的MAC地址?

只要有客户端的全力支持与配合这个也不难,既然数据链路层无法获得客户端的MAC地址,那能否让客户端将自己的网卡MAC地址、操作系统版本号、显卡序列号、硬盘序列号提取出来,包装在应用层的报文里传输给服务器?这些信息只要操作系统通过系统函数开放出来,应该不难获得。

上文说了,可以通过网络层的IP地址来粗略定位用户位置信息,服务器获得用户IP地址易如反掌。但是却不能依赖IP地址来锁定一台计算机、或者一个用户!

智能手机在家、在地铁、在公司、在商场,随着连接WIFI热点不断变化,手机的IP也在不断变化着,只能依赖IP地理信息库找到IP地址与位置的对应的关系。

无论手机移动到哪里,手机的MAC地址却是不变的,完全可以利用这种唯一性来锁定一台手机(移动计算机)、进而锁定一个用户。

锁定用户有什么好处?

在广告无处不在的互联网生态里,如何唯一锁定用户(用MAC地址唯一识别),并积累用户喜好(搜索引擎),为每一个用户建立一个个人喜好数据库,那么下次用户登录网站时,广告商立马就可以知道是哪个用户了。哦,原来是“王小胖”,王小胖喜欢旅游与美食,那就有针对性地推送“旅游度假”的广告,广告转化为money的概率更高。

上文说了,依赖IP来定位用户位置,最多得到的是一个大概位置,源于IP地理信息库的不准确。如果用户使用代理服务器,服务器看到的是代理服务器的IP,服务器得到的是代理的位置信息,而不是用户的位置信息。

有一次在上海的办公室查询自己的IP,发现位于美国,因为是美国的公司,上海办公室访问Internet全部通过美国公司总部出口,自然就是美国出口的位置了。

准确的客户端位置定位,需要计算机上的GPS硬件接收器的配合,把计算机的实时经纬度信息,上传给服务器,然后服务器将位置信息反馈给客户端,这是当前的APP实现方式。

如果亲爱的朋友们喜欢这篇文章,转发给您身边的朋友们阅读,这是对作者最大的支持,谢谢!

转:为什么根据IP地址查询物理所在地,而不是mac地址?的更多相关文章

  1. 交换机的端口状态是UP,但是查询该端口下的MAC地址为空

    (电脑已关机)电脑与交换机直连的端口状态 还是 UP ,但是 查询该端口下的 MAC地址为空. 初步怀疑原因: Wake-on-LAN(电脑关机,网卡还在工作) Wake-On-LAN简称WOL,是一 ...

  2. MAC地址与IP地址的区别

    介绍一下MAC地址的知识,MAC地址和IP地址的区别以及MAC地址在实际应用中所涉及到的安全问题. 一.基础知识 如今的网络是分层来实现的,就像是搭积木一样,先设计某个特定功能的模块,然后把模块拼起来 ...

  3. 网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?

    1.前言 标题虽然是为了解释有了 IP 地址,为什么还要用 MAC 地址,但是本文的重点在于理解为什么要有 IP 这样的东西.本文对读者的定位是知道 MAC 地址是什么,IP 地址是什么. (本文同步 ...

  4. IP地址和MAC地址绑定的必要性

    计算机网络是一个共通的网络,世界上任何计算机都可以互相访问. 实现的原理基于网络通讯的互联网交互五层模型. 计算机网络的历史发展 当计算机网络技术初始利用的时代,几台计算机通过集线器连接,就可以实现网 ...

  5. 如果重新设计网络,有没有可能合并IP地址跟MAC地址?

    前阵子看网络基础相关的书籍,冒过一个疑问,为什么要有MAC地址跟IP地址?两者可否合二为一?   现在的逻辑是这样子:在数据传输过程中,路由器查看这个数据包的IP地址,跟路由表中记录的“IP集合:下一 ...

  6. Linux 获取本机IP、MAC地址用法大全

    getifaddrs()和struct ifaddrs的使用,获取本机IP ifaddrs结构体定义如下: struct ifaddrs { struct ifaddrs *ifa_next; /* ...

  7. 使用ARP获取局域网内设备IP和MAC地址

    根据Arp列表数据,查询本地设备在线状态 使用 arp -a 获得所有内网地址,首先看Mod对象 public struct MacIpPair { public string HostName; p ...

  8. 为什么既要有IP地址还要有MAC地址

    在脑海中一直有个疑问,在网络上发送信息的时候为什么既要有IP地址还要有MAC地址,IP是唯一的,MAC地址也是唯一的,用一个难道不行么? 既然每个以太网设备在出厂时都有一个唯一的MAC地址了,那为什么 ...

  9. C#获取路由器外网IP,MAC地址

    C#实现的获取路由器MAC地址,路由器外网地址.对于要获取路由器MAC地址,一定需要知道路由器web管理系统的用户名和密码.至于获取路由器的外网IP地址,可以不需要知道路由器web管理系统的用户名和密 ...

随机推荐

  1. Oracle免安装绿色版-PLSQL连接报12154

    在环境变量添加 TNS_ADMIN  值是你的免安装客户端中sqlnet.ora   tnsnames.ora 所在的目录 参考地址:https://blog.csdn.net/feng_na/art ...

  2. Oarcle 之DML

    DML:数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT.UPDATE.DELETE三种指令为核心 ...

  3. 对比剖析Swarm Kubernetes Marathon编排引擎

    Docker Native Orchestration 基本结构 Docker Engine 1.12 集成了原生的编排引擎,用以替换了之前独立的Docker Swarm项目.Docker原生集群(S ...

  4. Echarts 柱状图配置详解

    1.基本柱状图 // 指定图表的配置项和数据 var option = { // ---- 标题 ----- title: { text: '主标题', textStyle: { color: 're ...

  5. LOJ #10070 最小生成树计数

    一道mst-- 最开始是毫无头绪,于是就点开了--->题解 大部分题解都是矩阵树--然而第一篇题解告诉了我们暴搜也能过( 思路大概是说,对于一个图\(G\),它的所有最小生成树的相同权值的边的数 ...

  6. ColumnStore完整验证指南之安装与启动停止

    官方文档https://mariadb.com/kb/en/library/mariadb-columnstore/ 推荐使用最新1.2.x最新版本. 先决条件 yum -y install boos ...

  7. 立即执行函数(自执行函数) IIFE

    // 最常用的两种写法 (function(){ /* code */ }()); // 老道推荐写法 (function(){ /* code */ })(); // 当然这种也可以 // 括号和J ...

  8. msgid 属性

    Android源码中的String.xml文件,msgid这个属性是干嘛的? 全局资源,方便引用.比如在布局的text和activity中用到.

  9. 解决Win10 PowerShell无法激活Anaconda环境的问题

    最近在使用Anaconda的过程中,发现在Win10的PowerShell在使用conda activate 环境名激活环境时无效,而CMD则可以.这里前提必须将Anaconda 写入环境变量.否则在 ...

  10. server.Transfer不工作

    https://www.codeproject.com/Questions/56736/How-to-use-Server-Transfer-from-Ajax-UpdatePanel For Ser ...