计算机网络中的常用表项梳理

核心表项对比

|----------|-------------------------------------|---------------------|------------------------|--------------|--------------|
| 表项 | 全称 | 工作层级 | 主要功能 | 涉及设备 | 典型生命周期 |
| 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 :即 IEEE802.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分钟老化

相关推荐
(:满天星:)43 分钟前
第31篇:块设备与字符设备管理深度解析(基于OpenEuler 24.03)
linux·运维·服务器·网络·centos
野蛮人6号2 小时前
虚拟机网络编译器还原默认设置后VMnet8和VMnet1消失了
网络·vmware·虚拟机网络编译器·vmnet8消失
scuter_yu3 小时前
主流零信任安全产品深度介绍
运维·网络·安全
江苏思维驱动智能研究院有限公司3 小时前
Sophos 网络安全:全球领先的自适应安全解决方案提供商
网络·安全·web安全
面朝大海,春不暖,花不开3 小时前
Java网络编程:TCP/UDP套接字通信详解
java·网络·tcp/ip
Bruce_Liuxiaowei7 小时前
常见高危端口风险分析与防护指南
网络·网络安全·端口·信息搜集
tmacfrank7 小时前
Android 网络全栈攻略(四)—— TCPIP 协议族与 HTTPS 协议
android·网络·https
liulilittle7 小时前
深度剖析:OPENPPP2 libtcpip 实现原理与架构设计
开发语言·网络·c++·tcp/ip·智能路由器·tcp·通信
cui_win7 小时前
【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
linux·网络·tcp/ip