IP地址和Mac地址产生的目的是方便别人找到自己
Mac地址有点像身份证号码,而IP地址就像门牌号码。在茫茫大海中仅凭一个身份证号码找到一颗别样的沙粒很难,但如果先找到具体的沙滩,沙滩划分很小的网格片区,就很容易通过身份证找到这颗别样的沙粒了。
MAC地址(物理地址、硬件地址)是实实在在的网络设备出身地址,它是由厂商写入网络设备的bios中。
网络设备厂商也并不能随意的使用Mac地址,需要向IEEE申请,当然厂商申请需要付费。
Mac地址通常表示为12个16进制数,每2个16进制数之间用冒号隔开,前6位16进制数代表了网络硬件制造商的编号,由IEEE分配,而后3位16进制数是由网络产品制造产商自行分配。这样就可以保证世界上每个网络设备具有唯一的MAC地址,比如一台电脑的网卡坏掉了之后,更换一块网卡之后MAC地址就会变。
IP地址是出于拓扑设计出来的,它为互联网上每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。对于路由器、电脑等网络设备,只要IP地址不重复情况下,IP地址是可以随意的修改。
网络的变迁
早期的以太网只有集线器(Hub)、没有交换机(Switch),所以发出去的包能被以太网内所有的机器监听到,所以数据包就需要带上源mac地址和目的mac地址,每个机器只需要接受和自己的MAC地址相匹配的数据包。
局域网数据传输并不是通过网络层的IP地址进行路由和转发,想要在局域网中发送数据,还需要知道设备的mac地址。比如我们的电脑向其他局域网中的其他电脑发送数据时,它会先通过ARP(地址解析协议)在局域网中获取目的IP地址所对应的MAC地址。
step1:源主机首先会向局域网中发送ARP的广播请求,只要目标mac地址是FF:FF:FF:FF:FF:FF,局域网内的所有设备都会受到这个请求。
step2:接收到ARP请求的设备会检查目的IP地址和自己的IP地址是否一致,不一致就会忽略当前的ARP请求,一致就会向源主机发送ARP响应。
step3:源主机接收到ARP响应后就会更新本地缓存表并继续向目的主机发送数据。
在局域网中如果采用集线器来连接不同的网络设备,相同的MAC地址一般不会出现太多的问题,因为在集线器连接的局域网中所有的数据帧都会被广播给局域网内的全部主机,而如果通过交换机连接不同的网络设备就会受到影响,因为交换机需要学习局域网中不同设备的Mac地址并将数据帧转发给特定的主机。
所以Mac地址其实是可以重复使用的,只是不能在同一个局域网中使用相同的MAC地址,而跨局域网的网络传输则需要通过网络层的IP协议,所以在不同的局域网使用相同的Mac地址就不存在类似的问题。
Mac地址会有重复
按照IEEE的协定每个网络设备出厂都会有全球唯一的Mac地址,并且使用过的也不会再重复使用。但不意味着Mac地址就不会出现重复了,很多小伙伴们都改过Mac地址,有的直接可以通过系统进行修改。
有的网络设备允许你在管理后台手动的修改mac地址。
以上这些都是通过虚拟的方式覆盖原有的Mac地址,并没有更改掉设备出身时烙印的Mac地址。出身时烙印的Mac地址也并不是不能修改,通过硬件写入的方式同样的可以修改Mac地址,本质上Mac地址就是一串二进制数,存放在了bios的某个存储区域内。
Mac地址还可以用很久
有限的Mac地址,不断的使用,迟早是会消耗完的。但是Mac地址数量足够多,还可以使用很长一段时间。
IP地址是32位二进制数,约43亿个IP地址,而Mac地址是48位二进制数,约281万亿个Mac地址。公网IP地址是在2019年才耗尽的,可想而知,Mac地址池可是比IP地址池大了6万多倍,而且重复的Mac地址只要不在一个局域网内就能正常使用,Mac地址相当于永远都消耗不完。