作者:一天,本文首發(fā)于公眾號:網(wǎng)絡(luò)之路博客
前言
前面講解了一個網(wǎng)址訪問中的通信過程,接下來幾篇來把這個過程里面一些細節(jié)的地方講解下,這些完畢后就開始正式進入路由交換的內(nèi)容了。相信大家都玩過單機游戲,記得博主最早開始喜歡玩像CS、半條命、帝國時代、魔獸爭霸3、英雄無敵這些單機游戲,后來選了計算機專業(yè)后,為了更好的學(xué)習(xí)在第二學(xué)期購買了臺筆記本,中午跟晚上就喜歡跟宿舍的人一起玩這種聯(lián)機游戲,下面就從這樣的故事來進入今天的主題內(nèi)容。
我們能接觸到的物理層
兩臺電腦進行聯(lián)機,那勢必需要用網(wǎng)線把兩個電腦的網(wǎng)卡連接起來,大家都知道,直接電腦店買一根多少米的,接在一起就完事了,但是在早期其實不是這樣的,你去電腦店購買的時候,老板通常會問一句,你這個網(wǎng)線是用于電腦之間連接,還是電腦接其他設(shè)備,這是因為網(wǎng)線有兩種線序標準,一種是568A,一種是568B,如果你是電腦之間連接,老板會給你做成交叉線(一頭568A一頭是568B),如果你是與交換機、路由器連接,老板會給你做成直通線(兩頭線序一樣),這就是物理層帶來的規(guī)范標準,采用什么物理介質(zhì),以及怎樣的線路去連接,這樣在使用的過程中就不會出錯了。
但是現(xiàn)在你去購買網(wǎng)線的時候,老板直接問你要幾米,不會在去問你是用來接什么設(shè)備的了,這是因為在現(xiàn)在的網(wǎng)絡(luò)設(shè)備跟電腦網(wǎng)卡里面自帶了一種功能,叫做自動翻轉(zhuǎn)(線序自適應(yīng)),設(shè)備之間能夠自動的適應(yīng),不管是使用交叉還是直通線來讓電腦接電腦,還是電腦接交換機、路由器都能夠進行通信, 這種功能可以看成是技術(shù)的進步,給施工人員減輕了很大的工作量。
這個小插曲了解后,終于把兩臺電腦進行連接,網(wǎng)卡設(shè)置對應(yīng)IP、掩碼、網(wǎng)關(guān)等參數(shù)后(對應(yīng)的這些參數(shù),在下一篇會講解)就可以開始聯(lián)機一起玩了,這種連接的形式,就是常聽到的局域網(wǎng)(LAN),并且可以發(fā)現(xiàn)很多游戲上面寫著局域網(wǎng)聯(lián)機。
慢慢的隨著宿舍的電腦增加,一個電腦只有一個網(wǎng)卡,就沒辦法進行兩臺以上的組網(wǎng)了,不同時間段接觸網(wǎng)絡(luò)的朋友,可能解決的辦法不一樣,在早期的時候,其實是并沒有交換機的設(shè)備的,而是一種叫做HUB的物理層設(shè)備(集線器),它有多個接口,可以提供給不同設(shè)備進行連接,這樣解決了多臺電腦之間局域網(wǎng)連接的問題,但是集線器有幾個很大缺點。
缺點一:廣播模式(廣播域)
除了打游戲以外,大家平時也會共享一些學(xué)習(xí)、娛樂的資料,按正常邏輯來說,A發(fā)一個文件給D,B跟C是不會收到的,但是在集線器里面B跟C也會收到,當(dāng)A把數(shù)據(jù)發(fā)送出去后,集線器是一個物理層設(shè)備,它不會對以鏈路層做任何的解封裝操作,只會將接收到的物理信號進行放大,把A這個口收到的數(shù)據(jù)從其他口廣播出去,這個就叫做廣播域。(相當(dāng)于村里或者學(xué)校的廣播站,大家都能聽到,在一個廣播的范圍內(nèi)。)
最終的結(jié)果就是A本來想給D多帶帶發(fā)的,結(jié)果B跟C也收到了,雖然B跟C不會看里面實際的內(nèi)容(因為從解封裝的過程發(fā)現(xiàn)MAC地址并不是找的自己,就會丟棄),但是在安全性上面存在很大的隱患,以及會浪費不必要的鏈路資源。
缺點二:沖突域
同樣的集線器(HUB)只是一個信號放大器以及半雙工的工作方式,收到一個數(shù)據(jù)后是直接發(fā)送,不做緩存(它也沒有這個機制),這就會出現(xiàn)一個問題,在同一時間只能有一臺電腦發(fā)送數(shù)據(jù)給HUB處理,比如上圖,A與D同時想發(fā)送文件給C,HUB收到后就會產(chǎn)生沖突, 這個就叫做沖突域。(沖突域這個問題了解就行,在現(xiàn)在的設(shè)備里面已經(jīng)解決了這個問題。)
缺點三:共享帶寬
集線器(HUB)內(nèi)部結(jié)構(gòu)是通過一根總線連接起來的,所有的接口都是共享這總線的帶寬,如果總線是10M,那么這個集線器的總速率就是10M,那這個時候如果接了4臺終端,那么每臺終端平均分配的帶寬則是10/4=2.5M,終端越多速率就越低。
至此呢,宿舍一群人總算可以愉快的一起玩游戲,但是傳輸文件資料的時候,通常就把集線器的帶寬給占滿了,其余電腦沒辦法使用,為此呢很苦惱。(這里介紹這里多集線器的事情,只是想大家了解下網(wǎng)絡(luò)設(shè)備的發(fā)展史,以及引入出后面我們要學(xué)習(xí)的設(shè)備,這樣大家印象會深刻些,集線器是在如今看是已經(jīng)是一個歷史的產(chǎn)物了。)
既然Hub這么不靠譜,在當(dāng)時候又沒有更好的設(shè)備去取代,所以這種情況下,數(shù)據(jù)鏈路層是定義了一些規(guī)則,來盡量解決這個Hub帶來的問題。(這里說明下,數(shù)據(jù)鏈路層里面協(xié)議非常多,本次課程內(nèi)容出發(fā)跟重點都是講解企業(yè)組網(wǎng),重點放在局域網(wǎng)這塊,局域網(wǎng)目前使用的就是以太網(wǎng)協(xié)議,后面會介紹,這里先說明下,因為很多朋友可能看過很多初學(xué)的文檔教材,里面會介紹鏈路層很多的協(xié)議,會弄的有些亂。)
規(guī)則一:誰先發(fā),誰后發(fā)
上面提到過,在Hub的環(huán)境下,只要有兩臺設(shè)備同時發(fā)送數(shù)據(jù),就會產(chǎn)生沖突,在二層以太網(wǎng)中引入了一個機制,CSMA/CD(載波偵聽多路訪問/沖突檢測),這個機制規(guī)定了,接在Hub下的終端不停的檢測共享線路的狀態(tài),如果目前空閑,則發(fā)送數(shù)據(jù),如果檢測有人在發(fā)送,則等待一段時間后繼續(xù)檢查,整體的原理就是,先聽后發(fā),邊發(fā)邊聽,沖突停發(fā),隨機延時后重發(fā)。(可以看成我們的紅綠燈,同樣有多個方向的路徑,如果沒有規(guī)則,那出現(xiàn)事故的幾率是不是就大很多了)
規(guī)則二:這個數(shù)據(jù)是誰發(fā)送出來的,誰來接收
規(guī)則三:如果這個數(shù)據(jù)幀在發(fā)送過程中,出現(xiàn)了錯誤,收到后怎么辦?(二跟三都在下面統(tǒng)一回答)
不知道大家有沒有仔細觀察過,不管是個人PC的網(wǎng)卡、光貓、路由器、服務(wù)器都有一個MAC地址,這是網(wǎng)卡廠家出廠的時候就已經(jīng)燒錄在里面了,也被稱為硬件地址。MAC地址在數(shù)據(jù)鏈路上作為設(shè)備的地址標識符,需要確保在網(wǎng)絡(luò)中的MAC地址是唯一的,這樣才能夠正確的識別到數(shù)據(jù)鏈路上的設(shè)備。
MAC地址由6個字節(jié)組成,前面三個字節(jié)表示廠商唯一標識符(比如圖上面的44-8A-5B),不同網(wǎng)卡廠商都有特定的組合,后三個字節(jié)由廠家自己進行分配,這樣能夠保證廠家生產(chǎn)出來的網(wǎng)卡MAC地址不會相同。
由于MAC地址太長了,有6個字節(jié)(Byte),而一個字節(jié)=8個比特(bit),由0跟1組成,比如上面的物理地址是44-8A-5B-D9-91-D9,如果說換算成二進制則為01000100-10001010-01011011-11011001-10010001-11011001,不要說非業(yè)內(nèi)人士,就是業(yè)內(nèi)人士看到這一串二進制比特也得看迷糊了,所以為了方便查看,各個廠家的MAC地址都統(tǒng)一用十六進制來表示,并且不同的操作系統(tǒng)表示的方式不太一樣,這個在后續(xù)會慢慢的遇到。
MAC地址在以太網(wǎng)中有什么用呢?
在如今的我們局域網(wǎng)中,使用的協(xié)議是以太網(wǎng)Ⅱ協(xié)議,屬于數(shù)據(jù)鏈路層中的其中一種協(xié)議,在早期的時候有線局域網(wǎng)有多個協(xié)議同時存在競爭的,像ATM、令牌環(huán)、FDDI,這些協(xié)議帶來的產(chǎn)品要么價格貴、要么速率低,隨著以太網(wǎng)推出100M標準后,進入快速以太網(wǎng)時代,這個時候以太網(wǎng)得到了突飛猛進的市場支持跟占有率,慢慢的稱為主流,緊接著推出來了千兆以太網(wǎng)、以及萬兆,至今在局域網(wǎng)中能看到的主流協(xié)議就是以太網(wǎng)了,目前使用的是第二代,也稱為以太網(wǎng)Ⅱ。以太網(wǎng)是一個典型的多路訪問的網(wǎng)絡(luò),跟上面宿舍一樣,A、B 、C、D都接在Hub上面,都能夠互相進行訪問,而不是說只能訪問某一個,那就帶來了一個問題,那么A、B、C、D它怎么識別這個數(shù)據(jù)幀是給自己的呢?又是誰發(fā)送的呢?,這個就是以太網(wǎng)中MAC地址的作用,能夠根據(jù)這個地址定位到某個具體的終端設(shè)備,因為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 個字節(jié)組成,每個字節(jié)固定為 10101010 。之后的 1 個字節(jié)稱為幀起始定界符,這個字節(jié)固定為 10101011 。這 8個字節(jié)表示以太網(wǎng)幀的開始,也是對端網(wǎng)卡能夠確保與其同步的標志。幀起始定界符的最后兩位比特被定義為 11 ,作用是告訴接收方進行同步并做好接收數(shù)據(jù)幀的準備,這里說下,這個是網(wǎng)卡會完成這部分的操作,知道有這個存在就行。(后很多教材里面不會把前導(dǎo)碼這個字段標識出來)
- 目的MAC地址(Destination address)
由六個字節(jié)組成,明確說明這個數(shù)據(jù)幀是交給誰的(要訪問的目的終端設(shè)備)
- 源MAC地址 (Source address)
由六個字節(jié)組成,標明這個數(shù)據(jù)幀是誰發(fā)的(發(fā)起這個數(shù)據(jù)的源設(shè)備)
- 類型(Type)
由2個字節(jié)組成,表明了上一層的協(xié)議類型,可以讓接收方知道上一層使用的什么,用對應(yīng)的協(xié)議進行讀取。(這里是不是解答了第二篇里面最后問道的其中一個問題了,在數(shù)據(jù)幀里面會標明上層的協(xié)議,而不用等解封裝后到了上一層才知道)
- 數(shù)據(jù)(Data)?
實際的數(shù)據(jù)內(nèi)容,數(shù)據(jù)幀能夠容納的最大數(shù)據(jù)范圍是46~1500個字節(jié),如果說數(shù)據(jù)部分不足46個字節(jié),會進行填充,滿足最小的長度要求。
- FCS ( Frame Check Sequence ) CRC
用于校驗除前導(dǎo)碼以太的所有幀信息,保證傳輸?shù)膸耐暾院驼_率,如果發(fā)現(xiàn)數(shù)據(jù)幀不完整或者錯誤,就直接丟棄,不交給上層處理,減少沒必要的消耗。(這個就是規(guī)則三里面的,由FCS來解決出現(xiàn)了錯誤后怎么辦的問題)?
交換機的出現(xiàn)
Hub的問題上面都知道了,Hub本身的工作模式還是最大的問題,一旦局域網(wǎng)的終端機器增多,那么沖突的幾率就越大,即使有了這些機制的出現(xiàn),可以避免沖突,但是增加了等待延時,糟糕的情況就是主機有個很大的文件在傳輸,那么其他的終端設(shè)備就得一直等待傳輸完畢,使用效率非常低下,這樣的設(shè)備滿足不了市場的需求,這個時候交換機(switch)就出現(xiàn)了,交換機跟HUB有本質(zhì)上面的區(qū)別。
(1)能夠讀取數(shù)據(jù)幀
Hub工作在物理層的設(shè)備,而交換機是工作在數(shù)據(jù)鏈路層以及以上的設(shè)備,它是具有讀取數(shù)據(jù)幀的功能的,并且能夠使用以太網(wǎng)協(xié)議,這樣就算數(shù)據(jù)幀有錯誤的地方,可以通過FCS來進行校驗,有問題的直接丟棄,而Hub則不行,直接就廣播出去了。
(2)工作在全雙工以及獨立的接口硬件,速率得到了提升
Hub上面介紹過是工作在半雙工,它只有物理電信號放大的作用,所以導(dǎo)致了沖突域的出現(xiàn),而交換機不一樣,從內(nèi)部結(jié)構(gòu)就改變了這個問題,它把每個接口獨立出來,有多帶帶的芯片處理,把每個口之間給獨立出來了,好處是(1) 1口給2口發(fā)送數(shù)據(jù)的時候,不會影響到其他接口,隔離了沖突域,并且,其他口也可以同時發(fā)送數(shù)據(jù)。(2)每個口可以工作在全雙工模式,可以同時接收與發(fā)送數(shù)據(jù) (3)帶寬不在是跟Hub一樣,共享的形式了,比如交換機是百兆交換機,那么每個接口都可以獨享100M,如果交換機是千兆,每個接口則可以獨享1000M。 這樣就解決了局域網(wǎng)規(guī)模增大,由于沖突帶來的問題,并且?guī)捯驳玫搅颂嵘?/span>
(3)具有學(xué)習(xí)地址的功能
Hub它收到一個數(shù)據(jù)的時候是直接廣播到其他接口,這種模式顯然影響整個網(wǎng)絡(luò),安全隱患大,交換機改變了這種模式,由于它工作在鏈路層,也使用了以太網(wǎng)協(xié)議,它能夠去學(xué)習(xí)MAC地址,并且通過學(xué)習(xí)把它記錄在自己的數(shù)據(jù)表中,這樣交換機就知道,哪個口是對應(yīng)哪個MAC了,當(dāng)A去訪問D的時候,交換機收到這樣一個數(shù)據(jù)幀后,讀取到里面的目的MAC是發(fā)給D的,D在4號接口,直接交給D的接口即可,而不用把數(shù)據(jù)從其他接口廣播的形式發(fā)送了。
至此呢,交換機從取代集線器開始到如今一直在企業(yè)網(wǎng)中使用,并且在如今的網(wǎng)絡(luò)設(shè)備中,交換機不在是單純的歸納到數(shù)據(jù)鏈路層了,因為在企業(yè)網(wǎng)中還有高級點的三層交換機,能處理IP數(shù)據(jù)包,以及能讀取四層的端口號信息,但是核心的理念還是不變的,這些我們在正式進入交換機篇的時候會詳細講解。
知識點擴充
(1)半雙工跟全雙工
這個作為了解即可,現(xiàn)在的網(wǎng)絡(luò)環(huán)境正常情況下都是工作在全雙工,半雙工是指數(shù)據(jù)在傳輸過程中同時只能像一個方向傳輸,要么上傳要么下載(Hub設(shè)備),就好比一個單車道的路,同時只能一輛車過去,或者是過來,如果兩邊同時通過,那么就在某個點就出現(xiàn)了沖突了。全雙工指交換機可以發(fā)送數(shù)據(jù)的同時也能接收數(shù)據(jù),這樣可以得到更高的傳輸效率,沒有沖突、速度快、延遲小,就好比雙車道上,來來往往的車輛互不影響。
(2)總結(jié)下Hub與交換機的特點
Hub與交換機的工作原理跟特點其實上面都已經(jīng)介紹過了,這里就在舉一個有點接近的比喻,Hub有點類似于一個大的辦公區(qū)域,這個時候經(jīng)理有事情跟老板溝通,勢必會讓其他員工分心,想聽聽有什么內(nèi)容,這樣就影響了員工的辦公效率,同時也沒有私密性,員工也不能在老板談話的時候去打擾它,這樣會造成沖突。
慢慢的公司發(fā)展起來了,這里交換機還是作為一個大的辦公區(qū)域,高層人員都有了獨立的辦公室,想要找到某個人溝通,只需要去往對應(yīng)的門牌號(MAC地址)就能找到對應(yīng)的人進入房間溝通,不會影響到其他人,辦公室之間也不會相互沖突。
(3)關(guān)于速率問題(Bye/bit)
這個屬于一個物理層介質(zhì)的單位問題,不知道大家有沒有發(fā)現(xiàn)過,比如我們電腦里面的文件大小單位都是MB、GB,這個屬于存儲以字節(jié)作為單位,但是在我們學(xué)習(xí)的網(wǎng)絡(luò)中,是以最小的比特做單位的,1字節(jié)=8比特,所以你可能會困惑,明明我拉了條100M的帶寬,但是實際在下載的時候怎么只能達到10~12MB左右,這就是因為帶寬的單位用的是比特,而不是字節(jié),而下載數(shù)據(jù)用的單位是字節(jié),中間相差8倍,這里作為一個補充了解下,后續(xù)在換算或者做某些帶寬限制的時候用的上。
(4)關(guān)于每一層數(shù)據(jù)的稱乎
數(shù)據(jù)的發(fā)送與接收都是一個封裝與解封裝的過程,每一層數(shù)據(jù)都有不同的稱呼,在物理層叫做比特,在數(shù)據(jù)鏈路層叫做幀。(其他層面的介紹到了會進行說明,這個了解即可)
遺留下來的細節(jié)問題(思考下)
- 在上文提到的網(wǎng)卡設(shè)置IP地址、掩碼、網(wǎng)關(guān)的參數(shù),有什么作用呢?已經(jīng)有了MAC地址為什么還要IP地址呢?(下一篇關(guān)鍵內(nèi)容)
- A發(fā)送文件給D,在初始化的情況下,A怎么就能夠知道D的MAC就是這個呢?(下幾篇關(guān)鍵內(nèi)容)
- 交換機它是如何學(xué)習(xí)到A、B、C、D的MAC地址的呢?(交換機篇會詳細講解)
- 交換機的一個接口能否學(xué)習(xí)到多個MAC呢,那假設(shè)移動位置后,交換機會怎么處理?(交換機篇會詳細講解)?
作者:一天,本文首發(fā)于公眾號:網(wǎng)絡(luò)之路博客