来自 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. 2018-2019-2 20165305《网络攻防技术》Exp5 MSF基础应用

    1. 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如ms08_067; (1分) 1.2 一个针对浏览器的攻击, ...

  2. Comparing Spring AOP and AspectJ

    AOP 概念 在我们开始之前 , 让我们做一个快速.高级别审查的核心术语和概念 : 方面 — —标准 / 特征代码被分散在多个场所中的应用 , 通常不同于实际的业务逻辑 (例如 , 交易管理) .各方 ...

  3. Linux SPI初始化及接口函数代码细究

    2012-01-08 22:11:38 目的:我需要掌握spi驱动相关数据结构关系,及在哪部分函数中把这些数值进行底层寄存器赋值的.结合应用层函数完成spi驱动的代码测试.已达到灵活修改的目的. 按顺 ...

  4. C博客作业04--数组

    1. 本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 这几周学习了数组,一维数组,二维数组,字符数组,前一个题集还没做完,后一个题集就又发布了,当场去世,可 ...

  5. 原创《如何用vue来轻松的驾驭 html5 webapp的页面体验》

    由于最近开始要做mobile的webapp 项目,所以利用周末的时间思考了下页面的体验问题,我主要参考了"微信"的页面体验,总结主要有2个页面切换效果(点击进入页面效果 和 返回上 ...

  6. Java中日期格式(String、Date、Calendar)的相互转换

    package day20190318; import java.text.ParseException; import java.text.SimpleDateFormat; import java ...

  7. Linux 内存泄漏检查工具 valgrind

    抄自<从零开始的JSON库教程>,先mark一下,以后再慢慢研究. ======== 引用分割线 ======== 在 Linux.OS X 下,我们可以使用 valgrind 工具(用 ...

  8. HTTP简单解析

    一.简介 HTTP是一种基于TCP/IP的超文本传输协议,用于从WWW服务器传输超文本到本地浏览器. HTTP是一种基于客户端/服务器(C/S架构)的无状态.无连接.媒体独立的传输协议. HTTP是一 ...

  9. jsp+postgresql学习笔记(1)用户登录与注册

    前期准备: tomcat的安装与配置(略) jdk的安装与配置(略) eclipse软件安装与配置(略) webstrom软件或IDEA的安装与配置(大概用了IDEA就不需要eclipse了,但是怎么 ...

  10. javascript 之 面向对象【理解对象】

    第五版本 6.1.1  属性类型      1/数据属性 :包含有数据值的问题.有内部有特性和属性,是为了实现javaScript引擎用的,在javaScript中不能直接访问  [[Configur ...