
Kubernetes 网络MAC地址
MAC简介
MAC (Media Access Control) 地址用来定义网络设备的位置。MAC地址由48比特长、12位的16进制数字组成,其中从左到右开始,0到23bit是厂商向IETF等机构申请用来表示厂商的代码(OUI),24到47bit由厂家自行分配,是各个厂商制造到所有网卡到一个唯一编号。
MAC地址可以分为3种类型:物理MAC地址,广播MAC地址,组播MAC地址。
类型 | 描述 |
---|---|
物理MAC地址 | 这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址。 |
广播MAC地址 | 全1的MAC地址(FF-FF-FF-FF-FF-FF),用来表示LAN上所有终端设备。 |
物理MAC地址
这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址。
在ENSP中首先添加两个PC到交换机中,并为这两台PC手动填写掩码与ip。
我们通过右键打开两台PC的设置,发现已经存在了物理Mac地址,分别是:54-89-98-9A-36-CD
与54-89-98-77-3C-4C
。
这里我们设置PC1的IP为192.168.1.1
,设置PC2的IP为192.168.1.2
。子掩码都将其设置为255.255.255.0
。
然后我们打开PC1的命令行,通过ipconfig
命令查看网络配置情况,随后我们向PC2192.168.1.2
发送ping包。
随后我们点击PC1右键再点抓包,选择GE 0\0\2
接口然后会启动Wireshark抓取PC1所请求的包。
我们可以通过这张图清楚的看到一个Ping包是基于ICMP协议来发送的,并且IP与IP之间的请求与响应有来有回。Ethernet II
表示交换机处理层,在这一栏下面我们可以看到请求源与接收源,并且前面的 HuaweiTe_
表示的是设备厂商的MAC地址(如果是戴尔的可能会发现Dell_xxx
),所对应的16进制为548998
转换为二进制后为23bit,后面的6位16进制是自定义生成的;
Type表示协议的类型这里是IPv4
,在下一栏中Internet Protocol Version 4
同样表示的是IPv4类型的包。Src
表示发送源IP。Dst
表示接收源IP。
广播MAC地址
广播MAC地址:全1的MAC地址(FF-FF-FF-FF-FF-FF),用来表示LAN上所有终端设备。
简单来讲:你在一个群里面你要找一个张三的人,但你不知道他的网名叫什么,所以在群里说了一句”谁叫张三啊?”,然后不是张三的人就不会回你,是张三就会回你,张三回你后你就会备注一下,这就是广播。
(而FF-FF-FF-FF-FF-FF
就是广播地址)
值得注意的是在这里其他不是张三的人也会收到通知,所以其他设备也会收到这个包,但不会做出响应。
(有兴趣肯定会想到如果不是张三的人说自己是张三,就有了ARP
中间人攻击,可以网上搜搜看)。
不知道在上面的中朋友们有没有注意到,在发送Ping包之前呢。有两个ARP的包,第一个ARP发送到的就是FF-FF-FF-FF-FF-FF
广播Mac地址,然后在第二个包就被找到了他们就联系上了。
电脑那么智能啊?说联系上就联系上了,当然没那么简单。其实他们被存到了交换机的Mac表地址中,他们第一次发送ping时交换机Mac表中是不存在他们的记录的,随后就发送广播通知,然后将他们的mac地址与接口记录到交换机的mac表中去。并且在他们的本地也有一个Arp的缓存。
我们先打开交换机输入查看mac表的命令:dis mac-address
。
如果我们要清空mac表中的地址的话输入命令:undo mac-address
图中表所呈现的如下表。也就是说在这之后呢,你PC1再找PC2的话我就从GE0/0/3
接口转发出去。反之你PC2来找PC1我从GE0/0/2
接口给你转发出去,这个接口就是与交换机连接的线条。
电脑名 | ip | mac | 接口 |
---|---|---|---|
PC1 | 192.168.1.1 | 54-89-98-9A-36-CD | GE0/0/2 |
PC2 | 192.168.1.2 | 54-89-98-77-3C-4C | GE0/0/3 |
除此之外,在经过第一次查询后,本地会存储相关的地址到arp cache中可以通过arp -a
命令进行查看,如果本地的arp cache里面存在该IP,并且交换机mac表中也存在该mac,将进行直接访问不会进行请求广播mac地址。
(还可以通过arp -d
命令进行删除)
组播MAC地址
除了广播地址外,第3bit为1的MAC地址为组播MAC地址(例如01-00-00-00-00-00),用来代表LAN上的一组终端。
简单来讲基于广播地址的基础之上,进行一个分组。
动态MAC地址(Dynamic MAC)
MAC 老化过程
在讲动态MAC地址之前呢,我们有个问题需要说明一下。那就是如果我们每一个设备连上交换机的时候,交换机都会去表里添加一条记录,如果添加很多了的话就会导致内存溢出的情况。所以变添加了老化时间的一个机制,当某个mac地址长时间不发包,我们就可以删除它,这样就节省了内存避免了内存溢出。下面将展示老化过程的生存周期。
设备MAC地址老化的时间设置为T。在t1时刻有源MAC地址为00e0-fc00-0001
、VLAN为1的报文从某接口进入。假定该接口已加入VLAN 1。如果之前MAC地址表不存在关于(MAC:00e0-fc00-0001
,VLAN:1)的任何种类表项,那么这个地址就会作为动态MAC地址表项添加到地址表里,同时该表项进行检查。
— 在t2时刻,检查到动态表项(MAC:00e0-fc00-0001,VLAN:1)的命中标志位为1,则将该表项的命中标志位置为0,但不删除这条表项。
— 在t2时刻和t3时刻之间没有这种报文进入设备,那么该表项的命中标志位会一直保持为0
— 在t3时刻,设备检查到该表项的命中标志位0,认为该表项的老化时间到达,将删除此条表项。
动态MAC的介绍
由交换机从接收到报文自动识别到MAC地址,当端口收到一个报文时,会查找报文的源MAC地址是否存在于MAC地址表中,如果不存在则会将相应的端口、VLAN和源MAC地址关联起来,并保存到MAC地址表中,动态MAC地址在到达一定老化时间后会被老化删除,但如果该地址在老化时间内被正确使用过,则会重新激活该条地址的老化时间,同时MAC地址和端口(接口)的对应关系会随着设备所连的交换机的端口的变化而变换。
(通过下图所示,交换机已经老化了所有的mac地址)
静态MAC地址(Static MAC)
简单来讲它不会收到mac表的老化的影响,它将永久存在于交换机的mac表项中。
举个例子,假如你家的网经常被陌生人蹭来蹭去,你就把你们家所有的设备的mac地址都加入静态中,这样外人就连接不上你家wifi了。
过滤MAC地址、黑洞MAC地址
由用户通过命令配置的静态过滤的MAC地址,当网关接收到的报文中,源或者目的MAC 地址为过滤MAC地址,则直接丢弃该报文。
简单来讲:黑名单。
MAC 地址表
设备添加MAC地址的方法如下:如果从某接口(假设为接口A GE0/0/1
)收到一个数据帧,设备就会分析该数据的源MAC地址(假设为MAC-SOURCE)并认为目的MAC地址为MAC-SOURCE的报文可以由接口A转发;如果MAC地址表中已经包含MAC-SOURCE,设备将对该表项进行更新;如果MAC地址表中尚未包含MAC-SOURCE,设备则将这个新的MAC地址以及该MAC地址对应的接口A作为一个新的表项目加入到MAC地址种。
Note:用户手工配置的静态MAC地址表项和黑洞MAC地址表项不会被动态的MAC地址表覆盖,而动态MAC地址表项可以被静止MAC地址表项和黑洞MAC地址表项覆盖。
设备在转发报文时,根据MAC地址表项信息,会采取以下两种转发方式:单播方式与广播方式
单播方式
当MAC地址表中包含与报文目的MAC地址对应的表项时,直接将报文从该表项中的转发出接口发送。
(举例:有ABC三台PC,A往B发包,交换机有A与B的地址,C不会接收到B的包)
多播方式
当设备收到目的地址为全1的报文,或MAC地址表中没有包含对应报文目的MAC地址的表项时,设备将会采取广播方式将报文向除接收接口外的所有接口进行转发。
(举例:当我们交换机上MAC地址表没有这ABC的地址,那么将会对所有设备发送包来确认)
泛洪
当主机本地缓存有目标地址的记录,但路由器没有的情况下,它也会进行广播,但这种情况专业一点就被称之为泛洪。
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

