首页
视频
资源
登录
原
Kubernetes 网络MAC地址
5972
人阅读
2022/4/8 21:57
总访问:
2645661
评论:
0
收藏:
0
手机
分类:
容器编排
![Kubernetes](https://img.tnblog.net/arcimg/hb/274ef6f115de4c9b8e40ded5deb2f4c2.jpg "Kubernetes") >#Kubernetes 网络MAC地址 [TOC] ## MAC简介 tn2>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地址 tn>这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址。 tn2>在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`。 ![](https://img.tnblog.net/arcimg/hb/a99de34c72734d5ba7693d3041ef9547.png) ![](https://img.tnblog.net/arcimg/hb/25fb4530e1574b4fa89dc670b6daf349.png) ![](https://img.tnblog.net/arcimg/hb/2e37959ee9164809a3d90c8512c1c908.png) tn2>然后我们打开PC1的命令行,通过`ipconfig`命令查看网络配置情况,随后我们向PC2`192.168.1.2`发送ping包。 ![](https://img.tnblog.net/arcimg/hb/3f044d5c49a94c09af70c29413367443.png) ![](https://img.tnblog.net/arcimg/hb/5ac6ed3537b94dcd97784ca3faa36208.png) tn2>随后我们点击PC1右键再点抓包,选择`GE 0\0\2`接口然后会启动Wireshark抓取PC1所请求的包。 ![](https://img.tnblog.net/arcimg/hb/16a7394005a94960a1d3406ac28fda79.png) tn2>我们可以通过这张图清楚的看到一个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地址 tn>广播MAC地址:全1的MAC地址(FF-FF-FF-FF-FF-FF),用来表示LAN上所有终端设备。 tn2>简单来讲:你在一个群里面你要找一个张三的人,但你不知道他的网名叫什么,所以在群里说了一句"谁叫张三啊?",然后不是张三的人就不会回你,是张三就会回你,张三回你后你就会备注一下,这就是广播。 (而`FF-FF-FF-FF-FF-FF`就是广播地址) 值得注意的是在这里其他不是张三的人也会收到通知,所以其他设备也会收到这个包,但不会做出响应。 (有兴趣肯定会想到如果不是张三的人说自己是张三,就有了`ARP`中间人攻击,可以网上搜搜看)。 不知道在上面的中朋友们有没有注意到,在发送Ping包之前呢。有两个ARP的包,第一个ARP发送到的就是`FF-FF-FF-FF-FF-FF`广播Mac地址,然后在第二个包就被找到了他们就联系上了。 ![](https://img.tnblog.net/arcimg/hb/1288a3835f6d45ccbe7d50915e778da4.png) tn2>电脑那么智能啊?说联系上就联系上了,当然没那么简单。其实他们被存到了交换机的Mac表地址中,他们第一次发送ping时交换机Mac表中是不存在他们的记录的,随后就发送广播通知,然后将他们的mac地址与接口记录到交换机的mac表中去。并且在他们的本地也有一个Arp的缓存。 我们先打开交换机输入查看mac表的命令:`dis mac-address`。 如果我们要清空mac表中的地址的话输入命令:`undo mac-address` ![](https://img.tnblog.net/arcimg/hb/c92839a03d404428bef605a36d61b4d3.png) tn2>图中表所呈现的如下表。也就是说在这之后呢,你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 | ![](https://img.tnblog.net/arcimg/hb/b0eccf53e3d647a689d2ff1f6c42e2bb.png) tn2>除此之外,在经过第一次查询后,本地会存储相关的地址到arp cache中可以通过`arp -a`命令进行查看,如果本地的arp cache里面存在该IP,并且交换机mac表中也存在该mac,将进行直接访问不会进行请求广播mac地址。 (还可以通过`arp -d`命令进行删除) ![](https://img.tnblog.net/arcimg/hb/eb9c1f4143ae4a1eb9193690fe1faea2.png) ## 组播MAC地址 tn>除了广播地址外,第3bit为1的MAC地址为组播MAC地址(例如01-00-00-00-00-00),用来代表LAN上的一组终端。 tn2>简单来讲基于广播地址的基础之上,进行一个分组。 ## 动态MAC地址(Dynamic MAC) >### MAC 老化过程 tn2>在讲动态MAC地址之前呢,我们有个问题需要说明一下。那就是如果我们每一个设备连上交换机的时候,交换机都会去表里添加一条记录,如果添加很多了的话就会导致内存溢出的情况。所以变添加了老化时间的一个机制,当某个mac地址长时间不发包,我们就可以删除它,这样就节省了内存避免了内存溢出。下面将展示老化过程的生存周期。 ![](https://img.tnblog.net/arcimg/hb/1c5f198ed5514816859432a0cf6b613c.png) tn2>设备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的介绍 tn2>由交换机从接收到报文自动识别到MAC地址,当端口收到一个报文时,会查找报文的源MAC地址是否存在于MAC地址表中,如果不存在则会将相应的端口、VLAN和源MAC地址关联起来,并保存到MAC地址表中,动态MAC地址在到达一定老化时间后会被老化删除,但如果该地址在老化时间内被正确使用过,则会重新激活该条地址的老化时间,同时MAC地址和端口(接口)的对应关系会随着设备所连的交换机的端口的变化而变换。 (通过下图所示,交换机已经老化了所有的mac地址) ![](https://img.tnblog.net/arcimg/hb/0d25ed59b1794d81aef316aea50d73d0.png) ## 静态MAC地址(Static MAC) tn>简单来讲它不会收到mac表的老化的影响,它将永久存在于交换机的mac表项中。 tn2>举个例子,假如你家的网经常被陌生人蹭来蹭去,你就把你们家所有的设备的mac地址都加入静态中,这样外人就连接不上你家wifi了。 ## 过滤MAC地址、黑洞MAC地址 tn>由用户通过命令配置的静态过滤的MAC地址,当网关接收到的报文中,源或者目的MAC 地址为过滤MAC地址,则直接丢弃该报文。 tn2>简单来讲:黑名单。 ## MAC 地址表 tn2>设备添加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地址表项覆盖。 tn>设备在转发报文时,根据MAC地址表项信息,会采取以下两种转发方式:单播方式与广播方式 >### 单播方式 tn2>当MAC地址表中包含与报文目的MAC地址对应的表项时,直接将报文从该表项中的转发出接口发送。 (举例:有ABC三台PC,A往B发包,交换机有A与B的地址,C不会接收到B的包) >### 多播方式 tn2>当设备收到目的地址为全1的报文,或MAC地址表中没有包含对应报文目的MAC地址的表项时,设备将会采取广播方式将报文向除接收接口外的所有接口进行转发。 (举例:当我们交换机上MAC地址表没有这ABC的地址,那么将会对所有设备发送包来确认) ## 泛洪 tn2>当主机本地缓存有目标地址的记录,但路由器没有的情况下,它也会进行广播,但这种情况专业一点就被称之为泛洪。
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
尘叶心繁
这一世以无限游戏为使命!
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
.net后台框架
171篇
linux
17篇
linux中cve
1篇
windows中cve
0篇
资源分享
10篇
Win32
3篇
前端
28篇
传说中的c
4篇
Xamarin
9篇
docker
15篇
容器编排
101篇
grpc
4篇
Go
15篇
yaml模板
1篇
理论
2篇
更多
Sqlserver
4篇
云产品
39篇
git
3篇
Unity
1篇
考证
2篇
RabbitMq
23篇
Harbor
1篇
Ansible
8篇
Jenkins
17篇
Vue
1篇
Ids4
18篇
istio
1篇
架构
2篇
网络
7篇
windbg
4篇
AI
18篇
threejs
2篇
人物
1篇
嵌入式
3篇
python
13篇
HuggingFace
8篇
pytorch
9篇
opencv
6篇
Halcon
4篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术