eth鏈路層原理
1. 簡述Interent分層路由協議原理
分層網路協議(OSI模型)是計算機術語,是由國際標准化組織ISO創立的一個網路通訊模型。
OSI模型共分七層:從上至下依次是
應用層指網路操作系統和具體的應用程序,對應WWW伺服器、FTP伺服器等應用軟體
表示層數據語法的轉換、數據的傳送等
會話層 建立起兩端之間的會話關系,並負責數據的傳送
傳輸層負責錯誤的檢查與修復,以確保傳送的質量,是TCP工作的地方。(報文)
網路層提供了編址方案,IP協議工作的地方(數據包)
數據鏈路層將由物理層傳來的未經處理的位數據包裝成數據幀
物理層 對應網線、網卡、介面等物理設備(位)
2. 數據鏈路層的工作原理是怎樣的
數據鏈路層最重要的作用就是:通過一些數據鏈路層協議(即鏈路控制規程),在不太可靠的物理鏈路上實現可靠的數據傳輸。
工作原理:
1.鏈路管理:當網路中的兩個結點要進行通信時,數據的發方必須確知收方是否已經處在准備接收的狀態。為此,通信的雙方必須先要交換一些必要的信息。或者用我們的術語,必須先建立一條數據鏈路。同樣地,在傳輸數據時要維持數據鏈路,而在通信完畢時要釋放數據鏈路。數據鏈路的建立、維持和釋放就叫做鏈路管理。
2.幀同步:在數據鏈路層,數據的傳送單位是幀。數據一幀一幀地傳送,就可以在出現差錯時,將有差錯的幀再重傳一次,而避免了將全部數據都進行重傳。幀同步指的是收方如何從收到的比特流中准確地區分出一幀的開始和結束。
3.流量控制:發方發送數據的速率必須使收方來得及接收。當收方來不及接收時,就必須及時控制發方發送數據的速率。
4.差錯控制:在計算機通信中,一般都要求有極低的比特差錯率。為此,廣泛地採用了編碼技術。編碼技術有兩大類。一類是前向糾錯,即收方收到有差錯的數據幀時,能夠自動將差錯改正過來。這種方法的開銷較大,不適合於計算機通信。另一類是檢錯重發,即收方可以檢測出收到的幀中有差錯(但並不知道是哪幾個比特錯了)。於是就讓發方重復發送這一幀,直到收方正確收到這一幀為止。這種方法在計算機通信中是最常用的。本章所要討論的協議,都是採用檢錯重發這種差錯控制方法。為了防止發送方等待收方應答時出現等待死鎖,還將提供超時控制機制。重發幀後,為了防止收方收到重復幀,通常為幀給定一個幀序號。
5.區分數據和控制信息:由於數據和控制信息都是在同一信道中傳送,而在許多情況下,數據和控制信息處於同一幀中。因此一定要有相應的措施使收方能夠將它們區分開來。
6.透明傳輸:簡單的說,透明傳輸就是發送方發送什麼的數據,不管數據傳輸過程是如何實現的接收方將收到什麼樣的數據。更確切地說,所謂透明傳輸就是不管所傳數據是什麼樣的比特組合,都應當能夠在鏈路上傳送。當所傳數據中的比特組合恰巧出現了與某一個控制信息完全一樣時,必須採取適當的措施,使收方不會將這樣的數據誤認為是某種控制信息。這樣才能保證數據鏈路層的傳輸的透明的。
7.定址:在多點連接的情況下,必須保證每一幀都能送到正確的目的站。收方也應當知道發方是哪一個站。
3. 計算機網路(三)數據鏈路層
結點:主機、路由器
鏈路:網路中兩個結點之間的物理通道,鏈路的傳輸介質主要有雙絞線、光纖和微波。分為有線鏈路、無線鏈路。
數據鏈路:網路中兩個結點之間的邏輯通道,把實現控制數據傳輸協議的硬體和軟體加到鏈路上就構成數據鏈路。
幀:鏈路層的協議數據單元,封裝網路層數據報。
數據鏈路層負責通過一條鏈路從一個結點向另一個物理鏈路直接相連的相鄰結點傳送數據報。
數據鏈路層在物理層提供服務的基礎上向網路層提供服務,其最基本的服務是將源自網路層來的數據可靠地傳輸到相鄰節點的目標機網路層。其主要作用是加強物理層傳輸原始比特流的功能,將物理層提供的可能出錯的物理連接改造成為 邏輯上無差錯的數據鏈路 ,使之對網路層表現為一條無差錯的鏈路。
封裝成幀就是在一段數據的前後部分添加首部和尾部,這樣就構成了一個幀。接收端在收到物理層上交的比特流後,就能根據首部和尾部的標記,從收到的比特流中識別幀的開始和結束。首部和尾部包含許多的控制信息,他們的一個重要作用:幀定界(確定幀的界限)。
幀同步:接收方應當能從接收到的二進制比特流中區分出幀的起始和終止。
組幀的四種方法:
透明傳輸是指不管所傳數據是什麼樣的比特組合,都應當能夠在鏈路上傳送。因此,鏈路層就「看不見」有什麼妨礙數據傳輸的東西。
當所傳數據中的比特組合恰巧與某一個控制信息完全一樣時,就必須採取適當的措施,使收方不會將這樣的數據誤認為是某種控制信息。這樣才能保證數據鏈路層的傳輸是透明的。
概括來說,傳輸中的差錯都是由於雜訊引起的。
數據鏈路層編碼和物理層的數據編碼與調制不同。物理層編碼針對的是單個比特,解決傳輸過程中比特的同步等問題,如曼徹斯特編碼。而數據鏈路層的編碼針對的是一組比特,它通過冗餘碼的技術實現一組二進制比特串在傳輸過程是否出現了差錯。
較高的發送速度和較低的接收能力的不匹配,會造成傳輸出錯,因此流量控制也是數據鏈路層的一項重要工作。數據鏈路層的流量控制是點對點的,而傳輸層的流量控制是端到端的。
滑動窗口有以下重要特性:
若採用n個比特對幀編號,那麼發送窗口的尺寸W T 應滿足: 。因為發送窗口尺寸過大,就會使得接收方無法區別新幀和舊幀。
每發送完一個幀就停止發送,等待對方的確認,在收到確認後再發送下一個幀。
除了比特出差錯,底層信道還會出現丟包 [1] 問題
「停止-等待」就是每發送完一個分組就停止發送,等待對方確認,在收到確認後再發送下一個分組。其操作簡單,但信道利用率較低
信道利用率是指發送方在一個發送周期內,有效地發送數據所需要的時間占整個發送周期的比率。即
GBN發送方:
GBN接收方:
因連續發送數據幀而提高了信道利用率,重傳時必須把原來已經正確傳送的數據幀重傳,是傳送效率降低。
設置單個確認,同時加大接收窗口,設置接收緩存,緩存亂序到達的幀。
SR發送方:
SR接收方:
發送窗口最好等於接收窗口。(大了會溢出,小了沒意義),即
傳輸數據使用的兩種鏈路
信道劃分介質訪問控制將使用介質的每個設備與來自同一通信信道上的其他設備的通信隔離開來,把時域和頻域資源合理地分配給網路上的設備。
當傳輸介質的帶寬超過傳輸單個信號所需的帶寬時,人們就通過在一條介質上同時攜帶多個傳輸信號的方法來提高傳輸系統的利用率,這就是所謂的多路復用,也是實現信道劃分介質訪問控制的途徑。多路復用技術把多個信號組合在一條物理信道上進行傳輸,使多個計算機或終端設備共享信道資源,提高了信道的利用率。信道劃分的實質就是通過分時、分頻、分碼等方法把原來的一條廣播信道,邏輯上分為幾條用於兩個結點之間通信的互不幹擾的子信道,實際上就是把廣播信道轉變為點對點信道。
頻分多路復用是一種將多路基帶信號調制到不同頻率載波上,再疊加形成一個復合信號的多路復用技術。在物理信道的可用帶寬超過單個原始信號所需帶寬的情況下,可將該物理信道的總帶寬分割成若千與傳輸單個信號帶寬相同(或略寬)的子信道,每個子信道傳輸一種信號,這就是頻分多路復用。
每個子信道分配的帶寬可不相同,但它們的總和必須不超過信道的總帶寬。在實際應用中,為了防止子信道之間的千擾,相鄰信道之間需要加入「保護頻帶」。頻分多路復用的優點在於充分利用了傳輸介質的帶寬,系統效率較高;由於技術比較成熟,實現也較容易。
時分多路復用是將一條物理信道按時間分成若干時間片,輪流地分配給多個信號使用。每個時間片由復用的一個信號佔用,而不像FDM那樣,同一時間同時發送多路信號。這樣,利用每個信號在時間上的交叉,就可以在一條物理信道上傳輸多個信號。
就某個時刻來看,時分多路復用信道上傳送的僅是某一對設備之間的信號:就某段時間而言,傳送的是按時間分割的多路復用信號。但由於計算機數據的突發性,一個用戶對已經分配到的子信道的利用率一般不高。統計時分多路復用(STDM,又稱非同步時分多路復用)是TDM 的一種改進,它採用STDM幀,STDM幀並不固定分配時隙,面按需動態地分配時隙,當終端有數據要傳送時,才會分配到時間片,因此可以提高線路的利用率。例如,線路傳輸速率為8000b/s,4個用戶的平均速率都為2000b/s,當採用TDM方式時,每個用戶的最高速率為2000b/s.而在STDM方式下,每個用戶的最高速率可達8000b/s.
波分多路復用即光的頻分多路復用,它在一根光纖中傳輸多種不同波長(頻率)的光信號,由於波長(頻率)不同,各路光信號互不幹擾,最後再用波長分解復用器將各路波長分解出來。由於光波處於頻譜的高頻段,有很高的帶寬,因而可以實現多路的波分復用
碼分多路復用是採用不同的編碼來區分各路原始信號的一種復用方式。與FDM和 TDM不同,它既共享信道的頻率,又共享時間。下面舉一個直觀的例子來理解碼分復用。
實際上,更常用的名詞是碼分多址(Code Division Multiple Access.CDMA),1個比特分為多個碼片/晶元( chip),每一個站點被指定一個唯一的m位的晶元序列,發送1時發送晶元序列(通常把o寫成-1) 。發送1時站點發送晶元序列,發送o時發送晶元序列反碼。
純ALOHA協議思想:不監聽信道,不按時間槽發送,隨機重發。想發就發
如果發生沖突,接收方在就會檢測出差錯,然後不予確認,發送方在一定時間內收不到就判斷發生沖突。超時後等一隨機時間再重傳。
時隙ALOHA協議的思想:把時間分成若干個相同的時間片,所有用戶在時間片開始時刻同步接入網路信道,若發生沖突,則必須等到下一個時間片開始時刻再發送。
載波監聽多路訪問協議CSMA(carrier sense multiple access)協議思想:發送幀之前,監聽信道。
堅持指的是對於監聽信道忙之後的堅持。
1-堅持CSMA思想:如果一個主機要發送消息,那麼它先監聽信道。
優點:只要媒體空閑,站點就馬上發送,避免了媒體利用率的損失。
缺點:假如有兩個或兩個以上的站點有數據要發送,沖突就不可避免。
非堅持指的是對於監聽信道忙之後就不繼續監聽。
非堅持CSMA思想:如果一個主機要發送消息,那麼它先監聽信道。
優點:採用隨機的重發延遲時間可以減少沖突發生的可能性。
缺點:可能存在大家都在延遲等待過程中,使得媒體仍可能處於空閑狀態,媒體使用率降低。
p-堅持指的是對於監聽信道空閑的處理。
p-堅持CSMA思想:如果一個主機要發送消息,那麼它先監聽信道。
優點:既能像非堅持演算法那樣減少沖突,又能像1-堅持演算法那樣減少媒體空閑時間的這種方案。
缺點:發生沖突後還是要堅持把數據幀發送完,造成了浪費。
載波監聽多點接入/碰撞檢測CSMA/CD(carrier sense multiple access with collision detection)
CSMA/CD的工作流程:
由圖可知,至多在發送幀後經過時間 就能知道所發送的幀有沒有發生碰撞。因此把乙太網端到端往返時間為 稱為爭周期(也稱沖突窗口或碰撞窗口)。
截斷二進制指數規避演算法:
最小幀長問題:幀的傳輸時延至少要兩倍於信號在匯流排中的傳播時延。
載波監聽多點接入/碰撞避免CSMA/CA(carrier sense multiple access with collision avoidance)其工作原理如下
CSMA/CD與CSMA/CA的異同點:
相同點:CSMA/CD與CSMA/CA機制都從屬於CSMA的思路,其核心是先聽再說。換言之,兩個在接入信道之前都須要進行監聽。當發現信道空閑後,才能進行接入。
不同點:
輪詢協議:主結點輪流「邀請」從屬結點發送數據。
令牌:一個特殊格式的MAC控制幀,不含任何信息。控制信道的使用,確保同一時刻只有一個結點獨占信道。每個結點都可以在一定的時間內(令牌持有時間)獲得發送數據的權利,並不是無限制地持有令牌。應用於令牌環網(物理星型拓撲,邏輯環形拓撲)。採用令牌傳送方式的網路常用於負載較重、通信量較大的網路中。
輪詢訪問MAC協議/輪流協議/輪轉訪問MAC協議:基於多路復用技術劃分資源。
隨機訪問MAC協議: 用戶根據意願隨機發送信息,發送信息時可獨占信道帶寬。 會發生沖突
信道劃分介質訪問控制(MAC Multiple Access Control )協議:既要不產生沖突,又要發送時佔全部帶寬。
區域網(Local Area Network):簡稱LAN,是指在某一區域內由多台計算機互聯成的計算機組,使用廣播信道。其特點有
決定區域網的主要要素為:網路拓撲,傳輸介質與介質訪問控制方法。
區域網的分類
IEEE 802標准所描述的區域網參考模型只對應OSI參考模型的數據鏈路層與物理層,它將數據鏈路層劃分為邏輯鏈路層LLC子層和介質訪問控制MAC子層。
乙太網(Ethernet)指的是由Xerox公司創建並由Xerox、Intel和DEC公司聯合開發的基帶匯流排區域網規范,是當今現有區域網採用的最通用的通信協議標准。乙太網絡使用CSMA/CD(載波監聽多路訪問及沖突檢測)技術。 乙太網只實現無差錯接收,不實現可靠傳輸。
乙太網兩個標准:
乙太網提供無連接、不可靠的服務
10BASE-T是傳送基帶信號的雙絞線乙太網,T表示採用雙絞線,現10BASE-T 採用的是無屏蔽雙絞線(UTP),傳輸速率是10Mb/s。
計算機與外界有區域網的連接是通過通信適配器的。
在區域網中,硬體地址又稱為物理地址,或MAC地址。MAC地址:每個適配器有一個全球唯一的48位二進制地址,前24位代表廠家(由IEEE規定),後24位廠家自己指定。常用6個十六進制數表示,如02-60-8c-e4-b1-21。
最常用的MAC幀是乙太網V2的格式。
IEEE 802.11是無線區域網通用的標准,它是由IEEE所定義的無線網路通信的標准。
廣域網(WAN,Wide Area Network),通常跨接很大的物理范圍,所覆蓋的范圍從幾十公里到幾千公里,它能連接多個城市或國家,或橫跨幾個洲並能提供遠距離通信,形成國際性的遠程網路。
廣域網的通信子網主要使用分組交換技術。廣域網的通信子網可以利用公用分組交換網、衛星通信網和無線分組交換網,它將分布在不同地區的區域網或計算機系統互連起來,達到資源共享的目的。如網際網路(Internet)是世界范圍內最大的廣域網。
點對點協議PPP(Point-to-Point Protocol)是目前使用最廣泛的數據鏈路層協議,用戶使用撥號電話接入網際網路時一般都使用PPP協議。 只支持全雙工鏈路。
PPP協議應滿足的要求
PPP協議的三個組成部分
乙太網交換機
沖突域:在同一個沖突域中的每一個節點都能收到所有被發送的幀。簡單的說就是同一時間內只能有一台設備發送信息的范圍。
廣播域:網路中能接收任一設備發出的廣播幀的所有設備的集合。簡單的說如果站點發出一個廣播信號,所有能接收收到這個信號的設備范圍稱為一個廣播域。
乙太網交換機的兩種交換方式:
直通式交換機:查完目的地址(6B)就立刻轉發。延遲小,可靠性低,無法支持具有不同速率的埠的交換。
存儲轉發式交換機:將幀放入高速緩存,並檢查否正確,正確則轉發,錯誤則丟棄。延遲大,可靠性高,可以支持具有不同速率的埠的交換。
4. 02 - 數據鏈路層的詳細認識
時間有限我這里只寫了一部分內容,更詳細的內容可以直接看我的筆記 第三章數據鏈路層
數據鏈路層的任務就是將分組從一個網路中或一個鏈路上的一端傳送到另一端。數據鏈路層傳送的數據單元稱為幀(frame)。所以也可以說數據鏈路層的任務就是在一個網路(或一段鏈路上)傳送以幀為單位的數據
數據鏈路層屬於計算機網路的底層,僅在物理層的上方,在網路層的下方,網路中的主機、路由器等都必須實現數據鏈路層。數據鏈路層使用的信道主要有兩種類型,點對點信道,廣播信道
在點對點信道中最重要的是如何實現可靠傳輸(在實際中並不會在數據鏈路層實現可靠傳輸,而是交給上層)
網路層的IP數據報必須向下傳達到數據鏈路層,在數據報前後分別加上首部和尾部,封裝成為一個完整的幀。因為在數據鏈路層就是以幀為單位傳輸和處理數據,因此,數據鏈路層中的幀長就是數據部分加上首部和尾部的長度。
發送方將幀以比特流的形式發送給接收方(在物理層會轉換成電信號),接收方為了能夠處理幀數據,必須正確認識每個幀的開始和結束,這就需要進行幀定界
幀定界有很多種,比如乙太網就是在傳輸的幀與幀之間插入時間間隔來實現,只有首部有幀定界符,尾部沒有幀定界符。還有一種就是在幀的首部和尾部都加上一個幀定界符。
幀定界符:
不同類型:
幀定界符在透明傳輸中的問題和解決
問題: 傳輸數據存在使用幀定界符所使用的字元或比特組合,會出現錯誤的幀定界
解決:
注意:
通信鏈路的傳輸都不會是理想的,比特在傳輸過程中可能會產生差錯,比如1變為0,0變為1,這叫做比特差錯,因此就需要在接收端進行差錯檢測。
發送方需要採用某種差錯檢測演算法,使用發送的數據計算出差錯檢測碼EDC,差錯檢測碼隨數據一起發送給接收方,接收方使用同樣的差錯檢測演算法計算出差錯檢測碼EDC',如果兩者不一致,則表示出現差錯,一般採用循環冗餘檢驗(CRC)來檢錯
差錯檢測演算法:
接收雙方需要約定好一個多項式,之後按照下圖的方式進行處理
案例說明
發送方的冗餘校驗:
說明:
接收方的冗餘校驗:
說明:
注意:
有些情況下數據鏈路層需要向上層的網路層提供「可靠傳輸」的服務,也就是發送端發送什麼,對應的接收端就必須接收什麼。我們通過可靠傳輸協議來實現數據鏈路層的可靠傳輸,有三種,停止等待協議SW、回退N步協議GBN、選擇重傳協議SR。
可靠傳輸協議就是要在不可靠的信道上實現可靠的數據傳輸服務。
在計算機網路中實現可靠傳輸的基本方法就是:如果發現錯誤就重傳
使用分組確認和超時重傳機制就可以在不可靠的信道上實現可靠的數據傳輸。
解決: 可以在發送方發送完一個數據分組後,啟動一個超時計時器,若超出了設置的重傳時間,發送方仍沒有收到接收方的任何確認分組,就會重傳原來的分組。
注意: 重傳時間的選擇一般是略大於「從發送方到接收方的平均往返時間」數據鏈路層的往返時間是比較確定的,可以使用這種方式
說明:
上面也可以看到停止等待協議的信道利用率很低,所以需要採用流水線傳輸方式,發送方不間斷的發送分組來提高信道利用率。但是這種方式有可能會使接收方來不及處理這些分組,從而導致分組的丟失。因此需要限制發送方連續發送分組的個數避免這個問題,而這種方式就是回退N步協議。
簡單理解回退N步協議就是停止等待協議只能發送一個分組就等待,回退N步協議是發送多個分組才處於等待狀態
原理: 回退N步協議在流水線傳輸的基礎上利用發送窗口來限制發送方連續發送分組的個數,是一種連續的ARQ協議
注意:
選擇重傳協議是在回退N步協議的基礎上,只重傳出現差錯的分組,這時接收窗口不再為1,以便先收下失序到達但仍然處於接收窗口中的分組,等到所缺分組收齊後再一並送交上層,這就是選擇重傳協議。
注意:
5. 乙太網的工作原理是什麼
【乙太網工作原理】
乙太網採用共享信道的方法,即多台主機共同一個信道進行數據傳輸。為了解決多個計算機的信道徵用問題,乙太網採用IEEE802.3標准規定的CSMA/CD(載波監聽多路訪問/沖突檢測)協議,它是控制多個用戶共用一條信道的協議。 CSMA/CD的工作原理如下:
(1)載波監聽(先聽後發) 使用CSMA/CD協議時,匯流排上各個節點都在監聽匯流排,即檢測匯流排上是否有別的節點發送數據。如果發現匯流排是空閑的,既沒有檢測到有信號正在傳送,即可立即發送數據;如果監聽到匯流排忙,即檢測到匯流排上有數據正在傳送,這時節點要持續等待直到監聽到匯流排空閑時才能將數據發送出去,或等待一個隨機時間,再從新監聽匯流排,一直到宗賢空現在發送數據。載波監聽也稱作先聽後發。
(2)沖突檢測 當兩個或兩個以上的節點同時監聽到匯流排空閑,開始發送數據時,就會發生碰撞沖突;傳輸延遲可能會使第一個節點發送的數據還沒有到達目標節點時,另一個要發送的數據的節點就已經監聽到匯流排空閑,並開始發送數據,這也會帶至沖突的產生。當兩個幀發生沖突時,兩個傳輸的幀就會被破壞,被損壞幀繼續傳輸毫無意義,而且信道無法被其他站點使用,對於有限的信道來講,這是很大的浪費。如果每個發送節點邊發送邊監聽,並在監聽到沖突之後立即停止發送,就可以提高信道的利用率。當節點檢測到縱向上發生沖突時,就立即取消傳輸數據,隨後發送一個短的干擾信,一較強沖突信號,告訴網路上的所有的節點,匯流排已經發生了沖突。在阻塞信號發送後,等待一個隨機事件,然後再將要發的數據發送一次。如果還有沖突,則重復監聽、等待和重傳操作。圖6-30顯示了採用CSMA/CD發送數據的工作流程。 CSMA/CD採用用戶訪問匯流排時間不確定的隨機競爭方式,有結構簡單、輕負載時時延小等特點,但當網路通信附在增大時,由於沖突增多,網路吞吐率下降、傳輸演示增長,網路性能會明顯下降。 從以上分析可以看出,乙太網的工作方式就像沒有主持人的座談會中,所有的參會者都通過一個共同的戒指來嗎相互交談。每個參加會議的人在講話錢,都禮貌的等到別人把話講完。如果兩個客人同時開始講話,那麼他們都停下來,分別隨即等待一段時間在開始講話,這時,如果兩個客人等待的時間不同,沖突就不會出現、如果講話超過了一次以上,將採用退避指數加強等待的時間。
【參考文獻】:http://wenku..com/view/2bc7750f79563c1ec5da7187.html
6. 如何理解eth-trunk
Eth-Trunk介面是一種可以動態創建的介面,該類型介面可以綁定若干物理的乙太網介面作為一個邏輯介面使用,實現增加帶寬提高靠性的目的。
Trunk優勢於:
1、通Trunk介面實現負載擔Eth-Trunk介面內實現流量負載擔。
2、某員介面連接物理鏈路現故障流量切換其用鏈路提高整Trunk鏈路靠性。
3、 Trunk介面總帶寬各員介面帶寬。
(6)eth鏈路層原理擴展閱讀:
Trunk具體應用
1、Trunk功能用於交換機與伺服器之間的相聯,為伺服器提供獨享的高帶寬。
2、Trunk功能用於交換機之間的級聯,為交換機之間的數據交換提供高帶寬的數據傳輸能力,提高網路速度,突破網路瓶頸,進而大幅提高網路性能(主要應用)。
Trunk功能舉例
——例如:為增加帶寬,提高連接可靠性,某網吧電影伺服器是雙網卡且作了綁定,與中心交換機的23、24埠連接;二層交換機的1、2埠與中心交換機的1、2埠連接,那麼中心交換機需將1、2埠,23、24埠分別做Trunk。說明:這里的二層交換機也需支持Trunk。
參考資料:網路-Trunk鏈路
7. 乙太網的工作原理是什麼
【乙太網工作原理】
乙太網採用共享信道的方法,即多台主機共同一個信道進行數據傳輸。為了解決多個計算機的信道徵用問題,乙太網採用IEEE802.3標准規定的CSMA/CD(載波監聽多路訪問/沖突檢測)協議,它是控制多個用戶共用一條信道的協議。
CSMA/CD的工作原理如下:
(1)載波監聽(先聽後發)
使用CSMA/CD協議時,匯流排上各個節點都在監聽匯流排,即檢測匯流排上是否有別的節點發送數據。如果發現匯流排是空閑的,既沒有檢測到有信號正在傳送,即可立即發送數據;如果監聽到匯流排忙,即檢測到匯流排上有數據正在傳送,這時節點要持續等待直到監聽到匯流排空閑時才能將數據發送出去,或等待一個隨機時間,再從新監聽匯流排,一直到宗賢空現在發送數據。載波監聽也稱作先聽後發。
(2)沖突檢測
當兩個或兩個以上的節點同時監聽到匯流排空閑,開始發送數據時,就會發生碰撞沖突;傳輸延遲可能會使第一個節點發送的數據還沒有到達目標節點時,另一個要發送的數據的節點就已經監聽到匯流排空閑,並開始發送數據,這也會帶至沖突的產生。當兩個幀發生沖突時,兩個傳輸的幀就會被破壞,被損壞幀繼續傳輸毫無意義,而且信道無法被其他站點使用,對於有限的信道來講,這是很大的浪費。如果每個發送節點邊發送邊監聽,並在監聽到沖突之後立即停止發送,就可以提高信道的利用率。當節點檢測到縱向上發生沖突時,就立即取消傳輸數據,隨後發送一個短的干擾信,一較強沖突信號,告訴網路上的所有的節點,匯流排已經發生了沖突。在阻塞信號發送後,等待一個隨機事件,然後再將要發的數據發送一次。如果還有沖突,則重復監聽、等待和重傳操作。圖6-30顯示了採用CSMA/CD發送數據的工作流程。
CSMA/CD採用用戶訪問匯流排時間不確定的隨機競爭方式,有結構簡單、輕負載時時延小等特點,但當網路通信附在增大時,由於沖突增多,網路吞吐率下降、傳輸演示增長,網路性能會明顯下降。
從以上分析可以看出,乙太網的工作方式就像沒有主持人的座談會中,所有的參會者都通過一個共同的戒指來嗎相互交談。每個參加會議的人在講話錢,都禮貌的等到別人把話講完。如果兩個客人同時開始講話,那麼他們都停下來,分別隨即等待一段時間在開始講話,這時,如果兩個客人等待的時間不同,沖突就不會出現、如果講話超過了一次以上,將採用退避指數加強等待的時間。
【參考文獻】:http://wenku..com/view/2bc7750f79563c1ec5da7187.html
8. 數據鏈路層的封裝和解封裝的原理
其實數據鏈路層是把網路層的數據加上頭和尾形成幀再交付給物理層。這就是封裝。
之所以要加上頭和尾是因為物理層只管電信號,必須要有一個特殊的電信號告訴物理層這是一個幀的開始和結尾。
一般頭和尾的電信號是連續的10101010這樣的形式,當物理層接收到信號後,知道這是一個幀來了,經過模數轉換後交付給數據鏈路層,數據鏈路層剝離頭和尾把數據交付給上面的網路層,這就是解封裝的過程。
其實網路的七層結構基本上都是封裝和解封裝的過程,上層數據下來的時候就給他加特定的頭,相當於裝了個信封,就這樣一層層的裝下來。下層的數據送到上層就一層層的剝離頭(信封),直到最後沒有信封得到最終的數據為止。
9. ethtool原理介紹和解決網卡丟包排查思路
之前記錄過處理因為LVS網卡流量負載過高導致軟中斷發生丟包的問題, RPS和RFS網卡多隊列性能調優實踐 ,對一般人來說壓力不大的情況下其實碰見的概率並不高。這次想分享的話題是比較常見伺服器網卡丟包現象排查思路,如果你是想了解點對點的丟包解決思路涉及面可能就比較廣,不妨先參考之前的文章 如何使用MTR診斷網路問題 ,對於Linux常用的網卡丟包分析工具自然是ethtool。
2020年06月22日 - 初稿
閱讀原文 - https://wsgzao.github.io/post/ethtool/
ethtool - utility for controlling network drivers and hardware
ethtool is the standard Linux utility for controlling network drivers and hardware, particularly for wired Ethernet devices. It can be used to:
Most features are dependent on support in the specific driver. See the manual page for full information.
ethtool 用於查看和修改網路設備(尤其是有線乙太網設備)的驅動參數和硬體設置。你可以根據需要更改乙太網卡的參數,包括自動協商、速度、雙工和區域網喚醒等參數。通過對乙太網卡的配置,你的計算機可以通過網路有效地進行通信。該工具提供了許多關於接駁到你的 Linux 系統的乙太網設備的信息。
接收數據包是一個復雜的過程,涉及很多底層的技術細節,但大致需要以下幾個步驟:
NIC 在接收到數據包之後,首先需要將數據同步到內核中,這中間的橋梁是 rx ring buffer 。它是由 NIC 和驅動程序共享的一片區域,事實上, rx ring buffer 存儲的並不是實際的 packet 數據,而是一個描述符,這個描述符指向了它真正的存儲地址,具體流程如下:
當驅動處理速度跟不上網卡收包速度時,驅動來不及分配緩沖區,NIC 接收到的數據包無法及時寫到 sk_buffer ,就會產生堆積,當 NIC 內部緩沖區寫滿後,就會丟棄部分數據,引起丟包。這部分丟包為 rx_fifo_errors ,在 /proc/net/dev 中體現為 fifo 欄位增長,在 ifconfig 中體現為 overruns 指標增長。
這個時候,數據包已經被轉移到了 sk_buffer 中。前文提到,這是驅動程序在內存中分配的一片緩沖區,並且是通過 DMA 寫入的,這種方式不依賴 CPU 直接將數據寫到了內存中,意味著對內核來說,其實並不知道已經有新數據到了內存中。那麼如何讓內核知道有新數據進來了呢?答案就是中斷,通過中斷告訴內核有新數據進來了,並需要進行後續處理。
提到中斷,就涉及到硬中斷和軟中斷,首先需要簡單了解一下它們的區別:
當 NIC 把數據包通過 DMA 復制到內核緩沖區 sk_buffer 後,NIC 立即發起一個硬體中斷。CPU 接收後,首先進入上半部分,網卡中斷對應的中斷處理程序是網卡驅動程序的一部分,之後由它發起軟中斷,進入下半部分,開始消費 sk_buffer 中的數據,交給內核協議棧處理。
通過中斷,能夠快速及時地響應網卡數據請求,但如果數據量大,那麼會產生大量中斷請求,CPU 大部分時間都忙於處理中斷,效率很低。為了解決這個問題,現在的內核及驅動都採用一種叫 NAPI(new API)的方式進行數據處理,其原理可以簡單理解為 中斷 + 輪詢,在數據量大時,一次中斷後通過輪詢接收一定數量包再返回,避免產生多次中斷。
(1) RX errors
表示總的收包的錯誤數量,這包括 too-long-frames 錯誤,Ring Buffer 溢出錯誤,crc 校驗錯誤,幀同步錯誤,fifo overruns 以及 missed pkg 等等。
(2) RX dropped
表示數據包已經進入了 Ring Buffer,但是由於內存不夠等系統原因,導致在拷貝到內存的過程中被丟棄。
(3) RX overruns
表示了 fifo 的 overruns,這是由於 Ring Buffer(aka Driver Queue) 傳輸的 IO 大於 kernel 能夠處理的 IO 導致的,而 Ring Buffer 則是指在發起 IRQ 請求之前的那塊 buffer。很明顯,overruns 的增大意味著數據包沒到 Ring Buffer 就被網卡物理層給丟棄了,而 CPU 無法即使的處理中斷是造成 Ring Buffer 滿的原因之一,上面那台有問題的機器就是因為 interruprs 分布的不均勻(都壓在 core0),沒有做 affinity 而造成的丟包。
(4) RX frame
表示 misaligned 的 frames。
網線上的packet首先被網卡獲取,網卡會檢查packet的CRC校驗,保證完整性,然後將packet頭去掉,得到frame。網卡會檢查MAC包內的目的MAC地址,如果和本網卡的MAC地址不一樣則丟棄(混雜模式除外)。
網卡將frame拷貝到網卡內部的FIFO緩沖區,觸發硬體中斷。(如有ring buffer的網卡,好像frame可以先存在ring buffer里再觸發軟體中斷(下篇文章將詳細解釋Linux中frame的走向),ring buffer是網卡和驅動程序共享,是設備里的內存,但是對操作系統是可見的,因為看到linux內核源碼里網卡驅動程序是使用kcalloc來分配的空間,所以ring buffer一般都有上限,另外這個ring buffer size,表示的應該是能存儲的frame的個數,而不是位元組大小。另外有些系統的 ethtool 命令 並不能改變ring parameters來設置ring buffer的大小,暫時不知道為什麼,可能是驅動不支持。)
網卡驅動程序通過硬中斷處理函數,構建sk_buff,把frame從網卡FIFO拷貝到內存skb中,接下來交給內核處理。(支持napi的網卡應該是直接放在ring buffer,不觸發硬中斷,直接使用軟中斷,拷貝ring buffer里的數據,直接輸送給上層處理,每個網卡在一次軟中斷處理過程能處理weight個frame)
過程中,網卡晶元對frame進行了MAC過濾,以減小系統負荷。(除了混雜模式)
網卡驅動程序將IP包添加14位元組的MAC頭,構成frame(暫無CRC)。Frame(暫無CRC)中含有發送端和接收端的MAC地址,由於是驅動程序創建MAC頭,所以可以隨便輸入地址,也可以進行主機偽裝。
驅動程序將frame(暫無CRC)拷貝到網卡晶元內部的緩沖區,由網卡處理。
網卡晶元將未完全完成的frame(缺CRC)再次封裝為可以發送的packet,也就是添加頭部同步信息和CRC校驗,然後丟到網線上,就完成一個IP報的發送了,所有接到網線上的網卡都可以看到該packet。
產生中斷的每個設備都有一個相應的中斷處理程序,是設備驅動程序的一部分。每個網卡都有一個中斷處理程序,用於通知網卡該中斷已經被接收了,以及把網卡緩沖區的數據包拷貝到內存中。
當網卡接收來自網路的數據包時,需要通知內核數據包到了。網卡立即發出中斷。內核通過執行網卡已注冊的中斷處理函數來做出應答。中斷處理程序開始執行,通知硬體,拷貝最新的網路數據包到內存,然後讀取網卡更多的數據包。
這些都是重要、緊迫而又與硬體相關的工作。內核通常需要快速的拷貝網路數據包到系統內存,因為網卡上接收網路數據包的緩存大小固定,而且相比系統內存也要小得多。所以上述拷貝動作一旦被延遲,必然造成網卡FIFO緩存溢出 - 進入的數據包占滿了網卡的緩存,後續的包只能被丟棄,這也應該就是ifconfig里的overrun的來源。
當網路數據包被拷貝到系統內存後,中斷的任務算是完成了,這時它把控制權交還給被系統中斷前運行的程序。
網卡的內核緩沖區,是在PC內存中,由內核控制,而網卡會有FIFO緩沖區,或者ring buffer,這應該將兩者區分開。FIFO比較小,裡面有數據便會盡量將數據存在內核緩沖中。
網卡中的緩沖區既不屬於內核空間,也不屬於用戶空間。它屬於硬體緩沖,允許網卡與操作系統之間有個緩沖;
內核緩沖區在內核空間,在內存中,用於內核程序,做為讀自或寫往硬體的數據緩沖區;
用戶緩沖區在用戶空間,在內存中,用於用戶程序,做為讀自或寫往硬體的數據緩沖區;
另外,為了加快數據的交互,可以將內核緩沖區映射到用戶空間,這樣,內核程序和用戶程序就可以同時訪問這一區間了。
對於有ring buffer的網卡,ring buffer是由驅動與網卡共享的,所以內核可以直接訪問ring buffer,一般拷貝frames的副本到自己的內核空間進行處理(deliver到上層協議,之後的一個個skb就是按skb的指針傳遞方式傳遞,直到用戶獲得數據,所以,對於ring buffer網卡,大量拷貝發生在frame從ring buffer傳遞到內核控制的計算機內存里)。
網卡工作在數據鏈路層,數據量鏈路層,會做一些校驗,封裝成幀。我們可以查看校驗是否出錯,確定傳輸是否存在問題。然後從軟體層面,是否因為緩沖區太小丟包。
一台機器經常收到丟包的報警,先看看最底層的有沒有問題:
(1) 查看工作模式是否正常
(2) 查看檢驗是否正常
Speed,Duplex,CRC 之類的都沒問題,基本可以排除物理層面的干擾。
Why rx_crc_errors incrementing in the receive counter of ethtool -S output?
Check ethtool -S output and find where are the drops and errors.
Check the numbers corresponding to rx_crc_errors .
顯示了p1p1 的介面類型,連接模式,速率等等信息,以及當前是否連接了網線(如果是網線Supported ports 就是TP,如果是光纖則顯示Fiber),這里例舉下3個重要關鍵詞
Supported ports: [ FIBRE ]
Speed: 10000Mb/s
Link detected: yes
ethtool
Counters Troubleshooting for Linux Driver
Why do I see rx_crc_errors in ethtool output?
ping請求錯誤分析
ifconfig 命令詳解
ethtool 命令詳解
ethtool 解決網卡丟包嚴重和網卡原理
10. 乙太網鏈路層採用什麼協議,其基本原理是什麼。為什麼採用這種協議
首先數據鏈路層是ISO模型的其中一層。。是實現幾個功能的。。不是一個協議構成的。
數據鏈路層的主要協議有:
(1)Point-to-Point Protocal; PPP點到點
(2) Ethernet; 乙太網
(3) High-Level Data Link Control Protocal;HDLC高級鏈路控制協議
(4) Frame Relay; 幀中繼
(5) Asynchronous Transfer Mode;ATM
根據不同的數據需求要採用不同的協議。。