a. 網橋的工作原理初識
l 緩存:網橋首先會對收到的數據幀進行緩存並處理;
學習:當幀經過網橋,網橋首先在網橋表中查找幀的源MAC地址,如果該地址不在網橋表中,則將有該MAC地址及其所對應的網橋端口信息加入(逆向學習法);
l 過濾:判斷入幀的目標節點是否位於發送這個幀的網段中(同一端口中) ,如果是,網橋就不把幀轉發到網橋的其他端口;
l 轉發:如果幀的目標節點位於另一個網絡,網橋就將幀發往正確的網段 (向另一端口轉發) ;
每個橋維護了一個基於MAC地址的過濾數據庫,網橋根據這個數據庫,把收到的幀往相應的局域網(端口)進行轉發。
在過濾數據庫中,列出了每個可能的目的地(目的MAC地址),以及它屬於哪一條輸出線路(一個端口號,即表示轉發給哪個LAN),每個表項還有一個超時設置。
可以及時學習改變了的地址;
轉發:如果在表中找到目標地址,則直接轉發給該目的MAC地址對應的端口;
轉發:如果在表中找不到目標地址,則按擴散的辦法將該數據發送給與該網橋連接的除發送該數據的網段外的所有網段。
以混雜方式工作(接收連接到該網橋的局域網上傳送的所有幀)。
b. 網橋的工作過程
l 假設橋在端口x上接收到一個MAC幀,有如下規則
1. 查詢網橋表中包的源MAC;如果沒有,將該MAC地址及其所對應的網橋端口信息加入;如果有,繼續下一步;
2. 查詢過濾數據庫,確定該目的MAC地址是否在除[端口x]外的其它端口中;如果目的MAC地址在端口x內,不進行轉發;
3. 在轉發時,如果目的MAC地址在過濾數據庫中的某個端口y中,確定端口y是否處在阻塞或轉發狀態(生成樹協議)。【在以后的生成樹算法中我們可以看到,一個端口可能有時候是阻塞的,以防止它接收或發送幀】如果端口y是非阻塞的,把該幀通過端口y轉發到它所連接的LAN中。
4. 在轉發時,如果目的MAC地址沒有找到,把該幀往除了它所到來的端口外的所有端口發送,即進行轉發(擴散)。
c. 網橋的場景解析
學習:站點A給B發送數據,網橋通過察看幀的源地址了解到A在端口1,過濾數據庫中加入<A,1>。
轉發:網橋並不知道B在何處,因此把幀向所有其它端口(即端口2和3)進行擴散。(網橋連接的所有端口,除端口1)
轉發:B收到A發過來的幀之后,可能會進行回應,即B發送數據給A,這個時候網橋察看源地址了解到B在端口2上,加入表項<B,2>,同時幀的目的地址A在過濾數據庫中存在,並且在端口1上,因此B發回給A的幀向端口1轉發
過濾:現在站點C向A發送數據,由於A、C和網橋連接到同一個集線器上,網橋也會收到該幀,察看源地址C,記錄C在端口1,加入表項<C,1>,同時目的地址A在過濾數據庫中並且所在的端口正是收到該幀的端口,因此不進行轉發。
老化:過濾數據庫表項的TTL每秒都增加,超過某個值則從數據庫中清除,一般缺省的TTL設置為300秒。老化主要是考慮到網橋的內存有限、節點移動的情況。