文章目錄
- 以太網 MAC 幀格式
- 以太網幀間隔
- 參考
本文為筆者學習以太網對網上資料
歸納整理所做的筆記
,文末均附有參考鏈接,如侵權,請聯系刪除。
以太網 MAC 幀格式
以太網技術的正式標準是 IEEE 802.3
,它規定了以太網傳輸數據的幀結構,我們可以把以太網 MAC層理解成高速公路,我們必須遵循它的規則才能在上面通行,以太網 MAC 層幀格式如下圖所示
以太網傳輸數據時按照上面的順序從頭到尾依次被發送和接收,我們下面進一步解釋各個區域
- 前導碼(Preamble):為了實現底層數據的正確闡述,物理層使用 7 個字節同步碼(0 和 1 交替(55- 55-55-55-55-55-55))實現數據的同步。
- 幀起始界定符(SFD,Start Frame Delimiter):使用 1 個字節的 SFD(固定值為 0xd5)來表示一幀的開始,即后面緊跟著傳輸的就是以太網的幀頭。
- 目的 MAC 地址:即接收端物理 MAC 地址,占用 6 個字節。MAC 地址從應用上可分為單播地址、組播地址和廣播地址。單播地址:第一個字節的最低位為 0,比如 00-00-00-11-11-11,一般用于標志唯一的設備;組播地址:第一個字節的最低位為 1,比如 01-00-00-11-11-11,一般用于標志同屬一組的多個設備;廣播地址:所有 48bit 全為 1,即 FF-FF-FF-FF-FF-FF,它用于標志同一網段中的所有設備。
- 源 MAC 地址:即發送端物理 MAC 地址,占用 6 個字節。
- 長度/類型:上圖中的長度/類型具有兩個意義,
- 當這兩個字節的值小于 1536(十六進制為 0x0600)時,代表該以太網中數據段的長度;
- 如果這兩個字節的值大于 1536,則表示該以太網中的數據屬于哪個上層協議,
- 例如 0x0800 代表 IP 協議(網際協議)
- 0x0806 代表 ARP 協議(地址解析協議)等。
- 數據:以太網中的數據段長度最小 46 個字節,最大 1500 個字節。最大值 1500 稱為以太網的最大傳輸單元(MTU,Maximum Transmission Unit),之所以限制最大傳輸單元是因為在多個計算機的數據幀排隊等待傳輸時,如果某個數據幀太大的話,那么其它數據幀等待的時間就會加長,導致體驗變差,這就像一個十字路口的紅綠燈,你可以讓綠燈持續亮一小時,但是等紅燈的人一定不愿意的。另外還要考慮網絡I/O 控制器緩存區資源以及網絡最大的承載能力等因素,因此最大傳輸單元是由各種綜合因素決定的。為了避免增加額外的配置,通常以太網的有效數據字段小于 1500 個字節。
- 填充域,由于協議要求整個 MAC 數據包的長度至少為 64 字節(接收到的數據包如果少于 64 字節會被認為發生沖突,數據包被自動丟棄),當數據段的字節少于 46 字節時,在填充域會自動填上無效數據,以使數據包符合長度要求。
- 幀檢驗序列(FCS,Frame Check Sequence):為了確保數據的正確傳輸,在數據的尾部加入了 4 個字節的循環冗余校驗碼(CRC 校驗)來檢測數據是否傳輸錯誤。CRC 數據校驗從以太網幀頭開始即不包含前導碼和幀起始界定符。通用的 CRC 標準有 CRC-8、CRC-16、CRC-32、CRC-CCIT,其中在網絡通信系統中應用最廣泛的是 CRC-32 標準。
以太網幀間隔
以太網相鄰兩幀之間的時間間隔,即幀間隙(IFG,InterpacketGap)。幀間隙的時間就是網絡設備和組件在接收一幀之后,需要短暫的時間來恢復并為接收下一幀做準備的時間,IFG 的最小值是 96 bit time,即在媒介中發送 96 位原始數據所需要的時間,在不同媒介中 IFG 的最小值是不一樣的。不管 10M/100M/1000M 的以太網,兩幀之間最少要有 96bit time,IFG 的最少間隔時間
計算方法如下:
- 10Mbit/s 最小時間為:96*100ns = 9600ns;
- 100Mbit/s 最小時間為:96*10ns = 960ns;
- 1000Mbit/s 最小時間為:96*1ns = 96ns。
參考
- https://blog.csdn.net/yindq1220/article/details/138027595
- 正點原子《開拓者之FPGA開發指南V3.2》
- LwIP應用開發實戰指南—基于STM32