V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
laoda176176
V2EX  ›  程序员

Mac 地址在日常上网时,会直接发送到网站服务器吗?

  •  
  •   laoda176176 · 2020-10-14 00:22:10 +08:00 · 4541 次点击
    这是一个创建于 1506 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Mac 地址在上网时,是直接发送到网站服务器,还是会经过转发,才到网站服务器呢?

    上网后,mac 地址在传输的过程中,会因运营商转发,而导致 Mac 地址变成运营商的 Mac 地址吗?

    会像动态 ip 那样吗,自己的 ip 到运营商那里,然后运营商给你更换 ip 后发送。

    30 条回复    2020-10-16 12:18:06 +08:00
    user8341
        1
    user8341  
       2020-10-14 00:34:00 +08:00
    mac 是局域网内的,甚至都不会出你的路由器,怎么会到网站服务器呢?

    更换 IP 的是 NAT,不是动态 IP ( DHCP )吧?
    dingdangnao
        2
    dingdangnao  
       2020-10-14 00:37:11 +08:00
    服务器能拿到你设备的 mac 地址??
    laoda176176
        3
    laoda176176  
    OP
       2020-10-14 00:45:12 +08:00
    @user8341 不好意思,没表述清楚,Mac 地址经过家里 wifi 时会变成 wifi 的 Mac 地址,这个 wifi 的 Mac 地址会直接打包发给网站服务器吗,还是中间还会经过其他设备,如运营商,而改变 Mac 地址呢
    laoda176176
        4
    laoda176176  
    OP
       2020-10-14 00:45:19 +08:00
    @dingdangnao 不好意思,没表述清楚,Mac 地址经过家里 wifi 时会变成 wifi 的 Mac 地址,这个 wifi 的 Mac 地址会直接打包发给网站服务器吗,还是中间还会经过其他设备,如运营商,而改变 Mac 地址呢
    FutherAll
        5
    FutherAll  
       2020-10-14 00:49:21 +08:00 via iPhone
    不行,中间可能会经过很多跳。
    mac 地址是二层链路层的,你和服务端是在网络层通信
    laoda176176
        6
    laoda176176  
    OP
       2020-10-14 00:52:09 +08:00
    @FutherAll 那问下,mac 地址已经不是用户电脑的,甚至都不是用户家 wifi 的,那各个互联网公司为啥还收集 mac 地址。。。
    FutherAll
        7
    FutherAll  
       2020-10-14 00:53:11 +08:00 via iPhone
    可以用 wireshark 抓包看看收到的 frame 。
    想要 mac 地址可以自己手动传输过来,不过用户的 mac 地址只在局域网有意义,拿到这个信息也没什么用吧
    ysc3839
        8
    ysc3839  
       2020-10-14 00:53:25 +08:00
    你说收集 MAC 地址,那是通过手机 /电脑客户端收集的吧?
    FutherAll
        9
    FutherAll  
       2020-10-14 00:54:42 +08:00 via iPhone
    @laoda176176 触及到盲区了,唯一能想到的是做设备标识
    不过 mac 地址是可以随意修改的,感觉没有意义啊
    laoda176176
        10
    laoda176176  
    OP
       2020-10-14 00:57:33 +08:00
    @ysc3839 啊对,pc 客户端,还是苹果电脑客户端,会直接收集 mac 地址啊。。。。。这么流氓
    WebKit
        11
    WebKit  
       2020-10-14 00:59:08 +08:00 via Android
    现在手机上也收集不到了,Android 返回的要么是随机的 mac 地址,要么直接返回空。至于 HTTP 更是从来都拿不到 mac 地址。
    laoda176176
        12
    laoda176176  
    OP
       2020-10-14 01:02:15 +08:00
    @WebKit 如果是苹果电脑或者是 Windows 电脑的客户端能直接收集 Mac 地址吗,那现在 mac 地址不就成鸡肋了,收集 mac 地址还有啥用
    vk42
        13
    vk42  
       2020-10-14 01:21:04 +08:00   ❤️ 1
    @laoda176176 收集 MAC 主流用途有两个,一个是作为用户指纹分辨用户身份,另外一个是收集设备周围无线 AP 的 MAC 来做众包粗定位。前面这个用途现在很少用了,一方面设备限制获取 MAC,另外有很多替代的用户指纹可以用。
    shijingshijing
        14
    shijingshijing  
       2020-10-14 02:14:27 +08:00
    比 MAC 地址更值得担心的是 UUID,微软曾经在 Edge 浏览器上动过手脚,自动上传电脑的 UUID 。还有一个可以用于身份识别的是 CPU 的 Certificate/序列号,现在的处理器不管是 Intel 的台式机 CPU,还是高通的 Snapdragon,苹果的 A 系列处理器,都在出厂之前烧入了全球唯一的 Certificate/序列号。
    z4oSkDNGGC2svsix
        15
    z4oSkDNGGC2svsix  
       2020-10-14 02:42:01 +08:00
    你的机器与服务器之间是通过 ip 地址交流的, 数据包每经过一个网络节点, 数据包记录的 mac 地址就会变, 它记录的是当前节点的地址.
    举个例子, 你的机器的 mac 地址发送给你家里的路由器, 你家里路由器再把数据包发送给电信网关, 电信网关获取的是你路由器的 mac 地址, 网关再发给服务器, 服务器得到是电信网关的 mac 地址.

    不过你的数据包的来源 ip 地址是始终不变的.

    不过你运行的软件可以获取 mac 地址发给服务器.
    laoda176176
        16
    laoda176176  
    OP
       2020-10-14 07:09:07 +08:00
    @x02 请问如果通过的是电脑客户端传输,是否就相当于一个局域网传输,MAC 地址直接就能发送到客户端的服务期而不经过转发了呢
    ThirdFlame
        17
    ThirdFlame  
       2020-10-14 07:43:26 +08:00
    @laoda176176 首先如果没有客户端,仅仅是网络通信的话,只有你局域网内的设备能看到 mac 地址,除了局域网就看不到了。

    windows/MAC 客户端软件 在是在本机运行,通过相关 API 接口 /命令获取 mac 地址,又通过网络发送出去 。 而不是由于网络通信导致的 MAC 地址泄露
    7DLNU56W
        18
    7DLNU56W  
       2020-10-14 07:50:27 +08:00
    一般来说是拿不到的,mac 只在一个子网里面,到下一个子网就换了,一般如果不是直连的是拿不到你的 mac 的。

    如果一定要拿到的话,只能通过本机的客户端,取得你的 mac 地址后,写在请求的参数传递出去。
    zsdroid
        19
    zsdroid  
       2020-10-14 09:39:35 +08:00
    收集的 mac 地址,和传输的 mac 地址是 2 个概念啊。
    收集是为了标识用户。收集到的都是尾端的 mac 地址。
    这个 mac 和其它输入的数据没区别。当然不会变啊。
    zsdroid
        20
    zsdroid  
       2020-10-14 09:42:20 +08:00
    @7DLNU56W 网卡的 mac 为什么会变?
    passerbytiny
        21
    passerbytiny  
       2020-10-14 09:43:05 +08:00 via Android
    你与网站服务器的通讯在 7 层或 4 层模式中都属于应用层,通用应用层协议,例如 HTTP 、TLS 、Websocket,都不会涉及 MAC 地址。但是那只是通用协议,任何应用都可以使用自己专用的协议。

    运营商通常不会处理应用层(一种例外情况是 DNS 劫持插广告),再隐私数据搜集这一块,可以先把运营商排除。

    MAC 地址是否上传,取决于你使用的应用。如果你日常只用浏览器上网,那么 MAC 地址不会传给网站服务器。但是,如果你用得是国产浏览器或者一些非主流浏览器,那么不光 MAC 地址,你电脑上的所有东西都有可能上传给浏览器厂商的服务器。如果你用其他客户端或者 APP 上网,那就要看操作系统的隐私控制策略和应用厂商的良心了。
    7DLNU56W
        22
    7DLNU56W  
       2020-10-14 10:22:42 +08:00
    @zsdroid mac 地址是在数据链路层的,在客户端的子网,你网卡得 mac 为发送方的 mac,网关网卡的 mac 为接收方的 mac,等传到下一个子网的时候,网关的 mac 变成了发送方的 mac,下一跳网关的 mac 变成了接收方的 mac 。大概就是这样。
    xx6412223
        23
    xx6412223  
       2020-10-14 10:24:25 +08:00
    通俗点说。mac 解决吓一跳的问题。
    libook
        24
    libook  
       2020-10-14 13:44:08 +08:00
    https://zh.wikipedia.org/wiki/MAC%E5%9C%B0%E5%9D%80

    我了解到的 MAC 地址常用于 ARP 这个协议,路由器和内部 NAT 网路中的网卡通信的时候用的,所以一般来说不会发到你的路由器 NAT 网络之外。

    当然有些程序会主动收集你的 MAC 地址然后上报给服务器,这种就有点类似间谍行为了,和网络通讯技术本身没关系。

    现在有些设备已经可以随机生成 MAC 地址了,换个网络环境 MAC 地址就不一样,避免被追踪。
    clf
        25
    clf  
       2020-10-14 13:49:01 +08:00
    之前做过一个 App 上传 Mac 地址是用于签到功能。

    在手机签到的时候,会将发起签到者能扫描到的 wifi 列表的 mac 地址全部上传到服务器,其它签到者手机签到时对比该列表,如果 wifi 列表存在列表内的 mac 地址,则签到成功。(不用定位是因为室内签到无法保证定位质量)
    Hardrain
        26
    Hardrain  
       2020-10-14 14:32:54 +08:00 via Android
    mac 在二层
    网站(理解为 http/https)在七层
    newmlp
        27
    newmlp  
       2020-10-14 14:34:29 +08:00
    mac 地址是二层协议的内容,无法穿透路由器的,lz 该补补计算机网络基础了
    julyclyde
        28
    julyclyde  
       2020-10-14 19:27:33 +08:00
    现在当程序员已经不需要学全套计算机基础课了
    7DLNU56W
        29
    7DLNU56W  
       2020-10-14 20:51:38 +08:00
    @julyclyde 没学过这种类型课程的程序员注定不能达到技术专家级别!
    laoda176176
        30
    laoda176176  
    OP
       2020-10-16 12:18:06 +08:00
    @x02 请问如果检测 mac 电脑客户端是否收集设备信息与设备信息收集的多少,使用抓包软件能看出来吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1769 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:37 · PVG 00:37 · LAX 08:37 · JFK 11:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.