来自 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. 使用MSBuild Tools调用csproj项目文件发布网站时$(SolutionDir)宏参数值丢失为空的解决方案

    使用Visual Studio打开解决方案,对<网站项目>右键点击<发布>,一切都是正常的,所有宏都可用,宏参数值也是正确的. 而通过批处理脚本命令调用MSBuild.exe对 ...

  2. 使用 lsyncd 同步文件

    https://unix.stackexchange.com/questions/307046/real-time-file-synchronization https://github.com/ax ...

  3. 在自定义目录下,按日期创建excel文件

    在指定文件目录下,新建以当前日期命名的excel 文件,如果文件已经存在,在文件中新建一个sheet页来存放数据 import datetime import xlrd, xlwt import re ...

  4. js 对url进行某个参数的删除,并返回url

    两种情况 1对当前页面的url进行操作 function funcUrlDel(name){ var loca = window.location; var baseUrl = loca.origin ...

  5. fastjson的简单使用

    实习初期,开始接触到系统的后台日志查询展示到前台,后台将查询到的数据转化成json格式返回前台,发现系统使用的是阿里的fastjson,于是想来了解一下fastjson的使用. 以下使用都是基于这个版 ...

  6. RC4加密解密

    package util; public class RC4Util { public static String decry_RC4(byte[] data, String key) { if (d ...

  7. Linux查看当前目录下文件名中包含指定字符的文件

    find . -type f -name "edaijia* 结果:

  8. 关于Excel报错

    今天,用POI做一个Excel的导出时,总是报空指针错误.后来经过我仔细的查找翻阅日志才发现问题的真正所在: 报错如下: HTTP Status 500 - Request processing fa ...

  9. 后台获取POST方式提交的JSON格式数据

    1.直接使用request.getParamater()的方法获取(这种取参方式对于POST和GET的提交方式均适用): 2.通过请求体的IO流获取参数(这种方式只能用于POST,因为GET方式没有请 ...

  10. Table组件设置文字超出宽度显示省略号,鼠标悬停以悬浮框显示

    一.设置文字超出宽度显示省略号 注意点: 1.  需要指定column的width属性,否则列头跟内容可能不对齐.需要留一列不设置宽度以适应弹性布局. 2. 列宽度width必须大于ellipsis的 ...