基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-MAC幀格式介紹 (qq.com)
一.前言
在以太網(wǎng)驅(qū)動,應(yīng)用,編寫調(diào)試等開發(fā)時,往往會抓包分析,此時有必要了解MAC幀的格式以便進(jìn)行分析,我們參考標(biāo)注文檔對其進(jìn)行一個整理備忘。
《802.3-2000_part1.pdf》的3. Media access control frame structure規(guī)定了使用CSMA/CD MAC的數(shù)據(jù)通信系統(tǒng)的兩種幀格式:
基本MAC幀格式
對基本MAC幀格式的擴展,Tagged MAC幀,即攜帶QTag前綴的幀。
二.基本MAC幀格式
基本MAC幀格式如下,包括9個部分
其中
OCTETS表示8位,
1.字節(jié)的低位先發(fā)送,除了CRC31校驗域是高位先發(fā)送按照bit流x31, x30,…, x1, x0發(fā)送,即x0是最后發(fā)送字節(jié)的最后發(fā)送位。
2.多字節(jié)數(shù)據(jù)按照大端解析,高字節(jié)在前先發(fā)送。
各部分詳細(xì)介紹如下:
序號 | 字段 | 大小(字節(jié)) | 功能 | 說明 |
1 | PREAMBLE | 7 | 前導(dǎo)字段 |
用于PLS (PHYSICAL LAYER SIGNALING)實現(xiàn)和接收幀保持同步(前導(dǎo)和SFD發(fā)送時有沖突也會發(fā)送完全部前導(dǎo)和SFD) 10101010 10101010 10101010 10101010 10101010 10101010 10101010即0x55序列 |
2 | SFD | 1 | 幀開始定界符 | 10101011即0xD5 |
3 |
DESTINATION ADDRESS (DA) |
6 | 目的地址字段 |
目的站的地址。它可以是單播或多播(包括廣播)地址。 全1是廣播地址。 見后面MAC地址部分說明。 |
4 |
SOURCE ADDRESS (SA) |
6 | 源地址字段 | 發(fā)送幀站點的地址。CSMA/CD MAC子層不解釋源地址字段。 |
5 | LENGTH/TYPE | 2 | 長度/類型字段 |
如果小于等于maxValidFrame=maxUntaggedFrameSize(1518)-18=1500則表示MAC CLIENT DATA區(qū)域長度 如果大于等于0x0600則表示幀類型。 |
6 | MAC CLIENT DATA | / | 數(shù)據(jù) | MAC+DATA范圍 46~1500字節(jié) |
7 | PAD | / | 填充 | 填充,使得DESTINATION ADDRESS~FCS滿足最小幀長64字節(jié)。 |
8 |
FRAME CHECK SEQUENCE (FCS) |
4 |
CRC32校驗值,校驗DA到PAD區(qū)域之間的數(shù)據(jù)。生成多項式。 G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1 注意FCS是x31最先發(fā),x0最后發(fā). |
|
9 | EXTENSION | / | 擴展域 |
0~(slotTime–minFrameSize) bits長 1000 Mb/s 半雙工才有 |
2.1 MAC地址
48位MAC地址的定義如下
位域 | 功能 | 說明 | |
1 | I/G | 地址類型 |
LSB即最先發(fā)出的bit 區(qū)分是單播還是組播地址: 0:即I individual 為單播地址, 1:即G group 為組播地址。 注意本位只針對目的地址,對于源地址始終是0. |
2 | U/L |
區(qū)分本地或全局地址: 0:即U universal為全局地址, 1:即L locally為本地地址。 廣播地址該位是1. |
|
3 | 46-BIT ADDRESSS |
地址類型:
1 |
Individual Address 單播地址 |
地址和網(wǎng)絡(luò)中特定的一個站點對應(yīng)。 | |
2 |
Group Address 組播地址 |
Multicast-Group Address多播地址 | 通過更高級別的約定與一組邏輯相關(guān)的站相關(guān)聯(lián)的地址。 |
Broadcast Address廣播地址 |
一種可區(qū)分的預(yù)定義多播地址,它總是表示給定LAN上所有站點的集合。 全1是廣播地址。 |
2.2無效幀
滿足以下一個以上的條件
1.幀長度與長度/類型字段中指定的長度值不一致。如果長度/類型字段表示類型值,則假定幀長度與該字段一致,在此基礎(chǔ)上不應(yīng)視為無效幀。
2.長度不是八位的整數(shù)倍。
3.CRC32校驗錯誤。
4.無效MAC幀的內(nèi)容不得傳遞給LLC或MAC控制子層。無效MAC幀的出現(xiàn)可以被傳送到網(wǎng)絡(luò)管理。
三.Tagged MAC幀格式
帶標(biāo)簽的MAC幀是對普通MAC幀的擴展,在原來的基礎(chǔ)上SA后添加了4字節(jié)的Qtag。見標(biāo)準(zhǔn)IEEE P802.1Q
序號 | 字段 | 大小(字節(jié)) | 功能 | 說明 |
1 | PREAMBLE | 7 | 前導(dǎo)字段 | 同基本MAC幀 |
2 | SFD | 1 | 幀開始定界符 | 同基本MAC幀 |
3 | DESTINATION ADDRESS | 6 | 目的地址字段 | 同基本MAC幀 |
4 | SOURCE ADDRESS | 6 | 源地址字段 | 同基本MAC幀 |
5 | LENGTH/TYPE = 802.1QTagType | 2 |
QTag長度/類型 固定為0x8100表示802.1Q Tag Protocol Type。 |
|
6 | TAG CONTROL INFORMATION | 2 |
QTag控制信息 a) A 3-bit User Priority field, b) A Canonical Format Indicator (CFI), and c) A 12-bit VLAN Identifier. |
|
7 | LENGTH/TYPE | 2 | 長度/類型字段 |
插入QTag之前的MAC幀的原始長度/類型。 同基本MAC幀 |
8 | MAC CLIENT DATA | / | 數(shù)據(jù) | 同基本MAC幀 |
9 | PAD | / | 填充 |
同基本MAC幀 對于填充,最小64字節(jié)的幀長可以包含4字節(jié)的TAG也可以不包含,不包含TAG則實際幀長是64字節(jié)了。 |
10 | FRAME CHECK SEQUENCE | 4 | 同基本MAC幀 | |
11 | EXTENSION | / | 擴展域 | 同基本MAC幀 |
四.wireshark中的幀解析
比如如下是一個arp請求包,wireshark可以解析其不同字段,比如左下側(cè)點擊Type右邊數(shù)據(jù)0806即高亮。Wireshark抓包中不顯示前導(dǎo),幀開始符和FCS,因為前二者是固定的,F(xiàn)CS錯誤則收不到,MAC層作為無效幀就丟棄了。
五.總結(jié)
調(diào)試以太網(wǎng),MAC幀的格式是必須要了解的,使用wireshark可以方便解析,但是有時我們是直接驅(qū)動代碼中打印原始數(shù)據(jù),此時則需要手動去解析。
審核編輯 黃宇
-
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5419瀏覽量
171594 -
驅(qū)動
+關(guān)注
關(guān)注
12文章
1838瀏覽量
85262 -
Mac
+關(guān)注
關(guān)注
0文章
1104瀏覽量
51458
發(fā)布評論請先 登錄
相關(guān)推薦
評論