1. 全球唯一无法保障.

软件工具可以修改网卡的MAC地址

2.不需要全球唯一.

只要保障局域网内不重复就行.    路由器 保证 数据在不同局域网内跳转.   如果局域网内使用集线器,那么可以设置相同的MAC,但是如果是交换机,由于交换机的MAC地址学习策略,不可以设置相同MAC地址.

$ ifconfig eth0 | grep ether
ether 6e:77:0f:b8:8b:6b txqueuelen 1000 (Ethernet)
$ ifconfig eth0 down
$ ifconfig eth0 hw ether 6e:77:0f:b8:8b:6a
$ ifconfig eth0 up
$ ifconfig eth0 | grep ether
ether 6e:77:0f:b8:8b:6a txqueuelen 1000 (Ethernet)

  

局域网中的数据传输不是通过网络层的IP传输的,主要是通过MAC地址传输的.

ARP广播过程

  1. 源主机会向当前局域网中发送 ARP 请求,目标的 MAC 地址是 FF-FF-FF-FF-FF-FF,这表示当前请求是一个广播请求,局域网内的所有设备都会收到该请求;
  2. 接收到 ARP 请求的主机都会检查目的 IP 和自己的 IP 地址是否一致;
    1. 如果 IP 地址不一致,主机会忽略当前的 ARP 请求;
    2. 如果 IP 地址一致,主机会直接向源主机发送 ARP 响应;
  3. 源主机在接收到 ARP 的响应之后,会更新本地的缓存表并继续向目的主机发送数据;

交换机-局域网内不可以设置相同MAC地址:

假设局域网中的具有两台 MAC 地址完全相同的网络设备 A 和 B,即 6e:77:0f:b8:8b:6b,当设备 A 想要向设备 B 发送以太网帧时会遇到如下所示的情况:

  1. 设备 A 在构造的以太网帧中将源地址和目的地址都设置为 6e:77:0f:b8:8b:6b 并向交换机发送数据;
  2. 交换机接收到了设备 A 发送的数据帧后,会从数据帧的源地址学习到设备 A 的 MAC 地址并将 6e:77:0f:b8:8b:6b -> A 这条记录插入本地缓存中;
  3. 交换机发现收到数据帧的目的地址会指向了网络设备 A,所以它会将该数据转发回 A;

因为交换机的 MAC 地址学习策略,所以我们不能在同一个局域网中使用相同的 MAC 地址,但是因为 MAC 地址是链路层网络中的概念,跨局域网的网络传输需要通过网络层的 IP 协议,所以在不同的局域网中使用相同的 MAC 地址就不存在类似的问题了。

MAC地址知识的更多相关文章

  1. 网络知识===关于MAC地址和IP不能互相替代,缺一不可的原因

    最近在看书<图解TCP/IP>书中分别谈到了IP和MAC地址.于是我就有两个疑惑, 为什么有了IP地址,我们还要获取MAC地址? 为什么我们初始不直接使用MAC地址作为终点地址?还要那么复 ...

  2. 以太网MAC地址组成与交换机基本知识

    以太网MAC地址 MAC地址由48位二进制组成,通常分为六段,用十六进制表示,工作在数据链路层. 数据链路层功能: 链路的建立,维护与拆除 帧包装,帧传输,帧同步 帧的差错恢复 简单的流量控制 第八位 ...

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

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

  4. 分享:PHP获取MAC地址的实现代码

    原文地址:http://www.jbxue.com/article/12635.html发布:thatboy   来源:Net     [大 中 小] 分享一例php取得机器mac地址的代码,学习下p ...

  5. 三十天学不会TCP,UDP/IP编程--MAC地址和数据链路层

    这篇文章主要是来做(da)推(guang)介(gao)的!由于这两年接触到了比较多的这方面的知识,不想忘了,我决定把他们记录下来,所以决定在GitBook用半年时间上面写下来,这是目前写的一节,后面会 ...

  6. 【RL-TCPnet网络教程】第5章 PHY芯片和STM32的MAC基础知识

    第5章        PHY芯片和STM32的MAC基础知识 本章节为大家讲解STM32自带的MAC和PHY芯片的基础知识,为下一章底层驱动的讲解做一个铺垫. 5.1   初学者重要提示 5.2    ...

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

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

  8. 获取设备信息——获取客户端ip地址和mac地址

    1.获取本地IP(有可能是 内网IP,192.168.xxx.xxx) /** * 获取本地IP * * @return */ public static String getLocalIpAddre ...

  9. 交换机是干嘛的!!交换机如何学习MAC地址过程?

    1.它收到一个帧的时候,先检查源MAC地址,看看自己维护的一个地址表中有没有这个地址.如果有,则2:如果没有,则将这个MAC地址.进入的端口.进入的时间放入这个表中: 2.检查目的MAC地址,然后到该 ...

随机推荐

  1. Java注解如何对属性动态赋值

    学而不思则罔,思而不学则殆 前言 大家都用过Spring的@Value("xxx")注解,如果没有debug过源码的同学对这个操作还是一知半解,工作一年了学了反射学了注解,还是不会 ...

  2. netty系列之:对聊天进行加密

    目录 简介 PKI标准 各类证书的后缀和转换 netty中启动SSL server netty中启动SSL client 总结 简介 在之前的文章中,我们讲到了怎么使用netty建立聊天室,但是这样的 ...

  3. Java代码搭建Dubbo+ZooKeeper 的示例

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  4. MySQL 不完全入门指南

    由于 MySQL 的整个体系太过于庞大,文章的篇幅有限,不能够完全的覆盖所有的方面.所以我会尽可能的从更加贴进我们日常使用的方式来进行解释. 小白眼中的 MySQL 首先,对于我们来说,MySQL 是 ...

  5. Linux sudo权限提升漏洞CVE-2021-3156 POC及复现过程

    漏洞简介 2021年1月26日,国外研究团队披露了sudo 中存在的堆溢出漏洞(CVE-2021-3156).利用该漏洞,非特权账户可以使用默认的sudo配置主机上获取root权限,该漏洞影响1.8. ...

  6. 两个线程交叉打印一个打印A一个打印B 循环打印?

    public static Object obj1 = new Object(); public static void printAB(){ Thread t1 = new Thread(() -& ...

  7. 源码安装nginx开启SSL功能

    编译安装nginx的环境 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 下载nginx安装包 cd /usr/ ...

  8. C# 不是异步的方法中获取异步的结果

    var waiter = HP.UtilsLib.TaskAwaiterHelper.GetTaskAwaiter( async () => { return await feedBack(ve ...

  9. hive表导出到mysql报错

    Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject hadoop@hado ...

  10. Maven脑图

    转自:https://segmentfault.com/a/1190000017832792 参考:https://www.cnblogs.com/mzywucai/p/11053341.html