什麼樣的MAC地址是合法的?
wifi地址第1個字節的低2bit必需爲0,這兩個有特殊含義。
比如:
- 00-12-22-33-44-78(這個是合法的)
- 03-12-22-33-44-78(下面這些都是不合法的)
- 01-12-22-33-44-78
- 02-12-22-33-44-78
- 0e-12-22-33-44-78
MAC地址低2bit有什麼特殊含義?
MAC地址的第1個字節的8個BIT從低位到高位分別用BIT1~BIT8表示。
BIT2:
0代表 Universal administered
1代表 locally administered
所有的廠商這個BIT都是0。
BIT1:
0代表是單播MAC。接收方的MAC與這一幀的目的MAC一樣的話,就會接收這一幀;否則會丟掉。
1代表是多播MAC。接收方會檢查自己允許接收的多播MAC列表,如果接收的這一幀的目的MAC在列表中才接收,否則就丟掉。
不寫MAC地址會怎麼樣?
如果wifi用的是模組,則MAC地址不用寫,模組裏面有。如果不是模組,不在NVRAM寫MAC地址的話,手機會自動生成一個隨機的合法的MAC地址。但是這樣會有nvram warning(如下圖所示)。Mtk也不會拿掉這個warning,因爲這樣不合規範。
爲什麼會有NVRAM WARNING:Err = 0x10?
原因是沒有寫合法的MAC地址。這個warning ,是mtk提示您寫合法的mac地址。因爲不寫mac地址,用個隨機數代替,這個是不符合規範的。
MAC地址一樣會有什麼風險?
mac地址一樣會導致wifi無法正常工作。
wifi收到的包都是根據mac地址來發的。打個比方就是,當郵遞員拿到一封寄給76號的信時,他發現這條街所有門牌號都是76號,這個時候就有問題了。可能這封信就沒有發到應該發到的地方。引用到wifi上來就是會出現莫名其妙的斷線,死機,等等問題。
mac地址要申請就是爲了管理,讓廠家和廠家之間不會出現mac地址不惟一的情況。隨機寫mac地址的話,不能保證是惟一的,但發生mac地址一樣的概率是比較小的,畢竟有6字節。但要注意的是第一字節的最後2bit一定要是0,這兩位有特殊含義。