淺談?dòng)嘘P(guān)以太網(wǎng)交換機(jī)協(xié)議
以太網(wǎng)交換機(jī)是一種基于MAC地址識別,能完成封裝轉(zhuǎn)發(fā)數(shù)據(jù)包功能的網(wǎng)絡(luò)設(shè)備。交換機(jī)可以“學(xué)習(xí)”MAC地址,并把其存放在內(nèi)部地址表中,通過在數(shù)據(jù)幀的始發(fā)者和 目標(biāo)接收者之間建立臨時(shí)的交換路徑,使數(shù)據(jù)幀直接由源地址到達(dá)目的地址。
1.交換機(jī)根據(jù)收到數(shù)據(jù)幀中的源MAC地址建立該地址同交換機(jī)端口的映射,并將其寫入MAC地址表中。
2.交換機(jī)將數(shù)據(jù)幀中的目的MAC地址同已建立的MAC地址表進(jìn)行比較,以決定由哪個(gè)端口進(jìn)行轉(zhuǎn)發(fā)。
3.如數(shù)據(jù)幀中的目的MAC地址不在MAC地址表中,則向所有端口轉(zhuǎn)發(fā)。這一過程稱為泛洪(flood)。
4.廣播幀和組播幀向所有的端口轉(zhuǎn)發(fā)。
以太網(wǎng)交換機(jī)了解每一端口相連設(shè)備的MAC地址,并將地址同相應(yīng)的端口映射起來存放在交換機(jī)緩存中的MAC地址表中。 轉(zhuǎn)發(fā)/過濾:當(dāng)一個(gè)數(shù)據(jù)幀的目的地址在MAC地址表中有映射時(shí),它被轉(zhuǎn)發(fā)到連接目的節(jié)點(diǎn)的端口而不是所有端口(如該數(shù)據(jù)幀為廣播/組播幀則轉(zhuǎn)發(fā)至所有端口)。
消除回路:當(dāng)交換機(jī)包括一個(gè)冗余回路時(shí),以太網(wǎng)交換機(jī)通過生成樹協(xié)議避免回路的產(chǎn)生,同時(shí)允許存在后備路徑。
1.交換機(jī)的每一個(gè)端口所連接的網(wǎng)段都是一個(gè)獨(dú)立的沖突域。
2.交換機(jī)所連接的設(shè)備仍然在同一個(gè)廣播域內(nèi),也就是說,交換機(jī)不隔絕廣播(惟一的例外是在配有VLAN的環(huán)境中)。
3.交換機(jī)依據(jù)幀頭的信息進(jìn)行轉(zhuǎn)發(fā),因此說交換機(jī)是工作在數(shù)據(jù)鏈路層的網(wǎng)絡(luò)設(shè)備(此處所述交換機(jī)僅指傳統(tǒng)的二層交換設(shè)備)。
交換機(jī)的工作原理是,當(dāng)一個(gè)端口收到一個(gè)數(shù)據(jù)幀時(shí),首先檢查改數(shù)據(jù)幀的目的MAC地址在MAC地址表(CAM)對應(yīng)的端口,如果目的端口與源端口不為同一個(gè)端口,則把幀從目的端口轉(zhuǎn)發(fā)出去,同時(shí)更新MAC地址表中源端口與源MAC的對應(yīng)關(guān)系;如果目的端口與源端口相同,則丟棄該幀。
有如下的工作場景:
一個(gè)4口的switch,端口分別為Port.A、Port.B、Port.C、Port.D對應(yīng)主機(jī) A,B,C,D,其中D為網(wǎng)關(guān)。當(dāng) 主機(jī)A向B發(fā)送數(shù)據(jù)時(shí),A主機(jī)按照OSI往下封裝數(shù)據(jù)幀,過程中,會(huì)根據(jù)IP地址查找到B主機(jī)的MAC地址,填充到數(shù)據(jù)幀中的目的MAC地址。
發(fā)送之前網(wǎng) 卡的MAC層協(xié)議控制電路也會(huì)先做個(gè)判斷,如果目的MAC相同于本網(wǎng)卡的MAC,則不會(huì)發(fā)送,反之網(wǎng)卡將這份數(shù)據(jù)發(fā)送出去。Port.A接收到數(shù)據(jù)幀,交 換機(jī)按照上述的檢查過程。
在MAC地址表發(fā)現(xiàn)B的MAC地址(數(shù)據(jù)幀目的MAC)所在端口號為Port.B,而數(shù)據(jù)來源的端口號為Port.A,則交換機(jī) 將數(shù)據(jù)幀從端口Port.B轉(zhuǎn)發(fā)出去。B主機(jī)就收到這個(gè)數(shù)據(jù)幀了。
這個(gè)尋址過程也可以概括為IP->MAC->PORT,ARP欺騙是欺騙了IP/MAC的應(yīng)關(guān)系,而MAC欺騙則是欺騙了MAC/PORT的 對應(yīng)關(guān)系。比較早的攻擊方法是泛洪交換機(jī)的MAC地址,這樣確實(shí)會(huì)使交換機(jī)以廣播模式工作從而達(dá)到嗅探的目的,但是會(huì)造成交換機(jī)負(fù)載過大,網(wǎng)絡(luò)緩慢和丟包 甚至癱瘓,我們不采用這種方法。
工作環(huán)境為上述的4口swith,軟件以cncert的httphijack 為例,應(yīng)用為A主機(jī)劫持C主機(jī)的數(shù)據(jù)。以下是劫持過程(da為目的MAC,sa為源MAC)
1.)A發(fā)送任意da=網(wǎng)關(guān).mac、sa=B.mac的數(shù)據(jù)包到網(wǎng)關(guān)。
這樣就表明b.mac 對應(yīng)的是port.a,在一段時(shí)間內(nèi),交換機(jī)會(huì)把發(fā)往b.mac 的數(shù)據(jù)幀全部發(fā)到a主機(jī)。這個(gè)時(shí)間一直持續(xù)到b主機(jī)發(fā)送一個(gè)數(shù)據(jù)包,或者另外一個(gè)da=網(wǎng)關(guān).mac、sa=b.mac的數(shù)據(jù)包產(chǎn)生前。
2.)A 主機(jī)收到網(wǎng)關(guān)發(fā)給B的數(shù)據(jù),記錄或修改之后要轉(zhuǎn)發(fā)給B,在轉(zhuǎn)發(fā)前要發(fā)送一個(gè)請求B.MAC的廣播,這個(gè)包是正常的。
【編輯推薦】