一 概述 一層的相關介紹
CSMA/CD
網橋和交換機的區別
沖突 共享 端口密度 性能 功能
交換機的三種主流轉發方式
存儲轉發 完整的收到數據幀 然后校驗 再傳輸 速度慢延遲大
快速轉發 交換機確定幀的目的
mac地址和正確的端口號就轉發幀 通常收到幀頭的14個字節左右就開始轉發
轉發速度快延遲小 但是不可靠
無碎片轉發 快速轉發的修訂版 當前交換機的缺省模式 檢查前64個字節后轉發 fragment free
多種交換

如何對轉發方式中的mac地址 字節校驗等等進行處理呢?
就需要用到軟件交換 或者硬件交換 或者MLS技術
軟件交換 完全通過cpu實現傳統幀的交換 早期交換機和網橋共同使用此種方式 考驗系統能力
硬件交換 通過專門的asic 組件處理數據包 再硬件層面單獨的對數據幀進行查找 不通過軟件
MLS multiple layer switch 多層交換 通過硬件來交換和路由選擇數據包 通過硬件支持4-7層的交換。交換 矩陣 與單純的硬件交換相比 沒有沖突 圖中比較 圖中黃色的可以代表接口
MLS中cisco交換分為兩種
基於netflow的MLS
1.傳統的基於網流
讓asic能夠對唄路由的數據包執行2層重寫 包括S/D MAC CRC
原理 交換機將受到的數據流中的第一個包交給三層引擎處理 后面的數據包以進程交換的額方式處理 即 查找一個包即可
如何判斷數據包哪個屬於同一流 需要用到三層和四層的
五元組
的概念 既有二層又有三層又有四層 所以 才叫多層交換
五元組包括三層的源ip 目的ip 源port 目的port 及協議號
當發現任意兩個數據報文中的五元組的內容相同 則認為是同一個tcp流 執行相同的轉發策略
2.centralized forwarding 集中式轉發
使用一個專用的asic 做轉發決策 是所有接口的樞紐
3.distributed forwarding 分布式轉發
在sw的接口和模塊上獨立地做出轉發決策 中央交換引擎將第三層轉發、路由選擇表何重寫表何本地表(本 地表位於支持分布式交換的模塊之上)進行同步
CEF cisco express forwarding
基於拓撲的轉發模型 預先將所有的路由信息加入FIB 使sw能快速查找路由信息 解決了遞歸的問題
網絡分類 按照 訪問對象分
MA 多目的 分為BMA 廣播和 NBMA非廣播
P2P 單一目的地
以太網是最典型的廣播多路訪問網絡 即上面的BMA
網絡拓撲分類 總線 已經見不到
令牌環 雙向令牌環 信令 軍用網絡 或專用網絡 安全性比較高
星型 或擴展星型
全互聯或者部分互聯
二 二層介紹
以太網是一種二層技術
一層 定義了各種無力傳輸介質 以及接口類型 拓撲結構
二層 定義了MAC地址 數據封裝類型
A 數據封裝類型
ethernet II
802.3

數據內容分為兩類
一類是由用戶終端發送的數據 例如email qq 游戲 視頻等等 數據
oui為廠商的地址 不同的廠商有不同的oui 廠商:intel cisco 等等都會買一系列的網卡oui地址
另一類是由網絡設備(交換機,路由器)發送的數據 用來網絡方面的相關的協議 狀態 網 絡狀態維護等等 為第一類服務
其中的網絡狀態維護或維持 是重點 就是802.3 協議封裝
如果此數據與終端用戶數據相關 則用ethernet ii封裝
二層轉發 依據mac地址 端口

交換機必須有cam 可尋址內存 二重可尋址內存
t-cam 三重可尋址內存 尋址內存非專業叫法叫mac地址表
mac地址表有三部分組成
1 出廠寫入 show mac address-table 或者 show mac-address-table

圖中的vlan為all type為static ports為cpu的 就是出廠寫入的mac地址 預留給協議使用 某 些協議會使用其中的某一個 當做協議的目的mac 私有的技術 明確告訴收到這些mac地址的數據 時候 要把數據交給cpu。
2 出廠預留 表項當中看不到 地址范圍
show version

高亮部分顯示背板 基准mac地址
在接口下的命令 show interface fa0/1

高亮顯示的是接口的mac地址與上面的背板mac地址的關聯
物理接口和vlan一樣都會獲得mac地址 地址線性分配 按照接口創建先后順序分配 與接口號無 關。
主板預留的作用是用來支持某些特殊的功能 地址的多少會影響交換機的功能。vlan、隧道等等
交換機重要指標 :cam表大小(mac地址條目的多少),背板預留mac的多少 越多將來支持的功 能 可能越多 性能越強悍。
3 動態學習或者網工寫入
圖中的最后一個 type為dynamic ports為fa0/24
出廠時 應該是空的值
mac地址學習過程
交換機---收到電平信號或光脈沖信號----》010101111000------》按照ethernet結構變為幀----》查看幀結構中 的目的地址和源地址,
1.先看源mac地址 並將其加入自己的cam中(內存中)
2. 再把收到此數據幀的接口編號和 vlan編號加入cam表
3.最后看前面的目的mac地址 並查看cam表中是否有此mac地址
如果沒有 則交換機將此數據幀 從屬於此vlan 除了入接口外的 其余所有的接口均發送一 遍 稱為flood 也叫泛洪
接口的mac地址的功能:
a pca----------------sw-----------------pcb 在此種方式中接口的mac地址沒有用處
pca-----------sw1-------------sw2-----------pcb 在此種方式中接口的作用體現出來 交換機之間協商協議 選舉 等等的作用 需要用到接口的mac地址
sw1是三層交換機 pca與pcb為相同的網段 pca與pcc為不同的網段
sw1為三層交換機 r1和r2為不同網段 需要sw1進行三層轉發 圖中1.2地址對應mac為4.5.6 2.1ip地址對 應mac地址為7.8.9 sw1必須分別有兩個接口與r1和r2在相同的子網 構建FIB表項
b 區分二層和三層

工作過程:1先看數據二層幀頭的目的mac d-mac 是未知mac或者是cam表中的通過動態學習的mac 則 是需要二層轉發。
2.如果二層幀頭的目的mac是 預留的mac地址(包括背板預留mac和接口預留mac) 則將 二層幀頭拆掉 查閱三層的包頭 再進行轉發。
轉發原理:一層設備 二層設備 三層設備
二層轉發
pcA ---------------sw1------------sw2--------------router1
mac1.2.3 mac a.b.c
192.168.1.1 192.168.1.2
s-mac d-mac s-ip d-ip
此條目需要自己讀之后 仍然要泛洪處理
手動寫的現實類型為static 接口為fa0/23 在cam表中
pcA--1. 1.2.3 ffff 1.1 1.2 目的mac地址為廣播mac ----sw1
sw1--2. 1.2.3 ffff 1.1 1.2 sw1將數據包中的源mac1.2.3寫入cam表 並且表明接口
再查d-mac 發現ffff沒有 就泛洪----》sw2
sw2--3 1.2.3 ffff 1.1 1.2 sw2與sw1的操作一樣沒有改變數據 僅僅學習了mac接口
router-4 router先看二層 看到ffff廣播幀 然后拆掉二層幀頭 查看三層包頭 目的ip為1.2 是自己, 所以就將三層包頭拆掉查看更高層的數據 得出結論是arp-request 有人需要mac地址 所以router會回復一個arp reply 內容如下 回包
arp-reply--5 a.b.c 1.2.3 1.2 1.1 發給sw2
sw2--6 a.b.c 1.2.3 1.2 1.1 sw2查看源mac地址 進行學習並且關聯接口 再查看目的mac地址 為1.2.3 查看cam表 有此mac地址 所以從條目中的端口發出去
sw1--7 a.b.c 1.2.3 1.2 1.1 sw1查看源mac地址 進行學習並且關聯接口 再查看目的mac地址 為1.2.3 查看cam表 有此mac地址 所以從條目中的端口發出去
pcA--8 a.b.c 1.2.3 1.2 1.1 pcA查看 二層幀頭查看目的mac地址 發現此幀是給自己的 就拆掉二層的幀頭 查看三層包頭 發現目的ip也是自己 就拆掉三層包頭 查看四層內容 發現是arp reply 所以知道了路由器的mac地址和ip地址 並存放到arp表中 此表存放mac和ip的對應關系。
深入一
**交換機是否有全f的mac地址 用show命令查看

**與此類似 當路由器收到pcA發過來的arp-request數據包時 也需要學習 pcA的mac地址 即將收到的數據幀中的源mac和源ip加入到自己的
arp表中。優化的作用
**router 中除了擁有arp表之外 還有一個
FIB表 forwarding information database 這是路由器的轉發表 如果有條目就單播發 沒有此條目就丟包。
**為什么說 pc 打印機 等等終端是三層設備 從轉發原理上考慮
sw查閱cam表 路由器查閱FIB和arp表 pc查閱FIB和arp表 其余終端也是如此 所以就稱為三層設備
windows中查閱路由表的命令 route print arp -a 查看arp表
**arp動態學習的mac地址和ip地址的對應 時間的問題 自己設定保活時間
arp表項如果永遠存在 則不會出現封裝失敗的情況 即丟包的情況出現
拓撲變化較大的環境下 需要arp表項的保活時間比較短
查看交換機默認mac地址表的老化時間
show mac address-table aging-time 默認時間為300s 就是5分鍾
路由器中的arp命令 show arp
然后進入接口 修改時間: int **
arp timeout **
修改arp表項:arp 192.168.1.1 100.200.110 arpa 其中192...為ip地址 100...位mac地址 arpa 為類型
修改mac地址表項:mac address-table static 100.200.300 vlan 1 interface fa0/23
static為靜態 100.**為mac地址

三層轉發

三層需要兩個表來進行轉發 FIB和ARP表
轉發過程:
s-mac d-mac s-ip d-ip
1.r1查arp 沒有2.2的對應的mac地址 封包失敗 丟包
2.r1發送arp請求
1.2.3 fff 1.1
2.2
3.sw1收到此數據包 先mac學習 之后有權利看全f的數據包 拆幀后發現目的ip地址 和源ip地址不在同一個網 段 所以不能泛洪 即不能廣播 所以需要交換機的代理arp功能 開啟此功能 用交換機1.2ip地址的mac地址4 .5.6作為arp-reply 回復給r1
arp-reply 4.5.6 1.2.3
2.2 1.1
4.r1可以封包並且發送
1.2.3 4.5.6 1.1
2.2
5.sw1收到之后發現二層mac地址是自己 但是三層目的ip地址不是自己對應的1.2 而是2.2 所以需要繼續轉發
查FIB和arp兩張表 此數據幀中的二層頭已經被拆掉 所以需要重新封裝好 源mac為2.1的地址 目的mac為2.2的地址 需要到arp表項中查 發現沒有 所以封裝失敗 丟包 所以也需要發送arp-request
arp-request 7.8.9 fff 2.1 2.2
6.sw2收到之后執行二層轉發 先學習 寫cam表 再泛洪
7.8.9 fff 2.1 2.2
7.r2收到此數據包 查看目的mac 發現是自己 拆二層幀頭 查看三層包頭 發現目的ip是自己 再拆掉三層 發現是arp-request 所以會回應一個arp-reply 給sw2
8.sw2收到后學習源mac 然后單播給sw1
9.sw1收到arp-reply 數據為a.b.c 7.8.9 2.2 2.1
學習源mac 構建arp 表項
10.r1再發送數據包給r2 先到達sw1 查看二層幀頭 目的mac為自己 目的ip為2.2
查看arp表項發現有此記錄 重新封裝二層幀頭 源mac為7.8.9 目的mac為a.b.c 之后進行三層的交換轉發 。
對應二層轉發 三層轉發的區別:
1.不同點1:r1pingr2會發現 ..!!! 原因就是r1封裝第一次失敗 之后做了arp請求
sw1也封裝第一次失敗 之也后做了arp請求
封裝兩次失敗 所以有兩個.
2.不同點2:二層轉發不修改原數據的內容 但是三層轉發會修改原來的數據 重新封裝二層的數據 即源目 mac地址。一定會被改變
注意
物理拓撲和邏輯拓撲圖的區別
1.pc1-----sw1----sw2---pc2 物理拓撲 針對只有二層交換的情況
對應的邏輯拓撲可以寫成:pc1------------pc2
2.pc1------sw1-----sw2------pc2 物理拓撲 針對sw1執行了三層交換的情況
對應的邏輯拓撲需要寫成pc1-------sw1------pc2
得出結論 二層交換不改變數據 交換機只是查看 所以可以省略
而三層交換改變了數據的包頭內容 不能省略。