假設你叫小不點(本地主機), 住在一個大院子(本地局域網)里, 有很多鄰居(網絡鄰居), 門口傳達室有個看大門的李大爺, 李大爺就是你的網關。 當你想跟院子里的某個伙伴玩, 只要你在院子里大喊一聲他的名字(ping他一下), 他聽到了就會回應你, 并且跑出來跟你玩。
但是你不被允許走出大門, 你與外界的一切聯系, 都必須李大爺(網關)用電話幫助你聯系。 假如你想找你 的同學小明聊天, 小明家住在很遠的另外一個院子里(小明和你不在一個局域網), 他家的院子里也有一個看門的王大爺(小明的網關)。 你不知道小明家的電話號碼, 不過你的班主任老師 有一份你們班全體同學的名單和電話號碼對照表, 你的老師就是你的DNS服務器。 于是你在家里撥通了門口李大爺的電話, 有了下面的對話:
小不點:李大爺, 我想找班主任查一下小明的電話號碼行嗎?(DNS查詢)
李大爺:好, 你等著。 (接著李大爺給你的班主任掛了一個電話, 問清楚了小明的電話)問到了, 他家的號碼是211.99.99.99(小明家的IP地址)
小不點:太好了!李大爺, 我想找小明, 你再幫我聯系一下小明吧。
李大爺:沒問題。 (接著李大爺向電話局發出了請求接通小明家電話的請求, 最后一關當然是被轉接到了小明家那個院子的王大爺那里, 然后王大爺把電話給轉到小明家)(路由)
就這樣你和小明取得了聯系。 (建立連接)
至于DHCP服務器嘛, 可以這樣比喻:
你家院子里的居民越來越多了, 傳達室李大爺那里的電話交換機已經不能滿足這么多居民的需求了(原來伙伴很少, 用固定IP), 太多了, 管不過來, 就用DHCP, 居民們開機的時候隨機得到一個電話號碼, 每一次得到的號碼都可能會不同。 每隔一段時間, 你租用的這個號碼會被收回, 下次需要重新得到一個新的。 (這就是DHCP的租約)
你家門口的李大爺:就是你的網關
你的班主任:就是你的DNS服務器
傳達室的電話交換機:就是你的DHCP服務器
同上, 李大爺和王大爺之間的對話就叫做路由。
另:如果還有個小朋友叫做小暗, 他住的院子看門的是孫大爺, 因為小暗的院子剛蓋好, 孫大爺剛來不久, 他沒有李大爺和王大爺辦公室的電話(李大爺和王大爺當然也沒有他的電話), 這時會有兩種情況:
1、居委會的趙大媽告訴了孫大爺關于李、王兩位大爺的電話(同時趙大媽也告訴了李、王關于孫的電話), 這就叫靜態設定路由
2、趙大媽病了, 孫大爺自己到處打電話, 見人就說:“我是小暗他們院子管電話的”, 結果被李、王二位聽到了, 就記在了他們的通訊錄上, 然后李、王就給孫大爺回了個電話說:“我是小明(小不點)他們院子管電話的”, 這就叫動態設定路由
然后有一天小不點要找小暗, 結果自然是小不點給李大爺打電話說:“大爺, 我找小暗”(這里省略了李大爺去查小暗電話的過程, 假設他知道小暗的電話), 李大爺一找通訊錄:“哦, 小暗的院子的電話是孫大爺管著的, 要找小暗自然先要通知孫大爺, 我可以通知王大爺讓他去找孫大爺, 也可以自己直接找孫, 那當然是自己直接找孫方便了”, 于是李大爺給孫大爺打了電話, 然后孫大爺又把電話轉到了小暗家。
這里李大爺的通訊錄叫做路由表。
李大爺選擇是自己直接找孫大爺還是讓王大爺幫忙轉接叫做路由選擇。
李大爺之所以選擇直接找孫大爺是有依據的, 因為他直接找孫大爺就能一步到位, 如果要王大爺轉接就需要兩步才能完成, 這里的“步”叫做“跳數”, 李大爺的選擇遵循的是最少步驟(跳數)原則(如果他不遵守這個原則, 小不點可能就會多等些時間才能找到小暗, 最終結果可能導致李大爺因工作不力被炒魷魚, 這叫做“延時太長, 選路原則不合理, 換了一個路由器”)
互聯網上的路由表總用這種方式在不停傳遞, 如果哪天中心路由器壞了, 那完了, 與此關聯的很多點會找不到目標, 你就上不了網啦。
當然, 事情總是變化的, 小不點和小明吵架了, 這些天小不點老是給小暗打電話, 小明心里想:“操, 他是不是在說我壞話��?”于是小明決定偷聽小不點和小暗的通話, 但是他又不能出院子, 怎么辦呢?小明做了這樣一個決定:
首先他告訴自己院里管電話的王大爺說:“你給李大爺打個電話說小暗搬到咱們院子了, 以后凡是打給他的電話我來接”, 王大爺沒反映過來(畢竟年紀大了�。。┚徒o李大爺打了電話, 說:“現在我來管理小暗的電話了, 孫已經不管了”, 結果李大爺就把他的通訊錄改了, 這叫做路由 欺騙。
以后小不點再找小暗, 李大爺就轉給王大爺了(其實應該轉給孫大爺的), 王大爺收到了這個電話就轉給了小明(因為他之前已經和小明說好了), 小明收到這個電話就假裝小暗和小不點通信。 因為小明作賊心虛, 害怕明天小不點和小暗見面后當面問他, 于是通信斷了之后, 又自己以小不點的名義給小暗通了個電話復述了一遍剛才的話, 有這就叫數據**。
再后來, 小不點還是不斷的和小暗聯系, 而零落了小明, 小明心里嘀咕�。�“我不能總是這樣以小暗的身份和小不點通話啊, 外一有一天露餡了怎么辦!”于是他想了一個更陰險的招數:“干脆我也不偷聽你們的電話了, 你小不點不是不給我打電話嗎!那我讓你也給小暗打不了, 哼哼!”, 他怎么做的呢?我們來看:
他聯系了一批狐朋狗友, 和他們串通好, 每天固定一個時間大家一起給小暗院子傳達室打電話, 內容什么都有, 只要傳達室的孫爺爺接電話, 就會聽到“打雷啦, 下雨收衣服�。�”、“人是人他媽生的, 妖是妖他媽生的”、“你媽貴姓”等等, 聽的腦袋都大了, 不聽又不行, 電話不停的響��!終于有一天, 孫爺爺忍不住了, 大喊一聲:“我受不了拉�。。。�”, 于是上吊自殺了!
這就是最簡單的DDoS攻擊, 孫爺爺心理承受能力弱的現象叫做“數據報處理模塊有BUG”, 孫爺爺的自殺叫做“路由 器癱瘓”。 如果是我, 就會微笑著和他們拉家常, 例如告訴他們“我早就聽了天氣預報, 衣服10分鐘前已經收好了”或者“那你媽是人還是妖”或者“和你奶奶一 個姓”等等, 我這種健全的心理叫做“健壯的數據報處理, 能夠抵御任何攻擊”, 即使如此, 小明找一堆狐朋狗友(肉雞), 一樣能讓孫大爺掛掉。
孫爺爺癱了之后, 小不點終于不再給小暗打電話了, 因為無論他怎么打對方都是忙音, 這種現象叫做“拒絕服務”, 所以小明的做法還有一個名字叫做“拒絕服務攻擊”(DoS攻擊), 狐朋狗友多了, 就叫分布式拒絕服務攻擊(DDoS)。
小明終于安靜了幾天, ...
幾天后, 小明的院子來了一個美麗的女孩, 名字叫做小麗, 小明很喜歡她(小小年紀玩什么早戀!)可是小麗有個很帥的男朋友, 小明干瞪眼沒辦法。 當然這里還是要遵循上面的原則:小麗是不能出院子的。 那個男的想泡小麗自然只能打電話, 于是小明又蠢蠢欲動了:
還記得王爺爺是院子的電話總管嗎?他之所以能管理電話是因為他有一個通訊錄, 因為同一個院子可能有2個孩子都叫小明, 靠名字無法區分, 所以通訊錄上每一行只有兩項:
門牌 電話
一號門 1234567 (這個是小明的)IP和MAC對應
二號門 7654321 (這個是小麗的)
......
王爺爺記性不好, 但這總不會錯了吧(同一個院子不會有2個“二號門”吧)?每次打電話人家都要說出要找的電話號碼, 然后通過通訊錄去院子里面敲門, 比如人家說我找“1234567”, 于是王爺爺一比較, 哦, 是一號門的, 他就去敲一號門“聽電話”, 如果是找 “7654321”, 那他就找二號門“聽電話”。
這里的電話號碼就是傳說中的“IP地址”
這里的門牌號就是傳說中的網卡的’MAC‘地址(每一塊網卡的MAC地址都是不一樣的, 這是網卡的制造商寫死在網卡的芯片中的)
小明心里想“奶奶的, 老子泡不到你也別想泡”, 于是他打起了王爺爺通訊錄的主意, 經過細心的觀察, 周密的準備, 他終于發現王爺爺有尿頻的毛�。ó吘故抢先税�...), 終于在一個月黑風高的白天, 王爺爺去上廁所了, 小明偷偷的摸進傳達室, 小心翼翼的改了王爺爺的通訊錄......
過了幾天, 小麗的男朋友又給小麗打來了電話, 對方報的電話是“7654321”, 王爺爺一看通訊錄, 靠:
門牌 電話
一號門 1234567 (這個是小明的)
一號門 7654321 (注意:這個原來是小麗的, 但是被小明改了)
......
王爺爺不知道改了啊, 于是就去找一號門的小明了, 小明心里這個美啊, 他以小麗父親的口吻嚴厲的教訓了那個男的和小麗之間不正當的男女關系, 結果那個男的恭恭敬敬的掛了電話。 當然小麗并不知道整個事情的發生...
這里小明的行為叫做“ARP欺騙”(因為在實際的網絡上是通過發送ARP數據包來實現的, 所以叫做“ARP欺騙”), 王爺爺的通訊錄叫做“ARP表”
這里要注意:王爺爺現在有兩個通訊錄了, 一個是記錄每個院子傳達室電話的本本, 叫做“路由表”, 一個是現在說的記錄院子里面詳細信息的本本, 叫做“ARP表”。
王爺爺的制度中有一條是這么寫的“每個月要重新檢查一下門牌號和電話的對應本(也就是ARP表)”, 這個動作叫做 “刷新ARP表”, 每個月的時間限制叫做“刷新ARP表的周期”。 這樣小明為了讓那個男的永遠不能找到小麗, 之后每個月都要偷偷改一次那個通訊錄, 不過這 樣也是不得不做的事��!
補充一點, 小明是很聰明的, 如果通訊錄(ARP表)被改成了這樣:
門牌(MAC) 電話(IP)
一號門 1234567 (這個是小明的)
二號門 1234567 (注意:這個被小明改了, 但是他一時頭暈改錯了)就是兩個MAC對應了一個相同的IP地址
......
就會是計算機就會彈出一個對話框提示“出現重復的IP地址”, 最終會導致王爺爺不知所措, 于是通知一號門和二號門, 你們的電話重復了。 這樣小麗就知道有人在破壞她的好事, 這個現象叫做“騙局被揭穿了”
小不點知道了小明偷聽他和小暗的電話, 于是就和小暗約定好了密碼。 小不點在家里把要說的加密了之后告訴小暗。 土豆-〉星期三, 地瓜-〉請客, 笨蛋-〉小不點家。 于是小不點告訴小暗:土豆笨蛋地瓜。 小明聽了???不懂。 。 。 。 郁悶了。 。 。 這是加密。
除此之外, 小麗也知道了小明改他家的電話號碼。 于是王爺爺就登門一個一個把電話和門牌號記下來。 并且藏起來不允許 外人修改, 只能自己有鑰匙(密碼)。 這是ip地址和MAC地址綁定。 當有人改了電話號碼的時候, 就得找王爺爺改。 麻煩是麻煩了, 但是安全了。 不過小明偷偷 的把王爺爺的鑰匙偷配了一把(盜竊密碼成功), 于是他還可以修改。
ARP欺騙:
小王、小張都住在一個樓里(A、B計算機在一個網段), 要想找到他們, 必須通過門口看門的張大爺(網關), 而張大爺記性不好, 只是根據小張小王告訴他的:我是小王, 我在A房來這個紀錄, 告訴來訪者, 你去A房找小王去吧。 正常的情況下, 你要找小王, 先找到張大爺, 然后, 張大爺告訴你小王在A房間(計算機A的地址)
假如小張總是跟張大爺說:其實我是小王, 其實我才是小王…我在B房呢
于是你來找小王的時候, 張大爺就告訴你了小王在B房……結果你把小張當成了小王, 你上當了。
這就是ARP欺騙的一種情況
還有一種情況就是, 小王中了病毒, 病毒不停發ARP包, 告訴小張, 我是看門的張大爺, 還告訴別人, 我就是張大爺, 你們要出門, 得找我。 因為小王不是真正的張大爺, 很多看門的活(網關)小王干不了, 結果, 很多人上不了網或者會去訪問不應該去的網站下載病毒, 這就是會話劫持。
這次有關瑞星ARP防火墻的風波, 簡單理解下, 是這樣的:
小王為防止ARP欺騙, 每過一段時間就跟網關張大爺說一次:我是小王, 我在A房, 您別記錯了阿…
一會兒, 又來說一遍, 張大爺說, 哦, 我知道了。 (KAO, 有事沒事來問, 你丫煩不煩啊。 )
問題出現了:
小王不停的喊:“我是小王, 我是小王”, 喊啊喊, 張大爺快被煩死了;如果樓里所有人都不聽的找張大爺說這句話.......張大爺不�;貞�“知道了知道了”。 恐怕這位張大爺, 一直不停說“知道了呢”。 這人來人往的, 個個都這么折騰這張大爺, 傳達室(網關)被堵得不行。
1、樓道里人來人往的, 正常走路受影響(網速變慢, 很多ARP數據包傳來傳去的)
2、這小張, 小王, 小XX…等等幾十上百的人一起喊啊喊啊的, 張大爺就得不停的回答:好, 知道咧, 還要記錄下來, 也就沒時間做別的事情了阿。 (使上聯的路由器等網絡設備的cpu負載滿載)
解決辦法是什么?
1.別讓一堆人都對著張大爺喊, 在小范圍內廣播一下。
2.別喊的太頻繁, 時間間隔放長些。
用上面那個方法防范ARP病毒和欺騙, 某種情況下, 是得不償失的。
對付ARP病毒, 最徹底的方法, 是在交換機端口和本地端口之間進行雙向的IP、MAC綁定, 這實在是體力活。 能把網管累個死, 防毒很關鍵。