最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

趣談網(wǎng)絡(luò)協(xié)議棧,以太網(wǎng)基礎(chǔ)MAC和PHY

2022-09-14 15:15 作者:Linux遠(yuǎn)航者  | 我要投稿

網(wǎng)卡(Network Interface Card,簡稱NIC),也稱網(wǎng)絡(luò)適配器,是電腦與局域網(wǎng)相互連接的設(shè)備。無論是普通電腦還是高端服務(wù)器,只要連接到局域網(wǎng),就都需要安裝一塊網(wǎng)卡。如果有必要,一臺電腦也可以同時安裝兩塊或多塊網(wǎng)卡。

電腦之間在進(jìn)行相互通訊時,數(shù)據(jù)不是以流而是以幀的方式進(jìn)行傳輸?shù)?。我們可以把幀看做是一種數(shù)據(jù)包,在數(shù)據(jù)包中不僅包含有數(shù)據(jù)信息,而且還包含有數(shù)據(jù)的發(fā)送地、接收地信息和數(shù)據(jù)的校驗(yàn)信息。

一個網(wǎng)卡主要包括OSI的最下面的兩層,物理層和數(shù)據(jù)鏈路層

物理層定義了數(shù)據(jù)傳送與接收所需要的電與光信號、線路狀態(tài)、時鐘基準(zhǔn)、數(shù)據(jù)編碼和電路等,并向數(shù)據(jù)鏈路層設(shè)備提供標(biāo)準(zhǔn)接口。物理層的芯片稱之為PHY

數(shù)據(jù)鏈路層則提供尋址機(jī)構(gòu)、數(shù)據(jù)幀的構(gòu)建、數(shù)據(jù)差錯檢查、傳送控制、向網(wǎng)絡(luò)層提供標(biāo)準(zhǔn)的數(shù)據(jù)接口等功能。數(shù)據(jù)鏈路層的芯片稱之為MAC控制器

本文針對這兩層進(jìn)行相關(guān)的學(xué)習(xí),總結(jié)整個系統(tǒng)的框架和物理上硬件組成原理,學(xué)習(xí)數(shù)據(jù)包的發(fā)送和接收的處理過程。

一,系統(tǒng)概述

從硬件的角度來分析,以太網(wǎng)的電路接口一般由CPU、MAC(Media Access Control)控制器和物理層接口(physical Layer PHY)組成,如下圖所示:

對于上述三部分,并不一定都是獨(dú)立的芯片,主要有以下幾種情況

  • CPU內(nèi)部集成了MAC和PHY,難度較高

  • CPU內(nèi)部集成MAC,PHY采用獨(dú)立芯片(主流方案)

  • CPU不集成MAC和PHY,MAC和PHY采用獨(dú)立芯片或者集成芯片(高端采用)

PHY整合了大量模擬硬件,而MAC是典型的全數(shù)字器件,芯片面積及模擬/數(shù)字混合架構(gòu)是為什么先將MAC集成進(jìn)微控制器而將PHY留在片外的原因。更靈活、密度更高的芯片技術(shù)已經(jīng)可以實(shí)現(xiàn)MAC和PHY的單芯片整合

以常用的CPU內(nèi)部集成MAC,PHY采用獨(dú)立的芯片方案,虛線內(nèi)表示CPU和MAC集成在一起,PHY芯片通過MII接口與CPU上的MAC互聯(lián)。


對于這種方案,其硬件方案比獨(dú)立的相對于更簡單,PHY與MAC之間有以下兩個重要的硬件接口

  • MDIO總線接口,主要是完成CPU對于PHY芯片的寄存器配置

  • MII總線接口,主要是完成數(shù)據(jù)收發(fā)相關(guān)的業(yè)務(wù)

當(dāng)我們的PHY芯片發(fā)送數(shù)據(jù),接受到MAC層發(fā)送過來的數(shù)字信號,然后轉(zhuǎn)換成模擬信號,通過MDI接口傳輸出去。但是我們的網(wǎng)線傳輸?shù)木嚯x又很長,有時候需要送到100米甚至更遠(yuǎn)的地址,那么就會導(dǎo)致信號的流失。而且外網(wǎng)線與芯片直接相連的話,電磁感應(yīng)和靜電,也很容易導(dǎo)致芯片的損壞,所以就要使用網(wǎng)絡(luò)變壓器,其主要作用是

  • 傳輸數(shù)據(jù),它把PHY送出來的差分信號用差模耦合的線圈耦合濾波以增強(qiáng)信號,并且通過電磁場的轉(zhuǎn)換耦合到不同電平的連接網(wǎng)線的另外一端

  • 隔離網(wǎng)線連接的不同網(wǎng)絡(luò)設(shè)備間的不同電平,以防止不同電壓通過網(wǎng)線傳輸損壞設(shè)備

  • 還能使芯片端與外部隔離,抗干擾能力大大增強(qiáng),而且對芯片增加了很大的保護(hù)作用,保護(hù)PHY免遭由于電氣失誤而引起的損壞(如雷擊)

二,MAC控制器

MAC(Media Access Control),即媒體訪問控制子層協(xié)議,該部分有兩個概念:MAC可以是一個硬件控制器以及MAC通訊協(xié)議。該協(xié)議位于OSI七層協(xié)議中數(shù)據(jù)鏈路層的下半部分,主要是負(fù)責(zé)控制與連接物理層的物理介質(zhì)。

【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【865977150】整理了一些個人覺得比較好的學(xué)習(xí)書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。?!前100名進(jìn)群領(lǐng)取,額外贈送一份價值699的內(nèi)核資料包(含視頻教程、電子書、實(shí)戰(zhàn)項(xiàng)目及代碼)

2.1.1 MII接口

MII(Media Independent Interface)即媒體獨(dú)立接口,MII接口是MAC與PHY連接的標(biāo)準(zhǔn)接口。它是IEEE-802.3定義的以太網(wǎng)行業(yè)標(biāo)準(zhǔn)。MII接口提供了MAC與PHY之間、PHY與STA(Station Management)之間的互聯(lián)技術(shù)。媒體獨(dú)立表明在不對MAC硬件重新設(shè)計(jì)或替換的情況下,任何類型的PHY設(shè)備都可以正常工作.它包括一個數(shù)據(jù)接口,以及一個MAC和PHY之間的管理接口。MII接口有MII、RMII、SMII、SSMII、SSSMII、GMII、SGMII、RGMII等。這里簡要介紹其中的MII和RGMII。

MII接口主要包括以下三個部分:

  • 從MAC層到PHY層的發(fā)送數(shù)據(jù)接口

  • 從PHY層到MAC層的接收數(shù)據(jù)接口

  • 從MAC層和PHY層之間寄存器控制和信息獲取的MDIO接口

首先來看看MII的MAC層定義接口:

MII 數(shù)據(jù)接口總共需要 16 個信號,包括 TX_ER,TXD[3:0],TX_EN,TX_CLK,COL,RXD[3:0],RX_ER,RX_CLK,CRS,RX_DV 等。MII的時鐘為25MHz,傳輸速率為10/100Mbps。所以MII的特性如下:

  • 支持10Mb/s和100Mb/s的數(shù)據(jù)速率

  • 100M工作模式下,參考時鐘是25MHz;10M工作模式下,信號參考時鐘是2.5MHz

  • 支持全雙工、半雙工兩種工作模式

  • 發(fā)送和接收數(shù)據(jù)時采用,4bit方式

RMII的用途:

RMII是簡化的MII接口,在數(shù)據(jù)的收發(fā)上它比MII接口少了一倍的信號線(2數(shù)據(jù)位),所以它一般要求是50MHz的總線時鐘。RMII一般用在多端口的交換機(jī),所有的數(shù)據(jù)端口公用一個時鐘用于所有端口的收發(fā),這里就節(jié)省了不少的端口數(shù)目.RMII的一個端口要求7個數(shù)據(jù)線,比MII少了一倍,所以交換機(jī)能夠接入多一倍數(shù)據(jù)的端口.和MII一樣,RMII支持10Mbps和100Mbps的總線接口速度.

后來為了支持千兆網(wǎng)口,也就開始有了千兆網(wǎng)的MII接口,也就是GMII接口?,F(xiàn)在比較常用的是RGMII,減小了MAC和PHY之間的引腳數(shù)量。數(shù)據(jù)信號和控制信號混合在一起,并且在工作時鐘的上升沿和下降沿同時采樣,其對應(yīng)關(guān)系圖如下:

  • 10M帶寬對應(yīng)的是2.5MHz,因?yàn)?bit*2.5M=10Mbps

  • 100M帶寬對應(yīng)的是25MHz,因?yàn)?bit*25M=100Mbps

  • 1000M帶寬對應(yīng)的是125MHz,因?yàn)?50MHz頻率太高,所以采用雙邊沿采樣技術(shù)(會帶來設(shè)計(jì)復(fù)雜度)。4bit125M2=1000Mbps

2.1.2 SMI接口

SMI是MAC內(nèi)核訪問PHY寄存器接口,它由兩根線組成,雙工,MDC為時鐘,MDIO為雙向數(shù)據(jù)通信,原理上跟I2C總線很類似,也可以通過總線訪問多個不同的phy。

MDC/MDIO基本特性:

  • 兩線制:MDC(時鐘線)和MDIO(數(shù)據(jù)線)。

  • 時鐘頻率:2.5MHz

  • 通信方式:總線制,可同時接入的PHY數(shù)量為32個

  • 通過SMI接口,MAC芯片主動的輪詢PHY層芯片,獲得狀態(tài)信息,并發(fā)出命令信息。

管理幀格式:


讀操作時序

寫操作時序

  • 報頭: 每個讀寫均可通過報頭字段啟動,報頭字段對應(yīng)于MDIO線上32個連續(xù)的邏輯“1”位以及MDC的32個周期,該字段用于與PHY設(shè)備建立同步

  • 起始: 起始由<01>模式定義

  • 操作: 定義讀寫類型

  • PADDR: PHY地址由5位,可構(gòu)成32個唯一PHY地址

  • RADDR: 寄存器地址有5位

TA:

  • 數(shù)據(jù): 數(shù)據(jù)字段為16位

  • 空間: MDIO線驅(qū)動為高阻態(tài),三態(tài)驅(qū)動器必須禁止,PHY的上拉電阻使線路保持高阻態(tài)

3.PHY

物理層位于OSI最底層,物理層協(xié)議定義電氣信號、線的狀態(tài)、時鐘要求、數(shù)據(jù)編碼和數(shù)據(jù)傳輸用的連接器。 物理層的器件稱為PHY。

PHY是物理接口收發(fā)器,它實(shí)現(xiàn)OSI模型的物理層。IEEE-802.3標(biāo)準(zhǔn)定義了以太網(wǎng)PHY包括MII/GMII(介質(zhì)獨(dú)立接口)子層、PCS(物理編碼子層)、PMA(物理介質(zhì)附加)子層、PMD(物理介質(zhì)相關(guān))子層、MDI子層。

3.1 什么是PHY

發(fā)送數(shù)據(jù):對于PHY來說,并沒有幀的概念,對它來說,不管是地址、數(shù)據(jù)還是CRC,都會將并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)流,在按照物理層的編碼規(guī)則把數(shù)據(jù)編碼,最終轉(zhuǎn)換成模擬信號發(fā)送出去

接收數(shù)據(jù):從外部接收數(shù)據(jù)時,模擬信號先轉(zhuǎn)成數(shù)字信號,再經(jīng)過解碼得到數(shù)據(jù), 經(jīng)過MII送到MAC

CSMA/CD:可以檢測到網(wǎng)絡(luò)上是否有數(shù)據(jù)在傳送,如果有數(shù)據(jù)在傳送中就等待,一旦檢測到網(wǎng)絡(luò)空閑,再等待一個隨機(jī)時間后將送數(shù)據(jù)出去。如果兩個碰巧同時送出了數(shù)據(jù),那樣必將造成沖突。這時候,沖突檢測機(jī)構(gòu)可以檢測到?jīng)_突,然后各等待一個隨機(jī)的時間重新發(fā)送數(shù)據(jù)

3.2 MDI

MDI口是快速以太網(wǎng)100BASE-T定義的與介質(zhì)有關(guān)接口(Media Dependent Interface)。MDI是指通過收發(fā)器發(fā)送的100BASE-T信號,即100BASE-TX、FX、T4或T2信號。將集線器連接網(wǎng)絡(luò)接口卡時,其發(fā)送和接收對通常是相互連接的。集線器之間連接時,通常需要一條跨接電纜,其中的發(fā)送和接收對是反接的。MDI是正常的UTP或STP連接,而MDI-X連接器的發(fā)送和接收對是在內(nèi)部反接的,這就使得不同的設(shè)備(如集線器-集線器或集電器-交換機(jī)),可以利用常規(guī)的UTP或STP電纜實(shí)現(xiàn)背靠背的級聯(lián)?!?/p>

3.3 PHY基礎(chǔ)知識簡介

PHY是IEEE 802.3規(guī)定的一個標(biāo)準(zhǔn)模塊,SOC可以通過MDIO對PHY進(jìn)行配置或者讀取phy相關(guān)狀態(tài),PHY內(nèi)部寄存器必須滿足

PHY芯片的寄存器地址空間是5位,一般由外部硬件連接決定。

地址空間031共32個寄存器,IEEE定義了015這16個寄存器的功能,16-31這16個寄存器由廠商自行實(shí)現(xiàn)。也就是說不管哪個廠商的PHY芯片,其中0~15這16個寄存器是一模一樣的。

僅靠這 16個寄存器完全可以驅(qū)動起PHY芯片,至少能保證基本的網(wǎng)絡(luò)數(shù)據(jù)通信。因此 Linux 內(nèi)核有通用 PHY 驅(qū)動,按道理來講,不管你使用的是哪個廠家的 PHY 芯片,都可以使用 Linux 的這個通用 PHY 驅(qū)動來驗(yàn)證網(wǎng)絡(luò)工作是否正常。事實(shí)上在實(shí)際開發(fā)中可能會遇到一些其他的問題導(dǎo)致 Linux 內(nèi)核的通用 PHY 驅(qū)動工作不正常,這個時候就需要驅(qū)動開發(fā)人員去調(diào)試了。

隨著現(xiàn)在PHY芯片性能越來越強(qiáng)大,32個寄存器已經(jīng)無法滿足廠商的需求,因此很多廠商采用了分頁機(jī)制來開展寄存器地址空間,以求定義更多的寄存器。這些多出來的幾次器可以實(shí)現(xiàn)廠商特有的一些技術(shù),因此在Linux內(nèi)核里面可以看到很多具體的PHY芯片驅(qū)動源碼。

四,總結(jié)

MAC 就是以太網(wǎng)控制器,屬于OSI的數(shù)字鏈路層。 phy 屬于OSI的物理層(Physical layer),所以叫phy。

MAC主要處理的數(shù)字信號:

PHY負(fù)責(zé)把MAC的數(shù)字信號進(jìn)行編碼,串行化等操作后,轉(zhuǎn)化為模擬信號進(jìn)行發(fā)送。PHY在數(shù)據(jù)接受時, 進(jìn)行如上所述的逆操作,將模擬信號轉(zhuǎn)化為數(shù)字信號,解碼,并行化后,傳給MAC。

基礎(chǔ)以太網(wǎng)物理層非常簡單:它是一種物理層收發(fā)器(發(fā)射器和接收器),能將一個設(shè)備物理地連接到另一個設(shè)備。這種物理連接可以是銅線(例如CAT5電纜——一種家庭使用的藍(lán)色插線電纜)或光纖電纜。


趣談網(wǎng)絡(luò)協(xié)議棧,以太網(wǎng)基礎(chǔ)MAC和PHY的評論 (共 條)

分享到微博請遵守國家法律
池州市| 承德县| 平江县| 游戏| 攀枝花市| 汝南县| 保德县| 卢湾区| 金秀| 甘谷县| 朔州市| 多伦县| 贡山| 景德镇市| 弥渡县| 鹤峰县| 宣城市| 蓝山县| 澎湖县| 蒙城县| 阿拉善盟| 哈尔滨市| 梁河县| 合肥市| 东莞市| 绵竹市| 河北省| 龙口市| 玉龙| 吴堡县| 油尖旺区| 宣化县| 杭锦旗| 鄂伦春自治旗| 忻城县| 盐津县| 江达县| 太和县| 崇阳县| 五华县| 于田县|