作者:一天,本文首發(fā)于公眾號(hào):網(wǎng)絡(luò)之路博客


 前言

前面講解了一個(gè)網(wǎng)址訪問中的通信過程,接下來幾篇來把這個(gè)過程里面一些細(xì)節(jié)的地方講解下,這些完畢后就開始正式進(jìn)入路由交換的內(nèi)容了。相信大家都玩過單機(jī)游戲,記得博主最早開始喜歡玩像CS、半條命、帝國(guó)時(shí)代、魔獸爭(zhēng)霸3、英雄無敵這些單機(jī)游戲,后來選了計(jì)算機(jī)專業(yè)后,為了更好的學(xué)習(xí)在第二學(xué)期購(gòu)買了臺(tái)筆記本,中午跟晚上就喜歡跟宿舍的人一起玩這種聯(lián)機(jī)游戲,下面就從這樣的故事來進(jìn)入今天的主題內(nèi)容。

 

 我們能接觸到的物理層

兩臺(tái)電腦進(jìn)行聯(lián)機(jī),那勢(shì)必需要用網(wǎng)線把兩個(gè)電腦的網(wǎng)卡連接起來,大家都知道,直接電腦店買一根多少米的,接在一起就完事了,但是在早期其實(shí)不是這樣的,你去電腦店購(gòu)買的時(shí)候,老板通常會(huì)問一句,你這個(gè)網(wǎng)線是用于電腦之間連接,還是電腦接其他設(shè)備,這是因?yàn)榫W(wǎng)線有兩種線序標(biāo)準(zhǔn),一種是568A,一種是568B,如果你是電腦之間連接,老板會(huì)給你做成交叉線(一頭568A一頭是568B),如果你是與交換機(jī)、路由器連接,老板會(huì)給你做成直通線(兩頭線序一樣),這就是物理層帶來的規(guī)范標(biāo)準(zhǔn),采用什么物理介質(zhì),以及怎樣的線路去連接,這樣在使用的過程中就不會(huì)出錯(cuò)了。

作為初學(xué)者,物理層與數(shù)據(jù)鏈路層要了解哪些_數(shù)據(jù)鏈路層

 

但是現(xiàn)在你去購(gòu)買網(wǎng)線的時(shí)候,老板直接問你要幾米,不會(huì)在去問你是用來接什么設(shè)備的了,這是因?yàn)樵诂F(xiàn)在的網(wǎng)絡(luò)設(shè)備跟電腦網(wǎng)卡里面自帶了一種功能,叫做自動(dòng)翻轉(zhuǎn)(線序自適應(yīng)),設(shè)備之間能夠自動(dòng)的適應(yīng),不管是使用交叉還是直通線來讓電腦接電腦,還是電腦接交換機(jī)、路由器都能夠進(jìn)行通信, 這種功能可以看成是技術(shù)的進(jìn)步,給施工人員減輕了很大的工作量。

 

這個(gè)小插曲了解后,終于把兩臺(tái)電腦進(jìn)行連接,網(wǎng)卡設(shè)置對(duì)應(yīng)IP、掩碼、網(wǎng)關(guān)等參數(shù)后(對(duì)應(yīng)的這些參數(shù),在下一篇會(huì)講解)就可以開始聯(lián)機(jī)一起玩了,這種連接的形式,就是常聽到的局域網(wǎng)(LAN,并且可以發(fā)現(xiàn)很多游戲上面寫著局域網(wǎng)聯(lián)機(jī)。

 

慢慢的隨著宿舍的電腦增加,一個(gè)電腦只有一個(gè)網(wǎng)卡,就沒辦法進(jìn)行兩臺(tái)以上的組網(wǎng)了,不同時(shí)間段接觸網(wǎng)絡(luò)的朋友,可能解決的辦法不一樣,在早期的時(shí)候,其實(shí)是并沒有交換機(jī)的設(shè)備的,而是一種叫做HUB的物理層設(shè)備(集線器),它有多個(gè)接口,可以提供給不同設(shè)備進(jìn)行連接,這樣解決了多臺(tái)電腦之間局域網(wǎng)連接的問題,但是集線器有幾個(gè)很大缺點(diǎn)。

 

缺點(diǎn)一:廣播模式(廣播域)

除了打游戲以外,大家平時(shí)也會(huì)共享一些學(xué)習(xí)、娛樂的資料,按正常邏輯來說,A發(fā)一個(gè)文件給D,BC是不會(huì)收到的,但是在集線器里面BC也會(huì)收到,當(dāng)A把數(shù)據(jù)發(fā)送出去后,集線器是一個(gè)物理層設(shè)備,它不會(huì)對(duì)以鏈路層做任何的解封裝操作,只會(huì)將接收到的物理信號(hào)進(jìn)行放大,把A這個(gè)口收到的數(shù)據(jù)從其他口廣播出去,這個(gè)就叫做廣播域。(相當(dāng)于村里或者學(xué)校的廣播站,大家都能聽到,在一個(gè)廣播的范圍內(nèi)。)

 

作為初學(xué)者,物理層與數(shù)據(jù)鏈路層要了解哪些_封裝_02

最終的結(jié)果就是A本來想給D多帶帶發(fā)的,結(jié)果BC也收到了,雖然BC不會(huì)看里面實(shí)際的內(nèi)容(因?yàn)閺慕夥庋b的過程發(fā)現(xiàn)MAC地址并不是找的自己,就會(huì)丟棄),但是在安全性上面存在很大的隱患,以及會(huì)浪費(fèi)不必要的鏈路資源。

 

缺點(diǎn)二:沖突域

作為初學(xué)者,物理層與數(shù)據(jù)鏈路層要了解哪些_封裝_03

同樣的集線器(HUB)只是一個(gè)信號(hào)放大器以及半雙工的工作方式,收到一個(gè)數(shù)據(jù)后是直接發(fā)送,不做緩存(它也沒有這個(gè)機(jī)制),這就會(huì)出現(xiàn)一個(gè)問題,在同一時(shí)間只能有一臺(tái)電腦發(fā)送數(shù)據(jù)給HUB處理,比如上圖,AD同時(shí)想發(fā)送文件給CHUB收到后就會(huì)產(chǎn)生沖突, 這個(gè)就叫做沖突域。(沖突域這個(gè)問題了解就行,在現(xiàn)在的設(shè)備里面已經(jīng)解決了這個(gè)問題。)

 

缺點(diǎn)三:共享帶寬

集線器(HUB)內(nèi)部結(jié)構(gòu)是通過一根總線連接起來的,所有的接口都是共享這總線的帶寬,如果總線是10M,那么這個(gè)集線器的總速率就是10M,那這個(gè)時(shí)候如果接了4臺(tái)終端,那么每臺(tái)終端平均分配的帶寬則是10/4=2.5M,終端越多速率就越低。

 

至此呢,宿舍一群人總算可以愉快的一起玩游戲,但是傳輸文件資料的時(shí)候,通常就把集線器的帶寬給占滿了,其余電腦沒辦法使用,為此呢很苦惱。(這里介紹這里多集線器的事情,只是想大家了解下網(wǎng)絡(luò)設(shè)備的發(fā)展史,以及引入出后面我們要學(xué)習(xí)的設(shè)備,這樣大家印象會(huì)深刻些,集線器是在如今看是已經(jīng)是一個(gè)歷史的產(chǎn)物了。)

 

作為初學(xué)者,物理層與數(shù)據(jù)鏈路層要了解哪些_數(shù)據(jù)鏈路層_04

   既然Hub這么不靠譜,在當(dāng)時(shí)候又沒有更好的設(shè)備去取代,所以這種情況下,數(shù)據(jù)鏈路層是定義了一些規(guī)則,來盡量解決這個(gè)Hub帶來的問題。(這里說明下,數(shù)據(jù)鏈路層里面協(xié)議非常多,本次課程內(nèi)容出發(fā)跟重點(diǎn)都是講解企業(yè)組網(wǎng),重點(diǎn)放在局域網(wǎng)這塊,局域網(wǎng)目前使用的就是以太網(wǎng)協(xié)議,后面會(huì)介紹,這里先說明下,因?yàn)楹芏嗯笥芽赡芸催^很多初學(xué)的文檔教材,里面會(huì)介紹鏈路層很多的協(xié)議,會(huì)弄的有些亂。)

 

規(guī)則一:誰先發(fā),誰后發(fā)

 上面提到過,在Hub的環(huán)境下,只要有兩臺(tái)設(shè)備同時(shí)發(fā)送數(shù)據(jù),就會(huì)產(chǎn)生沖突,在二層以太網(wǎng)中引入了一個(gè)機(jī)制,CSMA/CD(載波偵聽多路訪問/沖突檢測(cè)),這個(gè)機(jī)制規(guī)定了,接在Hub下的終端不停的檢測(cè)共享線路的狀態(tài),如果目前空閑,則發(fā)送數(shù)據(jù),如果檢測(cè)有人在發(fā)送,則等待一段時(shí)間后繼續(xù)檢查,整體的原理就是,先聽后發(fā),邊發(fā)邊聽,沖突停發(fā),隨機(jī)延時(shí)后重發(fā)。(可以看成我們的紅綠燈,同樣有多個(gè)方向的路徑,如果沒有規(guī)則,那出現(xiàn)事故的幾率是不是就大很多了)

 

規(guī)則二:這個(gè)數(shù)據(jù)是誰發(fā)送出來的,誰來接收

 

規(guī)則三:如果這個(gè)數(shù)據(jù)幀在發(fā)送過程中,出現(xiàn)了錯(cuò)誤,收到后怎么辦?(二跟三都在下面統(tǒng)一回答)

 

   不知道大家有沒有仔細(xì)觀察過,不管是個(gè)人PC的網(wǎng)卡、光貓、路由器、服務(wù)器都有一個(gè)MAC地址,這是網(wǎng)卡廠家出廠的時(shí)候就已經(jīng)燒錄在里面了,也被稱為硬件地址MAC地址在數(shù)據(jù)鏈路上作為設(shè)備的地址標(biāo)識(shí)符,需要確保在網(wǎng)絡(luò)中的MAC地址是唯一的,這樣才能夠正確的識(shí)別到數(shù)據(jù)鏈路上的設(shè)備。

 

作為初學(xué)者,物理層與數(shù)據(jù)鏈路層要了解哪些_封裝_05

 

MAC地址由6個(gè)字節(jié)組成,前面三個(gè)字節(jié)表示廠商唯一標(biāo)識(shí)符(比如圖上面的44-8A-5B),不同網(wǎng)卡廠商都有特定的組合,后三個(gè)字節(jié)由廠家自己進(jìn)行分配,這樣能夠保證廠家生產(chǎn)出來的網(wǎng)卡MAC地址不會(huì)相同。

 

作為初學(xué)者,物理層與數(shù)據(jù)鏈路層要了解哪些_mac地址_06

由于MAC地址太長(zhǎng)了,有6個(gè)字節(jié)Byte),而一個(gè)字節(jié)=8個(gè)比特(bit),由0跟1組成,比如上面的物理地址是44-8A-5B-D9-91-D9,如果說換算成二進(jìn)制則為01000100-10001010-01011011-11011001-10010001-11011001,不要說非業(yè)內(nèi)人士,就是業(yè)內(nèi)人士看到這一串二進(jìn)制比特也得看迷糊了,所以為了方便查看,各個(gè)廠家的MAC地址都統(tǒng)一用十六進(jìn)制來表示,并且不同的操作系統(tǒng)表示的方式不太一樣,這個(gè)在后續(xù)會(huì)慢慢的遇到。

 

 MAC地址在以太網(wǎng)中有什么用呢?

在如今的我們局域網(wǎng)中,使用的協(xié)議是以太網(wǎng)Ⅱ協(xié)議,屬于數(shù)據(jù)鏈路層中的其中一種協(xié)議,在早期的時(shí)候有線局域網(wǎng)有多個(gè)協(xié)議同時(shí)存在競(jìng)爭(zhēng)的,像ATM、令牌環(huán)、FDDI,這些協(xié)議帶來的產(chǎn)品要么價(jià)格貴、要么速率低,隨著以太網(wǎng)推出100M標(biāo)準(zhǔn)后,進(jìn)入快速以太網(wǎng)時(shí)代,這個(gè)時(shí)候以太網(wǎng)得到了突飛猛進(jìn)的市場(chǎng)支持跟占有率,慢慢的稱為主流,緊接著推出來了千兆以太網(wǎng)、以及萬兆,至今在局域網(wǎng)中能看到的主流協(xié)議就是以太網(wǎng)了,目前使用的是第二代,也稱為以太網(wǎng)Ⅱ。以太網(wǎng)是一個(gè)典型的多路訪問的網(wǎng)絡(luò),跟上面宿舍一樣,AB 、CD都接在Hub上面,都能夠互相進(jìn)行訪問,而不是說只能訪問某一個(gè),那就帶來了一個(gè)問題,那么A、B、C、D它怎么識(shí)別這個(gè)數(shù)據(jù)幀是給自己的呢?又是誰發(fā)送的呢?,這個(gè)就是以太網(wǎng)中MAC地址的作用,能夠根據(jù)這個(gè)地址定位到某個(gè)具體的終端設(shè)備,因?yàn)?/span>MAC地址具有唯一性,下面來看下以太網(wǎng)Ⅱ的數(shù)據(jù)幀格式。

 

以太網(wǎng)Ⅱ的數(shù)據(jù)幀格式

 



 

前導(dǎo)碼         

8字節(jié)



 

目的MAC地址

6字節(jié))

 



 

MAC地址

6字節(jié))



 

類型

2字節(jié)



 

數(shù)據(jù)

(46~1500字節(jié))



 

 FCS

4字節(jié))



 


  • ?前導(dǎo)碼( Preamble )


前導(dǎo)碼由 7 個(gè)字節(jié)組成,每個(gè)字節(jié)固定為 10101010 。之后的 1 個(gè)字節(jié)稱為幀起始定界符,這個(gè)字節(jié)固定為 10101011 。這 8個(gè)字節(jié)表示以太網(wǎng)幀的開始,也是對(duì)端網(wǎng)卡能夠確保與其同步的標(biāo)志。幀起始定界符的最后兩位比特被定義為 11 ,作用是告訴接收方進(jìn)行同步并做好接收數(shù)據(jù)幀的準(zhǔn)備,這里說下,這個(gè)是網(wǎng)卡會(huì)完成這部分的操作,知道有這個(gè)存在就行。(后很多教材里面不會(huì)把前導(dǎo)碼這個(gè)字段標(biāo)識(shí)出來)

 


  • 目的MAC地址(Destination address)

 由六個(gè)字節(jié)組成,明確說明這個(gè)數(shù)據(jù)幀是交給誰的(要訪問的目的終端設(shè)備)

 


  • 源MAC地址 (Source address)

 由六個(gè)字節(jié)組成,標(biāo)明這個(gè)數(shù)據(jù)幀是誰發(fā)的(發(fā)起這個(gè)數(shù)據(jù)的源設(shè)備)

 


  • 類型(Type)

   由2個(gè)字節(jié)組成,表明了上一層的協(xié)議類型,可以讓接收方知道上一層使用的什么,用對(duì)應(yīng)的協(xié)議進(jìn)行讀取。(這里是不是解答了第二篇里面最后問道的其中一個(gè)問題了,在數(shù)據(jù)幀里面會(huì)標(biāo)明上層的協(xié)議,而不用等解封裝后到了上一層才知道)

 


  • 數(shù)據(jù)(Data)?


  實(shí)際的數(shù)據(jù)內(nèi)容,數(shù)據(jù)幀能夠容納的最大數(shù)據(jù)范圍是46~1500個(gè)字節(jié),如果說數(shù)據(jù)部分不足46個(gè)字節(jié),會(huì)進(jìn)行填充,滿足最小的長(zhǎng)度要求。

 

  • FCS ( Frame Check Sequence ) CRC


用于校驗(yàn)除前導(dǎo)碼以太的所有幀信息,保證傳輸?shù)膸耐暾院驼_率,如果發(fā)現(xiàn)數(shù)據(jù)幀不完整或者錯(cuò)誤,就直接丟棄,不交給上層處理,減少?zèng)]必要的消耗。(這個(gè)就是規(guī)則三里面的,由FCS來解決出現(xiàn)了錯(cuò)誤后怎么辦的問題)?

 

 

交換機(jī)的出現(xiàn)

 Hub的問題上面都知道了,Hub本身的工作模式還是最大的問題,一旦局域網(wǎng)的終端機(jī)器增多,那么沖突的幾率就越大,即使有了這些機(jī)制的出現(xiàn),可以避免沖突,但是增加了等待延時(shí),糟糕的情況就是主機(jī)有個(gè)很大的文件在傳輸,那么其他的終端設(shè)備就得一直等待傳輸完畢,使用效率非常低下,這樣的設(shè)備滿足不了市場(chǎng)的需求,這個(gè)時(shí)候交換機(jī)(switch)就出現(xiàn)了,交換機(jī)跟HUB有本質(zhì)上面的區(qū)別。

 

1)能夠讀取數(shù)據(jù)幀

 Hub工作在物理層的設(shè)備,而交換機(jī)是工作在數(shù)據(jù)鏈路層以及以上的設(shè)備,它是具有讀取數(shù)據(jù)幀的功能的,并且能夠使用以太網(wǎng)協(xié)議,這樣就算數(shù)據(jù)幀有錯(cuò)誤的地方,可以通過FCS來進(jìn)行校驗(yàn),有問題的直接丟棄,而Hub則不行,直接就廣播出去了。

 

作為初學(xué)者,物理層與數(shù)據(jù)鏈路層要了解哪些_數(shù)據(jù)幀_07

 

 

(2)工作在全雙工以及獨(dú)立的接口硬件,速率得到了提升

  Hub上面介紹過是工作在半雙工,它只有物理電信號(hào)放大的作用,所以導(dǎo)致了沖突域的出現(xiàn),而交換機(jī)不一樣,從內(nèi)部結(jié)構(gòu)就改變了這個(gè)問題,它把每個(gè)接口獨(dú)立出來,有多帶帶的芯片處理,把每個(gè)口之間給獨(dú)立出來了,好處是(11口給2口發(fā)送數(shù)據(jù)的時(shí)候,不會(huì)影響到其他接口,隔離了沖突域,并且,其他口也可以同時(shí)發(fā)送數(shù)據(jù)。(2)每個(gè)口可以工作在全雙工模式,可以同時(shí)接收與發(fā)送數(shù)據(jù)  (3)帶寬不在是跟Hub一樣,共享的形式了,比如交換機(jī)是百兆交換機(jī),那么每個(gè)接口都可以獨(dú)享100M,如果交換機(jī)是千兆,每個(gè)接口則可以獨(dú)享1000M。 這樣就解決了局域網(wǎng)規(guī)模增大,由于沖突帶來的問題,并且?guī)捯驳玫搅颂嵘?/span>

作為初學(xué)者,物理層與數(shù)據(jù)鏈路層要了解哪些_數(shù)據(jù)鏈路層_08

 

3)具有學(xué)習(xí)地址的功能

Hub它收到一個(gè)數(shù)據(jù)的時(shí)候是直接廣播到其他接口,這種模式顯然影響整個(gè)網(wǎng)絡(luò),安全隱患大,交換機(jī)改變了這種模式,由于它工作在鏈路層,也使用了以太網(wǎng)協(xié)議,它能夠去學(xué)習(xí)MAC地址,并且通過學(xué)習(xí)把它記錄在自己的數(shù)據(jù)表中,這樣交換機(jī)就知道,哪個(gè)口是對(duì)應(yīng)哪個(gè)MAC了,當(dāng)A去訪問D的時(shí)候,交換機(jī)收到這樣一個(gè)數(shù)據(jù)幀后,讀取到里面的目的MAC是發(fā)給D的,D4號(hào)接口,直接交給D的接口即可,而不用把數(shù)據(jù)從其他接口廣播的形式發(fā)送了。

 

 

作為初學(xué)者,物理層與數(shù)據(jù)鏈路層要了解哪些_數(shù)據(jù)鏈路層_09

 

至此呢,交換機(jī)從取代集線器開始到如今一直在企業(yè)網(wǎng)中使用,并且在如今的網(wǎng)絡(luò)設(shè)備中,交換機(jī)不在是單純的歸納到數(shù)據(jù)鏈路層了,因?yàn)樵谄髽I(yè)網(wǎng)中還有高級(jí)點(diǎn)的三層交換機(jī),能處理IP數(shù)據(jù)包,以及能讀取四層的端口號(hào)信息,但是核心的理念還是不變的,這些我們?cè)谡竭M(jìn)入交換機(jī)篇的時(shí)候會(huì)詳細(xì)講解。

 

知識(shí)點(diǎn)擴(kuò)充

1)半雙工跟全雙工

 這個(gè)作為了解即可,現(xiàn)在的網(wǎng)絡(luò)環(huán)境正常情況下都是工作在全雙工,半雙工是指數(shù)據(jù)在傳輸過程中同時(shí)只能像一個(gè)方向傳輸,要么上傳要么下載(Hub設(shè)備),就好比一個(gè)單車道的路,同時(shí)只能一輛車過去,或者是過來,如果兩邊同時(shí)通過,那么就在某個(gè)點(diǎn)就出現(xiàn)了沖突了。全雙工指交換機(jī)可以發(fā)送數(shù)據(jù)的同時(shí)也能接收數(shù)據(jù),這樣可以得到更高的傳輸效率,沒有沖突、速度、延遲,就好比雙車道上,來來往往的車輛互不影響。

 

2)總結(jié)下Hub與交換機(jī)的特點(diǎn)

    Hub與交換機(jī)的工作原理跟特點(diǎn)其實(shí)上面都已經(jīng)介紹過了,這里就在舉一個(gè)有點(diǎn)接近的比喻,Hub有點(diǎn)類似于一個(gè)大的辦公區(qū)域,這個(gè)時(shí)候經(jīng)理有事情跟老板溝通,勢(shì)必會(huì)讓其他員工分心,想聽聽有什么內(nèi)容,這樣就影響了員工的辦公效率,同時(shí)也沒有私密性,員工也不能在老板談話的時(shí)候去打擾它,這樣會(huì)造成沖突。

  慢慢的公司發(fā)展起來了,這里交換機(jī)還是作為一個(gè)大的辦公區(qū)域,高層人員都有了獨(dú)立的辦公室,想要找到某個(gè)人溝通,只需要去往對(duì)應(yīng)的門牌號(hào)(MAC地址)就能找到對(duì)應(yīng)的人進(jìn)入房間溝通,不會(huì)影響到其他人,辦公室之間也不會(huì)相互沖突。

 

3)關(guān)于速率問題(Bye/bit)

  這個(gè)屬于一個(gè)物理層介質(zhì)的單位問題,不知道大家有沒有發(fā)現(xiàn)過,比如我們電腦里面的文件大小單位都是MB、GB,這個(gè)屬于存儲(chǔ)以字節(jié)作為單位,但是在我們學(xué)習(xí)的網(wǎng)絡(luò)中,是以最小的比特做單位的,1字節(jié)=8比特,所以你可能會(huì)困惑,明明我拉了條100M的帶寬,但是實(shí)際在下載的時(shí)候怎么只能達(dá)到10~12MB左右,這就是因?yàn)閹挼膯挝挥玫氖潜忍?,而不是字?jié),而下載數(shù)據(jù)用的單位是字節(jié),中間相差8倍,這里作為一個(gè)補(bǔ)充了解下,后續(xù)在換算或者做某些帶寬限制的時(shí)候用的上。

 

4)關(guān)于每一層數(shù)據(jù)的稱乎

 數(shù)據(jù)的發(fā)送與接收都是一個(gè)封裝與解封裝的過程,每一層數(shù)據(jù)都有不同的稱呼,在物理層叫做比特,在數(shù)據(jù)鏈路層叫做。(其他層面的介紹到了會(huì)進(jìn)行說明,這個(gè)了解即可)

 

遺留下來的細(xì)節(jié)問題(思考下)

  •  在上文提到的網(wǎng)卡設(shè)置IP地址、掩碼、網(wǎng)關(guān)的參數(shù),有什么作用呢?已經(jīng)有了MAC地址為什么還要IP地址呢?(下一篇關(guān)鍵內(nèi)容)
  • A發(fā)送文件給D,在初始化的情況下,A怎么就能夠知道D的MAC就是這個(gè)呢?(下幾篇關(guān)鍵內(nèi)容)
  • 交換機(jī)它是如何學(xué)習(xí)到A、B、C、D的MAC地址的呢?(交換機(jī)篇會(huì)詳細(xì)講解)
  • 交換機(jī)的一個(gè)接口能否學(xué)習(xí)到多個(gè)MAC呢,那假設(shè)移動(dòng)位置后,交換機(jī)會(huì)怎么處理?(交換機(jī)篇會(huì)詳細(xì)講解)?

 

作者:一天,本文首發(fā)于公眾號(hào):網(wǎng)絡(luò)之路博客