核心表项对比
|
表项 |
全称 |
工作层级 |
主要功能 |
涉及设备 |
典型生命周期 |
|
MAC表 |
媒体访问控制表 |
数据链路层(二层) |
Mac地址和端口关系 |
交换机、网桥 |
动态学习 |
|
FDB表 |
转发数据库 (Forwarding DataBase) |
数据链路层(二层) |
Mac地址与端口关系,一般还包括vlanId |
交换机、网桥 |
动态学习(默认5分钟) |
|
ARP表 |
Address Resolution Protocol 地址解析协议表 |
网络层与数据链路层之间(二层和三层间) |
Ip地址和mac地址的关系 |
主机、路由器 |
动态(通常2-20分钟) |
|
路由表 |
Routing Table |
网络层(三层) |
存储目标网络与下一跳的映射关系 |
路由器、三层交换机、主机 |
静态或动态更新 |
详细解析
MAC表 & FDB表
事实上mac表和fdb表广义上可以说是一个东西,大多数情况下都是指代的同一个东西。狭义上的区别是mac表只有mac地址和端口关系,而fdb表则包含了vlanId信息。
因为fdb表包含更多的信息,所以现在业务上一般都使用包含了vlanId的fdb表。
那么这两个表项用来干嘛的?
主要是二层间数据转发时候使用,目标地址为mac,通过该表找到对应mac所在的端口,进一步将报文通过该端口转发发去。
这里需要提一下dot协议:
Dot1d:即 IEEE 802.1D,是 生成树协议(STP, Spanning Tree Protocol) 的标准,用于防止网络中的环路,确保冗余链路环境下数据帧的无环转发。
Dot1q:即 IEEE 802.1Q,是 VLAN 标签(VLAN Tagging) 的标准,用于在以太网帧中插入 VLAN 信息,实现虚拟局域网(VLAN)的划分。
|
特性 |
802.1D (Dot1d) |
802.1Q (Dot1q) |
|
用途 |
防止网络环路(STP) |
VLAN 标签(Trunking) |
|
工作层次 |
数据链路层(L2) |
数据链路层(L2) |
|
依赖关系 |
不依赖 VLAN |
依赖 VLAN 环境 |
|
帧格式 |
不修改帧结构 |
在以太网帧头插入 4 字节 VLAN Tag |
|
典型应用 |
交换机防环 |
跨交换机的 VLAN 通信 |
- Dot1d(802.1D) 解决 环路问题(STP)。
- Dot1q(802.1Q) 解决 VLAN 跨设备通信问题(Trunking)。
我们在读取mac表(或者说fdb表)信息时,都是读取以上两个信息,一般是优先读取dot1q的表项信息,如果其不存在则读取dot1d表项的信息。
ARP表
在设备发送ip包出去的时候,此时传输数据只有ip头部,传输到二层需要封装帧头和帧尾,这时候需要查询arp表确定下一跳的mac地址,用于三层ip包封装成二层帧时的地址填充。
我们来看下网络中数据发送和接受流程中的封装和解封装情况:
封装(Encapsulation):发生在发送端,是自上而下(从高层到低层)的过程
应用数据 → TCP/UDP头部 → IP包头 → 以太网帧头帧尾
解封装(Decapsulation):发生在接收端,是自下而上(从低层到高层)的过程
去掉以太网帧头帧尾 → 解析IP包头 → 处理传输层头部 → 交付应用数据
|
发送端封装流程: [IP包] → (查询ARP表获得MAC) → [添加帧头] → [完整以太网帧] ↑ 需要ARP表 接收端解封装流程: [完整以太网帧] → [检查MAC] → [去掉帧头] → [IP包] ↓ 不需要ARP表 |
即发送前要封装,封装需要MAC,MAC来自ARP表。
路由表
决定数据包在三层中的下一跳地址,包括目标网络、子网掩码、下一跳、出接口等信息。
可以通过静态配置或通过路由协议动态学习,包含管理距离和度量值等路由选择参数,存在于三层设备(路由器、三层交换机)和主机上
这个表项相对来说我们更常见一点,偶尔会遇到在主机上配置路由的情况,罗列一下对应的命令:
|
环境 |
命令 |
|
Windows |
route print |
|
Linux |
ip route show |
|
网络设备(交换机、路由器等) |
Show ip route |
另外还有在Windows增加路由的命令,举例如下:
Windows环境:
route -p ADD 10.10.5.0 MASK 255.255.255.0 10.10.5.254
Linux环境:
route add -net 10.10.5.75 netmask 255.255.255.8 gw 10.10.5.254
ND表
Ipv6中的邻居发现协议表(neighborhood discovery protocol)
相当于ipv6协议的ARP表,实现ipv6地址到mac地址的解析。
总结
数据流转过程中的表项协作:
1、应用层:主机名解析(host文件/DNS)
2、网络层:路由表决定出口和下一跳
3、ARP/ND表:将下一跳ip解析为mac地址
4、数据链路层:FDB/MAC表决定具体从哪个物理口转发出去
路由表:三层,解决“下一跳去哪”的问题,静态或根据协议更新(如ospf每30分钟刷新)
ARP表:二层和三层间,解决“目标MAC是谁”的问题,20分钟老化
FDB/MAC表:二层,解决“从哪个口出去”的问题,5分钟老化
18万+

被折叠的 条评论
为什么被折叠?



