搞弱电的兄弟都知道,网络通信这块,有三张表是绕不过去的——MAC地址表、ARP表、路由表。我干这行十几年,头两年也是一头雾水,后来跟着老师傅干了个大项目,才彻底搞明白。今天咱们就掰开揉碎了聊聊这三张表,我尽量用大实话讲,再配上几张实拍图,保证你看完就能上手。
先得说清楚,网络这东西,说穿了就是传数据。数据怎么传?靠的是TCP/IP那套规矩。咱们平时调试设备,不管是交换机还是路由器,都得跟这三张表打交道。你要是能把它们玩转了,那基本就是半个“武林高手”了。

MAC地址表:交换机的“通讯录”
MAC地址表,说白了就是交换机记小本本的地方。它把MAC地址和端口号对应起来,比如“哪个MAC地址是从哪个口学来的”。你问这玩意儿有啥用?举个例子,交换机收到一个数据包,一看目的MAC地址,立马翻自己的小本本,找到对应的端口,直接扔过去,省得满世界广播。
在华为设备上,敲个dis mac-address就能看到。像下边这张图里,MAC地址5489-98b1-79f4就是从G0/0/2口学来的。注意啊,这表不是一成不变的,设备重启或者端口断连,它可能就清空了,得重新学。

【实战经验】 有回在工地上,一个客户老说网络卡,我过去一查,发现MAC地址表里乱糟糟的,同一个MAC从好几个口冒出来。后来一查,是有人私接了交换机,搞出了环路。所以啊,兄弟们,MAC地址表要是异常,八成是环路或者地址漂移,赶紧查查STP生成树配没配好。
ARP表:IP地址和MAC地址的“翻译官”
ARP表嘛,就是记IP地址和MAC地址对应关系的。你想啊,网络通信时,光知道对方IP不行,还得知道它的MAC地址才能封装数据包。这时候ARP表就派上用场了——先查本地有没有这个IP对应的MAC,有就直接用,没有就发个ARP广播去问。
华为设备上敲dis arp就能看。比如下边这张图,MAC地址5489-98b1-79f4对应的IP是192.168.1.2。这玩意儿容易出问题,比如ARP攻击,搞个假MAC骗人,数据就跑到别人那去了。

【省钱技巧】 很多兄弟买设备时,总想上贵的、功能多的。其实小项目里,用普通交换机加静态ARP表就能省钱。比如监控网,把摄像头IP和MAC绑死,既防ARP欺骗,又省了买高级防火墙的钱。我试过好几次,效果杠杠的。
路由表:路由器的“导航地图”
路由表就更简单了,它就是路由器用来决定“往哪走”的。好比你要去北京,地图告诉你先到郑州,再到石家庄,最后到北京。路由表里的“下一跳”就是这种意思。比如去往192.168.2.0/24这个网段,下一跳是10.1.1.2,那数据包就扔给那个地址。
华为设备上用display ip routing-table查看。下边这张图就是个例子。注意啊,路由表分直连、静态、动态好几种,平时最常用的是直连和静态路由。


光说理论没意思,咱们拿两个实际案例过一遍。
案例一:PC1和PC2在同一网段,怎么通信?
拓扑很简单:PC1(192.168.1.1/24)和PC2(192.168.1.2/24)接在同一台交换机上。这是二层通信,不涉及路由表,只看MAC地址表和ARP表。
步骤拆解:
1. PC1要访问PC2,先查自己的ARP表,看看有没有PC2的IP(192.168.1.2)对应的MAC。头一次通信,表是空的,啥也没有。
2. 没招,PC1发个ARP广播,扯着嗓子喊:“谁是192.168.1.2?告诉我你的MAC!”交换机收到广播,顺手把PC1的MAC和端口GE0/0/1记到MAC地址表里。

3. PC2听到广播,就回了个单播包,告诉PC1自己的MAC。交换机又记下PC2的MAC从GE0/0/2口来的。PC1收到回复,把PC2的MAC存进自己的ARP表。
4. 这下PC1知道了PC2的MAC,封装好数据包发给交换机。交换机一查MAC地址表,发现目的MAC对应GE0/0/2口,直接扔过去。PC2收到,拆包一看,完事。

【踩过的坑】 以前有个活,PC1老是连不上PC2,查了半天发现是ARP表被静态写死了,MAC地址写错了一位。所以啊,兄弟们,别手贱乱改静态ARP,真要用,一定核对三遍。
案例二:PC3和PC4跨网段,怎么办?
这次复杂点:PC3(192.168.1.2/24,网关192.168.1.1)和PC4(192.168.2.2/24,网关192.168.2.1)隔着两台路由器R1和R2。这是三层通信,三张表全得用上。
步骤拆解:
1. PC3要访问PC4,一看IP不在同一网段,乖乖把数据包发给网关(192.168.1.1)。先查ARP表,发现网关MAC未知。
2. PC3发ARP广播找网关。R1听到,回复自己的MAC。PC3记下来。
3. PC3用网关MAC封装数据包,发给R1。R1拆包一看,目的IP是192.168.2.2,不是自己,就查路由表。发现下一跳是10.1.1.2(R2的接口IP)。
4. R1查ARP表,看有没有10.1.1.2对应的MAC。如果之前学过,直接封装;没学过,就再发ARP问。这里假设早就有了。

5. R1封装好发给R2。R2收到,拆包,查路由表,发现PC4是自己的直连网段,直接走端口。
6. R2查ARP表,找PC4的MAC(192.168.2.2),有就直接封装发给PC4。PC4收到,拆包一看,是自己的,结束。
![]()
你看,跨网段通信就是一层层查表、封装、转发。要是哪张表不对,数据就卡住了。所以平时调试,多敲敲dis命令,看看表是不是正常。
最后说一句,这三张表看着简单,真用熟了,能解决大部分网络故障。兄弟们有啥实战经验,也欢迎交流。
