作者:一天,本文首發于公眾號:網絡之路博客


 前言

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

 

 我們能接觸到的物理層

兩臺電腦進行聯機,那勢必需要用網線把兩個電腦的網卡連接起來,大家都知道,直接電腦店買一根多少米的,接在一起就完事了,但是在早期其實不是這樣的,你去電腦店購買的時候,老板通常會問一句,你這個網線是用于電腦之間連接,還是電腦接其他設備,這是因為網線有兩種線序標準,一種是568A,一種是568B,如果你是電腦之間連接,老板會給你做成交叉線(一頭568A一頭是568B),如果你是與交換機、路由器連接,老板會給你做成直通線(兩頭線序一樣),這就是物理層帶來的規范標準,采用什么物理介質,以及怎樣的線路去連接,這樣在使用的過程中就不會出錯了。

作為初學者,物理層與數據鏈路層要了解哪些_數據鏈路層

 

但是現在你去購買網線的時候,老板直接問你要幾米,不會在去問你是用來接什么設備的了,這是因為在現在的網絡設備跟電腦網卡里面自帶了一種功能,叫做自動翻轉(線序自適應),設備之間能夠自動的適應,不管是使用交叉還是直通線來讓電腦接電腦,還是電腦接交換機、路由器都能夠進行通信, 這種功能可以看成是技術的進步,給施工人員減輕了很大的工作量。

 

這個小插曲了解后,終于把兩臺電腦進行連接,網卡設置對應IP、掩碼、網關等參數后(對應的這些參數,在下一篇會講解)就可以開始聯機一起玩了,這種連接的形式,就是常聽到的局域網(LAN,并且可以發現很多游戲上面寫著局域網聯機。

 

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

 

缺點一:廣播模式(廣播域)

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

 

作為初學者,物理層與數據鏈路層要了解哪些_封裝_02

最終的結果就是A本來想給D多帶帶發的,結果BC也收到了,雖然BC不會看里面實際的內容(因為從解封裝的過程發現MAC地址并不是找的自己,就會丟棄),但是在安全性上面存在很大的隱患,以及會浪費不必要的鏈路資源。

 

缺點二:沖突域

作為初學者,物理層與數據鏈路層要了解哪些_封裝_03

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

 

缺點三:共享帶寬

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

 

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

 

作為初學者,物理層與數據鏈路層要了解哪些_數據鏈路層_04

   既然Hub這么不靠譜,在當時候又沒有更好的設備去取代,所以這種情況下,數據鏈路層是定義了一些規則,來盡量解決這個Hub帶來的問題。(這里說明下,數據鏈路層里面協議非常多,本次課程內容出發跟重點都是講解企業組網,重點放在局域網這塊,局域網目前使用的就是以太網協議,后面會介紹,這里先說明下,因為很多朋友可能看過很多初學的文檔教材,里面會介紹鏈路層很多的協議,會弄的有些亂。)

 

規則一:誰先發,誰后發

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

 

規則二:這個數據是誰發送出來的,誰來接收

 

規則三:如果這個數據幀在發送過程中,出現了錯誤,收到后怎么辦?(二跟三都在下面統一回答)

 

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

 

作為初學者,物理層與數據鏈路層要了解哪些_封裝_05

 

MAC地址由6個字節組成,前面三個字節表示廠商唯一標識符(比如圖上面的44-8A-5B),不同網卡廠商都有特定的組合,后三個字節由廠家自己進行分配,這樣能夠保證廠家生產出來的網卡MAC地址不會相同。

 

作為初學者,物理層與數據鏈路層要了解哪些_mac地址_06

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

 

 MAC地址在以太網中有什么用呢?

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

 

以太網Ⅱ的數據幀格式

 



 

前導碼         

8字節



 

目的MAC地址

6字節)

 



 

MAC地址

6字節)



 

類型

2字節



 

數據

(46~1500字節)



 

 FCS

4字節)



 


  • ?前導碼( Preamble )


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

 


  • 目的MAC地址(Destination address)

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

 


  • 源MAC地址 (Source address)

 由六個字節組成,標明這個數據幀是誰發的(發起這個數據的源設備)

 


  • 類型(Type)

   由2個字節組成,表明了上一層的協議類型,可以讓接收方知道上一層使用的什么,用對應的協議進行讀取。(這里是不是解答了第二篇里面最后問道的其中一個問題了,在數據幀里面會標明上層的協議,而不用等解封裝后到了上一層才知道)

 


  • 數據(Data)?


  實際的數據內容,數據幀能夠容納的最大數據范圍是46~1500個字節,如果說數據部分不足46個字節,會進行填充,滿足最小的長度要求。

 

  • FCS ( Frame Check Sequence ) CRC


用于校驗除前導碼以太的所有幀信息,保證傳輸的幀的完整性和正確率,如果發現數據幀不完整或者錯誤,就直接丟棄,不交給上層處理,減少沒必要的消耗。(這個就是規則三里面的,由FCS來解決出現了錯誤后怎么辦的問題)?

 

 

交換機的出現

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

 

1)能夠讀取數據幀

 Hub工作在物理層的設備,而交換機是工作在數據鏈路層以及以上的設備,它是具有讀取數據幀的功能的,并且能夠使用以太網協議,這樣就算數據幀有錯誤的地方,可以通過FCS來進行校驗,有問題的直接丟棄,而Hub則不行,直接就廣播出去了。

 

作為初學者,物理層與數據鏈路層要了解哪些_數據幀_07

 

 

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

  Hub上面介紹過是工作在半雙工,它只有物理電信號放大的作用,所以導致了沖突域的出現,而交換機不一樣,從內部結構就改變了這個問題,它把每個接口獨立出來,有多帶帶的芯片處理,把每個口之間給獨立出來了,好處是(11口給2口發送數據的時候,不會影響到其他接口,隔離了沖突域,并且,其他口也可以同時發送數據。(2)每個口可以工作在全雙工模式,可以同時接收與發送數據  (3)帶寬不在是跟Hub一樣,共享的形式了,比如交換機是百兆交換機,那么每個接口都可以獨享100M,如果交換機是千兆,每個接口則可以獨享1000M。 這樣就解決了局域網規模增大,由于沖突帶來的問題,并且帶寬也得到了提升。

作為初學者,物理層與數據鏈路層要了解哪些_數據鏈路層_08

 

3)具有學習地址的功能

Hub它收到一個數據的時候是直接廣播到其他接口,這種模式顯然影響整個網絡,安全隱患大,交換機改變了這種模式,由于它工作在鏈路層,也使用了以太網協議,它能夠去學習MAC地址,并且通過學習把它記錄在自己的數據表中,這樣交換機就知道,哪個口是對應哪個MAC了,當A去訪問D的時候,交換機收到這樣一個數據幀后,讀取到里面的目的MAC是發給D的,D4號接口,直接交給D的接口即可,而不用把數據從其他接口廣播的形式發送了。

 

 

作為初學者,物理層與數據鏈路層要了解哪些_數據鏈路層_09

 

至此呢,交換機從取代集線器開始到如今一直在企業網中使用,并且在如今的網絡設備中,交換機不在是單純的歸納到數據鏈路層了,因為在企業網中還有高級點的三層交換機,能處理IP數據包,以及能讀取四層的端口號信息,但是核心的理念還是不變的,這些我們在正式進入交換機篇的時候會詳細講解。

 

知識點擴充

1)半雙工跟全雙工

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

 

2)總結下Hub與交換機的特點

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

  慢慢的公司發展起來了,這里交換機還是作為一個大的辦公區域,高層人員都有了獨立的辦公室,想要找到某個人溝通,只需要去往對應的門牌號(MAC地址)就能找到對應的人進入房間溝通,不會影響到其他人,辦公室之間也不會相互沖突。

 

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

  這個屬于一個物理層介質的單位問題,不知道大家有沒有發現過,比如我們電腦里面的文件大小單位都是MB、GB,這個屬于存儲以字節作為單位,但是在我們學習的網絡中,是以最小的比特做單位的,1字節=8比特,所以你可能會困惑,明明我拉了條100M的帶寬,但是實際在下載的時候怎么只能達到10~12MB左右,這就是因為帶寬的單位用的是比特,而不是字節,而下載數據用的單位是字節,中間相差8倍,這里作為一個補充了解下,后續在換算或者做某些帶寬限制的時候用的上。

 

4)關于每一層數據的稱乎

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

 

遺留下來的細節問題(思考下)

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

 

作者:一天,本文首發于公眾號:網絡之路博客