以太網數據鏈路層和物理層工作模式一般為全雙工或者半雙工。
在半雙工模式下,鏈路層能夠通過CSMA/CD(載波監聽多點接入/碰撞檢測)技術在共享以太網中進行數據傳輸。
它的工作原理是: 發送數據前 先偵聽信道是否空閑 ,若空閑,則立即發送數據。若信道忙碌,則等待一段時間至信道中的信息傳輸結束后再發送數據;若在上一段信息發送結束后,同時有兩個或兩個以上的節點都提出發送請求,則判定為沖突。若偵聽到沖突,則立即停止發送數據,等待一段隨機時間,再重新嘗試。其原理簡單總結為:先聽后發,邊發邊聽,沖突停發,隨機延遲后重發。
一個幀以7個字節的前導碼和1個字節的幀開始符作為幀的開始。在線路上幀的這部分的位模式是10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011。由於在傳輸一個字節時最不重要的位最先傳輸(即低位最先傳輸),因此其相應的16進制表示為0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xD5。10/100M 網卡(MII PHY)一次傳輸4位(一個半字節)。因此前導符會成為7組0x5+0x5,而幀開始符成為0x5+0xD。1000M網卡(GMII)一次傳輸8位,而10Gbit/s(XGMII) PHY芯片一次傳輸32位。 注意當以octet描述時,先傳輸7個01010101然后傳輸11010101。由於8位數據的低4位先發送,所以先發送幀開始符的0101,之后發送1101。以太網傳輸數據時先傳輸高字節,傳輸字節時先傳輸低位。比特流進入物理芯片后,在10/100M是通過MII口輸出低半字在前,高半字在后。
混雜模式(Promiscuous Mode)是指一台機器能夠接收所有經過它的數據流,而不論其目的地址是否是他。
是相對於通常模式(又稱“非混雜模式”)而言的。這被網絡管理員使用來診斷網絡問題,但是也被無認證的想偷聽網絡通信(其可能包括密碼和其它敏感的信息)的人利用。一個非路由選擇節點在混雜模式下一般僅能夠在相同的沖突域(對以太網和無線局域網)內監控通信到和來自其它節點或環(對令牌環或FDDI),其是為什么網絡交換被用於對抗惡意的混雜模式。
混雜模式就是接收所有經過網卡的數據包,包括不是發給本機的包。默認情況下網卡只把發給本機的包(包括廣播包)傳遞給上層程序,其它的包一律丟棄。
簡單的講,混雜模式就是指網卡能接受所有通過它的數據流,不管是什么格式,什么地址的。事實上,計算機收到數據包后,由網絡層進行判斷,
確定是遞交上層(傳輸層),還是丟棄,還是遞交下層(數據鏈路層、MAC子層)轉發。
通常在鏈路層,都會對接收的MAC地址進行保護加密。----哈希算法
哈希算法(HASH)就是把任意長度的輸入(又叫做預映射,pre-image)
通過散列算法,變換成固定長度的輸出,該輸出就是散列值
幀間隙:
對於百兆以太網,兩個幀之間的間隙應大於9600ns。
發送沖突:
如果沖突在前導發送期間
被檢測到,它們發送完全部64位並額外發送32位的擁塞序列。如果檢測到沖突時前導已被發送完,站點同樣再發送32位的擁塞序列這兩種情況都被稱為窗口內沖突。
如果發現沖突且正在發送數據或者FCS,,而且沒有超過沖突時間窗,那么發送狀態馬上進入Jam狀態發送擁塞碼,之后經過回退算法以及幀間隙回到空閑,並根據重試計數器的值決定是否重新發送剛才的數據幀。
一旦發生沖突
發生下列情況之一,發送過程將終止
1,過延遲(excessive deferral) 發送MAC在超過兩個最大以太幀的時間內仍無發送機會
2,遲沖突(late collision) 發送完512bit后才檢測沖突
3,過沖突(excessive collision)檢測到沖突超過15次
4,下溢出(under-run)主機無法以足夠快的速度提供發送數據
5,幀過長(excessive lenght)分組長度超過1518字節
一旦沖突發生,物理層會監測到干擾信號,於是沖突監測信號被置1。在半雙工模式下,發送模塊的接入管理模塊響應這一信號,沖突處理機制開始執行。首先,該模塊會發送一系列被稱為沖突強化的信息,確保其他的站點也能得知沖突的發生,強化沖突過后, 發送端終止當前發送,並等待一個隨機的時間重新嘗試發送。重新發送同樣也有可能遭遇到沖突, 最終的結果有兩個,一是發送成功,二是達到了重傳的數量上限,發送失敗。
inter packet gap
報文之間間隔 96位時間
如果網絡當前處於忙狀態,包間間隔站點將推遲發送直到現行活動停止,並再加上一段預定的寂靜期,這段非活躍的寂靜期稱為包間間隔IPG將每一數據包分隔開來以便所有站點都可以探測到不活躍的載波偵聽狀態一旦過了IPG,站點就被允許對截止進行訪問並開始發送數據。
由於介質是共享的,它們的發送將因相互干擾而變得混亂,從而產生沖突。所有站點都具有沖突檢測的能力。並且在檢測到沖突后發出一個擁塞序列。如果沖突在前導發送期間被檢測到,它們發送完全部64位並額外發送32位的擁塞序列。如果檢測到沖突時前導已被發送完,站點同樣再發送32位的擁塞序列這兩種情況都被稱為窗口內沖突擁塞序列用於保證網絡;兩端的站點都能檢測到沖突的發生丟棄發送前允許有15次重發機會(共16次重發)。
ColWindow,沖突窗口。
當某個站點開始發送數據時,僅在發送開始的一段時間內可能遭遇到沖突,這個時間段被稱為沖突窗口(collision window)。這是由於信號在媒體上傳播也需要時間,沖突窗口就是發送站點的信號傳遍沖突域所需的時間。這是一個很重要的參數,以太網取傳輸512bit數據所用時間為爭用期的長度。需要指出,以太網的端到端時延實際上是小於爭用期的一半的,爭用期被規定為傳輸512bit所用時間,不僅是考慮了以太網的端到端時延,而且還包括其它的許多因素,如可能存在的轉發器所增加的時延,以及強化沖突的干擾信號的持續時間等。一般以太網的沖突多為發生在沖突窗口內。
退避算法以及重傳
以太網使用截斷二進制指數回退算法來解決沖突后的重發問題。截斷二進制指數回退算法很簡單,
就是讓發生沖突的站點在停止發送數據后,不是立刻重發,而是推遲一個隨機的時間。這樣就使得重發時再次發生沖突的概率減小。具體的算法是:
(1)確定單位回退時間,通常是取沖突窗口的值,即傳輸512bit數據所需時間,稱為時槽。
(2)定義參數k,它等於重傳次數,但不超過10,因此k=min (n, 10)。
(3)取r滿足0≤r <2 k。重傳的時延就是r倍的時槽。
(4)當重傳達到16次仍不能成功時(這表明同時打算發送數據的站點過多,導致連續發生沖突),則丟棄該幀,並向上層協議報告。
使用以上的回退算法可使重傳需要推遲的平均時間隨重傳次數增加而增加,這也被稱為動態退避,有利於整個系統的穩定。
版權所有權歸卿萃科技 杭州FPGA 事業部,轉載請注明出處
作者:杭州卿萃科技ALIFPGA
原文地址:杭州卿萃科技FPGA極客空間 微信公眾號
掃描二維碼關注杭州卿萃科技FPGA極客空間