一文讀懂以太網

序言

前階段學習了UCOSIII,源碼學完之後,我打算做點應用,鑑於我在網絡互聯方面的基礎比較薄弱,所以我打算做一些網絡相關的應用。某寶上買了一塊基於W5500的以太網模塊,W5500是一個搭載硬件TCP/IP協議棧的芯片,適用於嵌入式開發。

在學習如何使用這個模塊的過程中,我回憶起曾經學過的計算機網絡中的OSI協議棧模型,按道理來說這個模塊應該是屬於這個協議棧模型中的某些層,但我還是不能說清楚模塊中硬件與協議棧的對應關係。爲了搞清楚這些關係,我特地做了一些調查研究,特此總結一下。

文章大概分爲如下幾個部分

  • 網絡協協議棧介紹
  • IEEE802.3與以太網的關係
  • 以太網協議棧介紹
  • 結合網卡硬件具體分析

網絡協議棧介紹

我們先來介紹一下計算機網絡的網絡協議棧

最左邊是OSI標準定義的協議棧分層方式,最右邊是實際使用過程中定義的分層方式,也就是因特網的分層方式,中間是它們的對應關係。

下面這張圖展現了其具體的基本工作原理

數據由發送機從應用層發出,經過一層一層打包,最終由物理層以某種物理介質爲載體發送出去,接收機從物理介質接收到數據,經過一層層解包最終送給應用層使用。

IEEE802.3與以太網的關係

以太網從歷史的角度看有兩個,第一個是由三家公司開發的DIX以太網標準。這個標準有兩個版本,分別是1980年9月發佈的1.0版本和1982年11月發佈的2.0版本,這也是DIX的最後一個版本。在其後1985年IEEE在DIX以太網標準的基礎上制定了IEEE 802.3標準。

DIX與IEEE 802.3從工作機制上是一致的。但實際上,DIX以太網標準與IEEE 802.3有一些區別,DIX是把定義的OSI參考模型中的物理層和數據鏈路層所完成的功能,包括在一起了。它把LLC SUBLAYER(子層)和MAC SUBLAYER 媒介訪問控制子層劃分成了數據鏈路層的兩個子層。目的是爲了數據偵傳輸獨立與所用的物理介質和介質訪問控制方法。而IEEE 802.3規定了物理層和數據鏈路層中媒介訪問控制子層的MAC部分,它只包括了第二層的一部分功能,而IEEE 802.2定義了邏輯鏈路控制子層LLC的功能。MAC與介質訪問控制方法密切相關,而LLC子層與所有介質訪問方法無關。LLC的隔離作用,使得網絡層僅針對LLC這種接口工作,不必關心下面的介質類型及介質訪問方法。而IEEE 802.3是針對以太網的標準,而IEEE 802.2並不屬於以太網。所以說DIX與IEEE 802.3只是包括的範圍不同,相應它們兩中協議的偵格式也有一些差異。我們也可以這樣的理解。

通俗地說就是,以太網先出來,IEEE發現這個東西很有前途,就趕緊以它爲原型制定了一個有線局域網標準叫做IEEE 802.3,這個標準與原始以太網基本一樣,只有些許不同,所以我們常常不加區分地將二者等同。但鑑於本篇文章的目的就是爲了搞清楚這些層次之間的關係,所以我們要嚴格地對二者進行區分,IEEE802.3和以太網是不一樣的,前者只定義了物理層和鏈路層的MAC子層,後者包括鏈路和物理兩層。

鏈路層分爲LLC和MAC,其中LLC叫做802.2,MAC+PHY叫做802.3,所以有如下公式:802.3+802.2=以太網

以太網協議棧介紹

以太網協議棧在OSI模型中的位置,如下圖

IEEE 802中定義的服務和協議限定在OSI模型的最低兩層(即物理層和數據鏈路層)。事實上,IEEE 802將OSI的數據鏈路層分爲兩個子層,分別是邏輯鏈路控制(LLC, Logical Link Control)和介質訪問控制(MAC, Media Access Control),如下所示:

從上面我們可以看出,以太網佔了兩層(物理層+完整鏈路層),而IEEE802.3佔了一層(物理層+鏈路層中的MAC子層)。

瞭解了以太網和IEEE802.3在OSI模型中的位置以後,下面來看看以太網的層次劃分

其實在MAC(介質訪問控制子層)上面還有一個LLC(邏輯鏈路控制子層),這兩個部分共同構成了鏈路層。鏈路層通過MII(或者其它一些升級版的接口,如GMII等)將數據傳送到物理層,物理層對這些數據進行處理並以差分信號的形式發送出去,下面解釋了圖中物理層的一些縮略詞的含義:

  • MII(media independent interface):MII的實例應用,就是一種協議,用來將數據從數據鏈路層傳輸到物理層。
  • PCS(physical coding sublayer):對要通過支撐體傳送的信息進行編碼。實際定義的子層有 4 個:100BASE-X、100BASE-T4、100BASE-T2 和 1000BASE-X。
  • PMA(physical media attachment):用於給定的介質類型。其功能是:數據傳送、衝突偵測、時鐘同步等。
  • PMD(physical medium dependent):就在 MDI 接口之前,用於爲MDI和傳送支撐體提供接口。
  • MDI(media dependent device):用於將收發器連接到發送支撐的插頭的總稱。它可以是 10BASE2 網絡中的 BNC 插頭,或者雙絞線網絡的 RJ-45 插頭,或者光纖連接器。

上面看了那麼多是不是有點蒙,下面我們會以網卡爲例將抽象與實際關聯。

結合網卡硬件具體分析

網卡的主要工作原理:發送數據時,計算機把要傳輸的數據並行寫到網卡的緩存,網卡對要傳輸的數據進編碼(10M以太網使用曼切斯特碼,100M以太網使用差分曼切斯特碼),串行發到傳輸介質上.接收數據時,則相反。對於網卡而言,每塊網卡都有一個唯一的網絡節點地址,它是網卡生產廠家在生產時燒入ROM(只讀存儲芯片)中的,我們把它叫做MAC地址(物理地址),且保證絕對不會重複。MAC爲48bit,前24比特由IEEE分配,是需要錢買的,後24bit由網卡生產廠家自行分配。

網卡的功能主要有兩個:

  • 將電腦的數據封裝爲幀,並通過網線(對無線網絡來說就是電磁波)將數據發送到網絡上去。
  • 是接收網絡上其它設備傳過來的幀,並將幀重新組合成數據,發送到所在的電腦中。

網卡能接收所有在網絡上傳輸的信號,但正常情況下只接受發送到該電腦的幀和廣播幀,將其餘的幀丟棄。然後,傳送到系統CPU做進一步處理。當電腦發送數據時,網卡等待合適的時間將分組插入到數據流中。接收系統通知電腦消息是否完整地到達,如果出現問題,將要求對方重新發送。

現在的網卡大多集成在主板上面了,不過爲了說明結構組成,我們還是用上古時期的獨立網卡來介紹其結構

以最常見的PCI接口的網卡爲例,一塊網卡主要由PCB線路板、主芯片、數據汞、金手指(總線插槽接口)、BOOTROM、EEPROM、晶振、RJ45接口、指示燈、固定片等等,以及一些二極管、電阻電容等組成。下面我們就來分別瞭解一下其中主要部件。

主芯片

主芯片有兩大類,一種是集成了MAC和PHY的,另一種是隻有MAC的,前者對應着數據鏈路層和物理層,後者只對應數據鏈路層,需要單獨的芯片來構成物理層。在二者分離的情況下,主芯片與PHY芯片之間就需要MII來進行通信

網卡的主控制芯片是網卡的核心元件,一塊網卡性能的好壞和功能的強弱多寡,主要就是看這塊芯片的質量。

bootroom

BOOTROM插座也就是常說的無盤啓動ROM接口,其是用來通過遠程啓動服務構造無盤工作站的。遠程啓動服務(Remoteboot,通常也叫RPL)使通過使用服務器硬盤上的軟件來代替工作站硬盤引導一臺網絡上的工作站成爲可能。網卡上必須裝有一個RPL(Remote Program Load遠程初始程序加載)ROM芯片才能實現無盤啓動,每一種RPL ROM芯片都是爲一類特定的網絡接口卡而製作的,它們之間不能互換。帶有RPL的網絡接口卡發出引導記錄請求的廣播(broadcasts),服務器自動的建立一個連接來響應它,並加載MS-DOS啓動文件到工作站的內存中。

此外,在BOOTROM插槽中心一般還有一顆93C46、93LC46或93c56的EEPROM芯片(93C56是128*16bit的EEPROM,而93C46是64*16bit的EEPROM),它相當於網卡的BIOS,裏面記錄了網卡芯片的供應商ID、子系統供應商ID、網卡的MAC地址、網卡的一些配置,如總線上PHY的地址,BOOTROM的容量,是否啓用BOOTROM引導系統等內容。主板板載網卡的EEPROM信息一般集成在主板BIOS中。

LED指示燈

一般來講,每塊網卡都具有1個以上的LED(Light Emitting Diode發光二極管)指示燈,用來表示網卡的不同工作狀態,以方便我們查看網卡是否工作正常。典型的LED指示燈有Link/Act、Full、Power等。Link/Act表示連接活動狀態,Full表示是否全雙工(Full Duplex),而Power是電源指示(主要用在USB或PCMCIA網卡上)等 。

數據汞

數據汞是消費級PCI網卡上都具備的設備,數據汞也被叫做網絡變壓器或可稱爲網絡隔離變壓器。它在一塊網卡上所起的作用主要有兩個,一是傳輸數據,它把PHY送出來的差分信號用差模耦合的線圈耦合濾波以增強信號,並且通過電磁場的轉換耦合到不同電平的連接網線的另外一端;一是隔離網線連接的不同網絡設備間的不同電平,以防止不同電壓通過網線傳輸損壞設備。除此而外,數據汞還能對設備起到一定的防雷保護作用。

晶振

晶振是石英振盪器的簡稱,英文名爲Crystal,它是時鐘電路中最重要的部件,它的作用是向顯卡、網卡、主板等配件的各分提供基準頻率,它就像個標尺,工作頻率不穩定會造成相關設備工作頻率不穩定,自然容易出現問題。由於製造工藝不斷提高,現在晶振的頻率偏差、溫度穩定性、老化率、密封性等重要技術指標都很好,已不容易出現故障,但在選用時仍可留意一下晶振的質量。

網線接口

對應着MDI

網卡上還剩一些組件,PMA,PCS和PMD沒有提,自己去了解一下吧,而且並不是所有以太網解決方案都會包括完整的標準內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章