廣播風暴(broadcast Storm) 說明

廣播風暴(broadcast Storm)如果要必免這樣的情況產生可以使用Spanning Treel
切VLAN並不能解決廣播風暴(broadcast storm):)

廣播風暴指數據幀形成環路,而幀頭中無ttl的結構,所以幀始終有效,由於廣播沒有特定目標地址,所以hub/swtich會永遠轉發下去
引起網絡廣播風暴的幾種原因
1、網絡設備原因:我們經常會有這樣一個誤區,交換機是點對點轉發,不會產生廣播風暴。在我們購買網絡設置時,購買的交換機,通常是智能型的Hub,卻被奸商當做交換機來賣。這樣,在網絡稍微繁忙的時候,肯定會產生廣播風暴了。

2、網卡損壞:如果網絡機器的網卡損壞,也同樣會產生廣播風暴。損壞的網卡,不停向交換機發送大量的數據包,產生了大量無用的數據包,產生了廣播風暴。由於網卡物理損壞引起的廣播風暴,故障比較難排除,由於損壞的網卡一般還能上網,我們一般借用Sniffer局域網管理軟件,查看網絡數據流量,來判斷故障點的位置。

3、網絡環路:曾經在一次的網絡故障排除中,發現一個很可笑的錯誤,一條雙絞線,兩端插在同一個交換機的不同端口上,導致了網絡性能急驟下降,打開網頁都非常困難。這種故障,就是典型的網絡環路。網絡環路的產生,一般是由於一條物理網絡線路的兩端,同時接在了一台網絡設備中。

4、網絡病毒:目前,一些比較流行的網絡病毒,Funlove、震盪波、RPC等病毒,一旦有機器中毒後,會立即通過網絡進行傳播。網絡病毒的傳播,就會損耗大量的網絡帶寬,引起網絡堵塞,引起廣播風暴。

5、黑客軟件的使用:目前,一些上網者,經常利用網絡執法官、網絡剪刀手等黑客軟件,對網吧的內部網絡進行攻擊,由於這些軟件的使用,網絡也可能會引起廣播風暴

目前能檔Broadcast封包的只有Router這一層
當你有很多網段時,Router就是扮演Gateway的腳色來串聯個網段並阻斷廣播造成的影響
一般所謂的 L2 switch 不能擋廣播, L3 route 才能.

在TCP/IP對網路定址的定義中,有一個位址是用來代表此網段上的全部電腦的,就是廣播(broadcast)位址,定義為「將子網路的bit全部設成1」。比如說,10.1.1.0這個網域,其廣播位址為10.1.1.255。當封包目標IP為這個地址時,該封包會透過L1實體網路介面的廣播編號(FF:FF:FF:FF:FF:FF)傳送出去,而所有連接此網路的網路卡都會將此封包接收進主機中,對此封包進行回應或處理。

而Client送出的broadcast封包進到Target的網域時,L3網路層(IP layer)的廣播位址(如:10.1.1.255)
必須要能夠轉換成L1實體層(Physical layer)的Mac Address(FF:FF:FF:FF:FF:FF)才能夠被該區所有PC的網卡接收,
而扮演這個轉換的腳色,就是Router。

而一般的L2連結層Switch是負責一開始的資料編碼與打包 (frame或packet),並加入ICMP Control,再與L1實體層做Link。

當該網段所有的PC接收封包會開始進行處理與回應時,問題就產生了!
Client若假冒其他主機之名向Router發出broadcast的ICMP Echo Request。由於目的地是廣播位址,Router在收到之後會對該區域網段內的所有電腦發出此ICMP封包,所有該區的電腦在接收到此訊息後,會對來源主機(也就是被假冒的受害主機,非原發送封包主機)送出ICMP Echo Reply回應。

當所有的ICMP封包在極短的時間內湧入被假冒的受害主機內,不但造成網路壅塞,更會使受害主機因為無法大量承受與即時反應,造成系統中斷而當機、服務暫停。另外,這些ICMP broadcast(packet flood)被送進該網域內,將會造成該網段內的壅塞,而該網域上的所有電腦都成為攻擊的受害者,也就變成所謂的ICMP Dos/Smurf攻擊。

將router的廣播功能關掉,便可以阻止此種broadcast封包的擴散,阻擋攻擊。
另外設定Fliter對外界傳入的封包過濾。不過如果是來自網域內部的攻擊時,這種防禦方法無效。

如果 switch 接收到的是廣播封包-例如: ARP request

那麼當它比對該 Frame 的 ethernet destination address 為 FF:FF:FF:FF:FF:FF 時在 switch 的
MAC Address Table 一定找不到,因此會將 Frame flood 出去.

在TCP/IP對網路定址的定義中,有一個位址是用來代表此網段上的全部電腦的,就是廣播(broadcast)位址,定義為「將子網路的bit全部設成1」。比如說,10.1.1.0這個網域,其廣播位址為10.1.1.255。當封包目標IP為這個地址時,該封包會透過L1實體網路介面的廣播編號(FF:FF:FF:FF:FF:FF)傳送出去,而所有連接此網路的網路卡都會將此封包接收進主機中,對此封包進行回應或處理。

而Client送出的broadcast封包進到Target的網域時,L3網路層(IP layer)的廣播位址(如:10.1.1.255)
必須要能夠轉換成L1實體層(Physical layer)的Mac Address(FF:FF:FF:FF:FF:FF)才能夠被該區所有PC的網卡接收,
而扮演這個轉換的腳色,就是Router。

而一般的L2連結層Switch是負責一開始的資料編碼與打包 (frame或packet),並加入ICMP Control,再與L1實體層做Link。

當該網段所有的PC接收封包會開始進行處理與回應時,問題就產生了!
Client若假冒其他主機之名向Router發出broadcast的ICMP Echo Request。由於目的地是廣播位址,Router在收到之後會對該區域網段內的所有電腦發出此ICMP封包,所有該區的電腦在接收到此訊息後,會對來源主機(也就是被假冒的受害主機,非原發送封包主機)送出ICMP Echo Reply回應。

當所有的ICMP封包在極短的時間內湧入被假冒的受害主機內,不但造成網路壅塞,更會使受害主機因為無法大量承受與即時反應,造成系統中斷而當機、服務暫停。另外,這些ICMP broadcast(packet flood)被送進該網域內,將會造成該網段內的壅塞,而該網域上的所有電腦都成為攻擊的受害者,也就變成所謂的ICMP Dos/Smurf攻擊。

將router的廣播功能關掉,便可以阻止此種broadcast封包的擴散,阻擋攻擊。
另外設定Fliter對外界傳入的封包過濾。不過如果是來自網域內部的攻擊時,這種防禦方法無效。

Broadcast Storm
因為把兩台Switch的實體線路接成Loop的關係,
簡單說,就是網路封包可以從SwitchA[PortA]到SwitchB[PortA],又可以從Switch[PortB]回到SwitchA上

由於,Switch會自動學習MAC address
在Switch MAC Table中紀錄著往同一個目的地上會有兩份MAC address
所以會造成網路封包會在這兩台Switch中一直相互傳送,吃掉網路的頻寬和Switch的資源

所以才會有STP這玩意出來

先有一個觀念,每個IP(Layer3)都會有一個相對應的MAC(Layer2)
像是IP:0.0.0.0 其所對應的MAC:FF FF FF FF FF FF
像是IP:192.168.1.255(192.168.1.0網段的廣播封包就是用這個IP),其所對應的MAC:[與發出封包的電腦的MAC 前四碼相同]FF FF

第二個觀念,MAC TABLE 的中每筆資料至少會有下列兩欄 1.MAC ADDRESS 2.在Switch上的哪個Port

第三個觀念,Switch 對於封包會做以下的處置
1.將封包DESTATION MAC位置與MAC TABLE裡相比對
2.如果MAC TABLE有此資料,就將該往該紀錄的PORT送出
3.如果沒有資料,就會往每個PORT送(flood),如果有接收到TCP SYN回應,會把MAC ADDRESS及Switch Port新增到MAC TABLE上

第四個觀念,Switch不理會IP ADDRESS,它只管MAC ADDRESS

言歸正傳 ^^
廣播封包有兩種,
一種是本身網域的廣播封包,其IP是xxx.xxx.xxx.255,其MAC是[與發出封包的電腦的MAC 前四碼相同] FF FF
一種是全世界通行的廣播封包,其IP是0.0.0.0,其MAC是FF FF FF FF FF FF

如果一台Switch上面有接很多不同網段的話,每個網段的廣播封包要如何處理?
很簡單,Switch只會去比較前面四碼,再把廣播封包送到前四碼相同的MAC ADDRESS而已
除非是收到MAC ADDRESS=FF FF FF FF FF FF 的封包或是第一次收到的封包,才會往每個PORT送(flood)

pc1
|
switchA
| |
switchB
|
pc2

1.PC1丟出一個封包(來源:PC1 目的:PC2)
2.SWITCHA收到PC1的封包,此時SWITCHA的MAC TABLE已經學習到[往PC1的封包,PC1的MAC,PORT3]
3.因為一開始不知道要往哪送,所以用FLOOD
4.SWITCHA的MAC TABLE學習到PC2的封包要丟給SWITCHB
 這時候SWITCHA的 MAC TABLE新增[往PC2的封包,SWITCHB的MAC,PORT1]
5.SWITCHB的PORT1收到SWITCHA的封包,
 此時SWITCHB的MAC TABLE已經學習到[往PC1的封包,SWITCHA的MAC,PORT1]
6.SWITCHB使用FLOOD來找出PC2的位置
7.SWITCHB的MAC TABLE學習到PC2的封包可以往兩個地方丟,
 一個是SWITCHB的PORT3[接PC2]-->SWITCHB的PORT3會收到PC2回應
 另一個是SWITCHB的PORT2[接SWITCHA]-->SWITCHB的PORT2會收到SWITCHA會回應說"往PC2的封包可以經由SWITCHA的PORT1送"
 此時SWITCHB的MAC TABLE=[往PC2的封包,PC2的MAC,PORT3]及[往PC2的封包,SWITCHA的MAC,PORT2]
8.SWITCHB把要送到PC2的封包往PORT2及PORT3送
9.SWITCHA的PROT2收到SWITCHB的PORT2送來的"要往PC2的封包"
10.SWITCHA比對的MAC TABLE,把封包往PORT1送
11.SWITCHB收到SWITCHA的"要往PC2的封包",比對MAC TABLE,往PROT2及PORT3送
12.PC2由於已經收到相同的封包了(TCP的SYN NUMBER相同),所以會丟棄此封包
13.SWITCHA重複第10步的動作

MAC TABLE       SWITCHA             SWITCHB
STEP1           X                X
STEP2       [PC1,PC1 MAC,PORT3]        X
STEP4       [PC1,PC1 MAC,PORT3]        X
          [PC2,SWITCHB MAC,PORT1]        
STEP5       [PC1,PC1 MAC,PORT3]  [PC1,SWITCHA MAC,PORT1]
          [PC2,SWITCHB MAC,PORT1]        
STEP7       [PC1,PC1 MAC,PORT3]  [PC1,SWITCHA MAC,PORT1]
          [PC2,SWITCHB MAC,PORT1]  [PC2,SWITCHA MAC,PORT2]  ====>這個就是造成Broadcast Storm的元兇

實際上,
在STEP4中,SWITCHA學到路徑會有兩筆
一筆是[PC2 SWITCHB PORT1]
另一筆是[PC2 SWITCHB PORT2]

在STEP5中,SWITCHB學到路徑也會有兩筆
一筆是[PC1 SWITCHA PORT1]
另一筆是[PC1 SWITCHA PORT2]

這又會牽扯到,因為接成LOOP的關係會造成SWITCH的MAC TABLE不穩定

一般說的 ATM , CSMA/CD , Token-Ring , Wireless LAN , FDDI 網路都可以經由 "橋接器" 互相連結.
ATM:中文翻譯是叫做非同步傳輸模式,他是把Layer2封包切成每一個53BYTE來傳輸,減少不必要的TCP SYN,來增加實際傳輸的頻寬
CSMA/CD:中文的翻譯簡單來說叫做碰撞偵測,他是當HUB中有封包產生碰撞的時候,HUB對於產生碰撞的封包處理的機制
Token-Ring:這是在IEEE802.3[現在所使用的ETHERNET遵循的規範]產生前所用的網路技術,有4Mbps及16Mbps兩種頻寬[好像是IEEE802.2吧]
Wireless LAN:無線網路,主要是規範在IEEE802.11a/b/g中,規範發射頻率,通道,發射功率........
FDDI:使用Token-Ring規範的網路環境
IPX:是NOVELL推出來的規範,他的網路定址方式=MAC+IP

以上這些,幾乎是Layer1(實體線路層)的規範
跟TCP/IP完全扯不上關係...ˇˇ,除了TR、FDDI和IPX之外

IPX:
他也是遵守TCP/IP的規範,只不過他的Layrer3封包標頭和Layer2連是在一起的
假設有一台PC,他的網路卡MAC是AA:BB:CC:DD:EE:FF,IP是11.22.33.44
那他在IPX網路中的識別碼=AA.BB.CC.DD.EE.FF.11.22.33.44共十組16進制碼
如果在IP網路中的話,就如我們一般所知的MAC和IP的方式

BRIDAGE(橋接器):
原則上,BRIDAGE不會管他要傳送的封包格式是什麼東西,因為他根本不會去看
BRIDAGE的作用很簡單,他就是把PORTA的訊號(電位)原原本本的送到PORTB
就好像是PORTA及PORTB是同一點[橋接器:顧名思義就是把PORTA及PORTB像橋一樣把他們接起來]
也就是說,BRIDAGE他不看Layer2以上是什麼格式
他只看你的訊號是如何[這是屬於Layer1的範圍]
因此,不管你在PORTA及PORTB上用的是不是同一種FRAME格式都會轉送
會對看FRAME裡面是什麼的是屬於Layer2以上的設備,像是SWITCH之類的

所以當IPX的網路和IP網路接在一起的時候
FRAME可是各跑各的
除非有某台設備(PC、SWITCH、ROUTER....)有設定可以接收及解析這兩種封包
像是收到IPX(IP)的封包,設備將他的標頭重新改寫成IP(IPX)封包後,送到IP(IPX)網路

假設今天有個人要從台北到高雄好了
把[人]想成是要被傳送的[封包]
把[台北]和[高雄]想成是[終端的PC]

那麼,你要如何去高雄呢?
你可以選擇坐[飛機]、[客運]、[火車]....,
想像成你可以選擇[TCP/IP]、[NOVELL NETWARE]、[TOKEN-RING]或是[APPLE TALK].....等等來作為[封包]加密時的格式

假如你選用[火車]到高雄,
那麼,你要做哪一種等級的火車呢?
你可以選擇[電聯車]、[復興號]、[莒光號]、[自強號]....,
想像成你可以選擇[ATM]、[G.HDSL]、[ISDN]、[xDSL]或是用[撥接]................等等來作為傳送[封包]時用的網路

如果,[自強號]的[火車]在到[高雄]的途中,發生事故
那麼,鐵路警察就會依照[相關的交通規則]來處理
把[交通規則]想像成[CSMA/CD]、[VTP]、[VLAN]、[SNMP].....等等來作為當[封包]發生碰撞之類情形時,所使用的處理方式

至於,這輛[自強號]是用什麼做的,哪一家做的
是[德國]、[義大利]、......、還是[美國]製
你可以想像成[CISCO]、[3COM]、[FOUNDRY]......網路設備的製造商

那麼,來稍微寫一下網路封包的格式好了
一個符合TCP/IP規定的網路封包,大致上是如此
[來源MAC Address][目的MAC Address][Layer2表頭][來源IP][目的IP][Layer3表頭][來源PORT NUMBER][目的PORT NUMBER][Layer4 表頭][實際封包內容][FCS]
其長度,大致上是如此(因為會隨著各Layer的表頭內容,而有所不同,所以才說是"大致上" ^^)
[6 BYTE][6 BYTE][6 BYTE][4 BYTE][4 BYTE][20 BYTE][12(UDP)or20(TCP) BYTE][1~1500 BYTE][4 BYTE]

文章來源:http://140.128.161.4/students/node/326

arrow
arrow

    Johnson峰 發表在 痞客邦 留言(0) 人氣()