核心表項對比
表項 | 全稱 | 工作層級 | 主要功能 | 涉及設備 | 典型生命周期 |
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分鐘老化