MAC層是用來解決多路訪問的堵車問題的,ARP通過在局域網(wǎng)大吼一聲的方式來尋找目標MAC地址粤咪。交換機有MAC地址學習能力鲤遥。
1. MAC層
在物理層中沐寺,我們引入了Hub,集線器盖奈,這種設(shè)備可以將多個終端連起來混坞,但是它會把所有自己收到的信息都復制到其他端口當中。
需要在數(shù)據(jù)鏈路層解決的問題有:
- 包的發(fā)送方和接收方
- 多個包發(fā)送的時候的先后順序的問題
- 發(fā)生錯誤了怎么辦
這些問題都是在數(shù)據(jù)鏈路層钢坦,也即MAC層(Medium Access Control)究孕,要解決的問題.
做媒體訪問控制,控制在往媒體上發(fā)數(shù)據(jù)的時候爹凹,誰先發(fā)誰后發(fā)的問題厨诸,防止發(fā)生混亂『探矗—— 多路訪問規(guī)則
下面針對三個問題的解決進行詳細分析
1.1 包的發(fā)送方接收方的確認
1.1.1 知道目標和源MAC地址時
用物理地址微酬,——鏈路層地址,常被稱為MAC地址
1.1.2 只知道目標IP地址時 —— ARP協(xié)議
ARP協(xié)議颤陶,是已知IP地址颗管,求MAC地址的協(xié)議。
在一個局域網(wǎng)內(nèi)滓走,知道IP忙上,想獲得對應的MAC,就是在局域網(wǎng)中大吼一聲闲坎, 看回應疫粥,hhhh
具體詢問和回答的報文如下所示:
1.2 多路訪問原則
- 信道劃分:分成多個車道茬斧,各走各的
- 輪流協(xié)議:單雙號限行
- 隨機接入?yún)f(xié)議:錯峰
1.3 錯誤處理 —— 循環(huán)冗余檢測
看圖1,整個數(shù)據(jù)包的最后四字節(jié)叫做CRC梗逮,這里是通過XOR算法計算整個包是否在發(fā)送的過程中出現(xiàn)了錯誤
2.交換機
交換機比起集線器项秉,有了記憶功能。通過學習得到對應的MAC地址慷彤。
一臺 MAC1 電腦將一個包發(fā)送給另一臺 MAC2 電腦娄蔼,當這個包到達交換機的時候,一開始交換機也不知道 MAC2 的電腦在哪個口底哗,所以沒辦法岁诉,它只能將包轉(zhuǎn)發(fā)給除了來的那個口之外的其他所有的口。但是跋选,這個時候涕癣,交換機會干一件非常聰明的事情,就是交換機會記住前标,MAC1 是來自一個明確的口坠韩。以后有包的目的地址是 MAC1 的,直接發(fā)送到這個口就可以了炼列。
當交換機作為一個關(guān)卡一樣只搁,過了一段時間之后,就有了整個網(wǎng)絡的一個結(jié)構(gòu)了俭尖,這個時候氢惋,基本上不用廣播了,全部可以準確轉(zhuǎn)發(fā)稽犁。當然明肮,每個機器的 IP 地址會變,所在的口也會變缭付,因而交換機上的學習的結(jié)果,我們稱為轉(zhuǎn)發(fā)表循未。轉(zhuǎn)發(fā)表是有過期時間的陷猫。
2.1 辦公室場景下的交換機使用
可能有上百個網(wǎng)口需要聯(lián)網(wǎng),因此需要多個交換機的妖,形成了一個稍微復雜一些的拓撲結(jié)構(gòu)绣檬。
先看看兩臺交換機的情形。兩臺交換機連接著三個局域網(wǎng)嫂粟,每個局域網(wǎng)上都有多臺機器娇未。如果機器 1 只知道機器 4 的 IP 地址,當它想要訪問機器 4星虹,把包發(fā)出去的時候零抬,它必須要知道機器 4 的 MAC 地址镊讼。
于是機器 1 發(fā)起廣播,機器 2 收到這個廣播平夜,但是這不是找它的蝶棋,所以沒它什么事。交換機 A 一開始是不知道任何拓撲信息的忽妒,在它收到這個廣播后玩裙,采取的策略是,除了廣播包來的方向外段直,它還要轉(zhuǎn)發(fā)給其他所有的網(wǎng)口吃溅。于是機器 3 也收到廣播信息了,但是這和它也沒什么關(guān)系鸯檬。
當然决侈,交換機 B 也是能夠收到廣播信息的,但是這時候它也是不知道任何拓撲信息的京闰,因而也是進行廣播的策略颜及,將包轉(zhuǎn)發(fā)到局域網(wǎng)三。這個時候蹂楣,機器 4 和機器 5 都收到了廣播信息俏站。機器 4 主動響應說,這是找我的痊土,這是我的 MAC 地址肄扎。于是一個 ARP 請求就成功完成了。
在上面的過程中赁酝,交換機 A 和交換機 B 都是能夠?qū)W習到這樣的信息:機器 1 是在左邊這個網(wǎng)口的犯祠。當了解到這些拓撲信息之后,情況就好轉(zhuǎn)起來酌呆。當機器 2 要訪問機器 1 的時候衡载,機器 2 并不知道機器 1 的 MAC 地址,所以機器 2 會發(fā)起一個 ARP 請求隙袁。這個廣播消息會到達機器 1痰娱,也同時會到達交換機 A。這個時候交換機 A 已經(jīng)知道機器 1 是不可能在右邊的網(wǎng)口的菩收,所以這個廣播信息就不會廣播到局域網(wǎng)二和局域網(wǎng)三梨睁。
當機器 3 要訪問機器 1 的時候,也需要發(fā)起一個廣播的 ARP 請求娜饵。這個時候交換機 A 和交換機 B 都能夠收到這個廣播請求坡贺。交換機 A 當然知道主機 A 是在左邊這個網(wǎng)口的,所以會把廣播消息轉(zhuǎn)發(fā)到局域網(wǎng)一。同時遍坟,交換機 B 收到這個廣播消息之后拳亿,由于它知道機器 1 是不在右邊這個網(wǎng)口的,所以不會將消息廣播到局域網(wǎng)三政鼠。
2.1.1 環(huán)路問題
當整個拓撲結(jié)構(gòu)變復雜了以后风瘦,可能容易出現(xiàn)環(huán)路問題:
我們來想象一下機器 1 訪問機器 2 的過程。一開始公般,機器 1 并不知道機器 2 的 MAC 地址万搔,所以它需要發(fā)起一個 ARP 的廣播。廣播到達機器 2官帘,機器 2 會把 MAC 地址返回來瞬雹,看起來沒有這兩個交換機什么事情。
但是問題來了刽虹,這兩個交換機還是都能夠收到廣播包的酗捌。交換機 A 一開始是不知道機器 2 在哪個局域網(wǎng)的,所以它會把廣播消息放到局域網(wǎng)二涌哲,在局域網(wǎng)二廣播的時候胖缤,交換機 B 右邊這個網(wǎng)口也是能夠收到廣播消息的。交換機 B 會將這個廣播息信息發(fā)送到局域網(wǎng)一阀圾。局域網(wǎng)一的這個廣播消息哪廓,又會到達交換機 A 左邊的這個接口。交換機 A 這個時候還是不知道機器 2 在哪個局域網(wǎng)初烘,于是將廣播包又轉(zhuǎn)發(fā)到局域網(wǎng)二涡真。左轉(zhuǎn)左轉(zhuǎn)左轉(zhuǎn),好像是個圈哦肾筐。
可能有人會說哆料,當兩臺交換機都能夠逐漸學習到拓撲結(jié)構(gòu)之后,是不是就可以了吗铐?
然而當廣播包從左邊的局域網(wǎng)一廣播的時候东亦,兩個交換機再次刷新三觀,原來機器 1 是在左邊的唬渗,過一會兒典阵,又發(fā)現(xiàn)不對,是在右邊的谣妻,過一會,又發(fā)現(xiàn)不對卒稳,是在左邊的蹋半。
在計算機網(wǎng)絡中,用最小生成樹算法來解決交換機生成環(huán)的問題充坑。簡而言之减江,通過比較交換機之間的能力染突,給他們分不同等級,劃分出一棵樹辈灼。
2.1.2 如何解決廣播問題和安全問題份企?
- 物理隔離
每個部門有自己的交換機,配置單獨的子網(wǎng)
- 虛擬隔離
VLAN巡莹,虛擬局域網(wǎng)司志,一個交換機上會連屬于多個局域網(wǎng)的機器。解決方案是在原來的二層的頭上加一個TAG降宅,里面有一個VLAN ID骂远,一共12位,可以劃分出4096個VLAN