路由是基于數(shù)據(jù)包的IP頭部中的目的IP地址進(jìn)行查找的;
查找的是路由表。 那么什么是以太網(wǎng)二層交換(switching)呢?
為了將內(nèi)網(wǎng)中的多臺(tái)PC互聯(lián)起來,使得PC之間能夠以最簡(jiǎn)單的方式進(jìn)行通信,我們往往會(huì)用一臺(tái)接入層的交換機(jī)來連接PC,如下圖:
這時(shí)候我們說,連接在這臺(tái)交換機(jī)上的PC,都屬于一個(gè)LAN。這些PC都擁有同一個(gè)網(wǎng)段的IP地址,同時(shí)也處于同一個(gè)廣播域中,所謂的一個(gè)廣播域,指的是一個(gè)廣播數(shù)據(jù)幀所能泛洪的范圍,舉個(gè)簡(jiǎn)單的例子,那就是PC1發(fā)送一個(gè)廣播幀,接在交換機(jī)上的所有的PC都會(huì)收到這個(gè)廣播數(shù)據(jù)幀并且都要去分析這個(gè)報(bào)文(即使它可能并不需要這個(gè)數(shù)據(jù)并且最終將收到的數(shù)據(jù)幀丟棄,但check數(shù)據(jù)是否是發(fā)送給自己的這一過程仍然會(huì)消耗設(shè)備資源)。
現(xiàn)在我們來分析一下,PC1發(fā)送一個(gè)數(shù)據(jù)包給PC4時(shí),都發(fā)生了什么。
1.PC1構(gòu)造IP數(shù)據(jù)包,IP報(bào)文頭部里的源IP地址為自己的IP也就是IP1,目的IP地址為IP2。
上述IP數(shù)據(jù)包為了能夠在以太網(wǎng)環(huán)境中去傳輸,還需要封裝上一個(gè)以太網(wǎng)的頭部。在以太網(wǎng)頭部中源MAC地址為MAC1,目的MAC地址為MAC2(這里我們暫且忽略ARP的過程)。
2.這個(gè)數(shù)據(jù)幀發(fā)送到了PC1所連接的交換機(jī)上。我們知道路由器都維護(hù)一張路由表,用于數(shù)據(jù)的轉(zhuǎn)發(fā),而交換機(jī)在做數(shù)據(jù)交換的時(shí)候依據(jù)的是MAC地址表。在初始情況下,交換機(jī)的MAC表是空的。那么當(dāng)交換機(jī)收到PC-A發(fā)送出來的這個(gè)數(shù)據(jù)幀時(shí),它首先將數(shù)據(jù)幀的以太網(wǎng)頭部中的源MAC地址學(xué)習(xí)到MAC地址表,并與收到該數(shù)據(jù)幀的接口及VLAN進(jìn)行關(guān)聯(lián)。如下圖:
3.接下去交換機(jī)會(huì)拿著這個(gè)數(shù)據(jù)幀的以太網(wǎng)頭部中目的MAC地址,到MAC地址表中去查詢。由于此時(shí)MAC地址表中,并沒有匹配MAC2這個(gè)地址的條目,因此交換機(jī)將對(duì)這個(gè)數(shù)據(jù)幀進(jìn)行泛洪Flooding,所謂泛洪就是將這個(gè)數(shù)據(jù)幀從除了收到它的接口之外的所有其他接口都發(fā)一份拷貝。這樣做的目的事實(shí)上是:“哥不知道你在哪,哥索性就全都發(fā)一份,愛誰誰”。
4.連接在該臺(tái)交換機(jī)上的其他PC都能收到這個(gè)數(shù)據(jù)幀,但是除了PC2之外的其他PC在收到這個(gè)數(shù)據(jù)幀之后,將bit流成幀并查看以太網(wǎng)頭部的目的MAC,發(fā)現(xiàn)該MAC與本機(jī)的MAC并不一致,因此判斷這個(gè)數(shù)據(jù)幀并非發(fā)送給自己,于是丟棄。
而PC2在收到這個(gè)數(shù)據(jù)幀并查看目的MAC發(fā)現(xiàn),這個(gè)數(shù)據(jù)幀的目的MAC與自己的MAC是相同的,因此判斷這個(gè)數(shù)據(jù)幀是發(fā)送給自己的,于是進(jìn)行CRC校驗(yàn),校驗(yàn)成功后將以太網(wǎng)頭部解封裝,將內(nèi)層的IP數(shù)據(jù)將給IP協(xié)議棧去處理,進(jìn)一步查看IP頭部,發(fā)現(xiàn)IP頭部中的目的IP地址就是本機(jī)的IP,于是將IP頭部解封裝,將內(nèi)層的payload將給上層協(xié)議處理。如此一來PC1發(fā)送給PC2的數(shù)據(jù)就完成了單向的傳輸。對(duì)于交換機(jī)而言,MAC地址表里就有了一個(gè)條目。
現(xiàn)在,PC2要回送數(shù)據(jù)給PC1,數(shù)據(jù)的構(gòu)造如下圖所示:
5.交換機(jī)在收到這個(gè)數(shù)據(jù)幀后,首先是查看數(shù)據(jù)幀以太網(wǎng)頭部的源MAC地址,將該MAC地址學(xué)習(xí)到MAC地址表中,并關(guān)聯(lián)到接收該數(shù)據(jù)幀的接口24。
6.接下去交換機(jī)拿著數(shù)據(jù)幀以太網(wǎng)頭部中的目的MAC到自己的MAC地址表里去查,結(jié)果發(fā)現(xiàn)MAC1這個(gè)目的MAC地址在MAC地址表中是有一條匹配表項(xiàng)的,并且關(guān)聯(lián)到接口1,于是交換機(jī)將這個(gè)數(shù)據(jù)幀交換到接口1。這就是所謂的交換(switching)。
這個(gè)數(shù)據(jù)幀最終被PC-A接收到,這就完成了一個(gè)在以太網(wǎng)環(huán)境中的數(shù)據(jù)交互過程。
小結(jié)一下:所謂的以太網(wǎng)環(huán)境中的二層交換(lay2-switching),就是指的當(dāng)一臺(tái)二層交換機(jī)收到一個(gè)數(shù)據(jù)幀時(shí),分析數(shù)據(jù)幀頭部的目的MAC地址,拿著MAC地址去MAC地址表中進(jìn)行查找,如果有匹配項(xiàng),則將數(shù)據(jù)幀從該匹配項(xiàng)所關(guān)聯(lián)的接口換出去,如果沒有匹配項(xiàng),則將數(shù)據(jù)幀進(jìn)行泛洪。所以:以太網(wǎng)二層交換是基于數(shù)據(jù)幀的幀頭中的目的MAC地址進(jìn)行查找的;
查找的是MAC地址表。