為何以太網幀長計算沒有覆蓋前導碼?
幀長,即幀的長度(Frame Length),是指鏈路層協議數據單元(MPDU)的長度,單位為字節byte。而前導碼(Preamble)屬于物理層協議數據單元(PPDU),并不屬于MPDU的管轄勢力范圍,故不一并計算。
什么是鏈路層協議數據單元(MPDU)?
MPDU是MAC
Protocol Data Unit英文首字母縮寫,這里的特指Ethernet鏈路層(二層)。這個鏈路層又分為兩個部分:
- LLC (Logical Link Control),這個是與上層協議(ARP、IP、IPv6、802.1Q)的接口。
- MAC(Media Access
- Control),這個是與底層協議(Ethernet物理層)的接口。
鏈路層LLC接到電話,一個上層客戶(IP)要去春游。LLC專業稱呼客戶什么?
甲方粑粑?
No,No。而是叫鏈路層服務單元MSDU(MAC Service Data Unit)。
甲方粑粑通常會在電話里告知,自己希望乘某種交通工具,比如:
- Ethernet II 單廂小汽車
- 802.3 + 802.2 兩廂小汽車
- 802.3 + 802.2 + SNAP 三廂小汽車
于是LLC將上層客戶MSDU,放入客戶要求的小汽車內。LLC就給同部門的MAC打電話,MAC層配合LLC將小汽車載著的客戶,添加上所有必要的汽車頭、車尾校驗(FCS)。車頭+ 客戶(MSDU) + 車尾整體就是一個幀(Frame)。這是通俗的叫法,專業的叫法為MPDU。
MAC忙完之后,就要給跨部門的同事,物理層打電話派活了,并把MPDU小汽車開到了物理層。。
物理層協議數據單元(PPDU)
在物理層眼里,MPDU就不再叫MPDU了,而是叫PSDU(PHY Service Data Unit),雖然MPDU和PSDU是一回事,但是在物理層部門,只會叫PSDU,意思為物理層的服務單元。
物理層要做的,需要在PSDU這輛小汽車前加上Preamble,由于Preamble碼在周期性重復同樣一個波形(010101010101...),非常方便接收方通過相干檢測(automatic correlation)來完成時間同步(幀從何處開始),相位同步(信號載波、本地信號發生器載波)。相位同步了,也意味著信號載波、本地信號發生器的載波頻率同步。有一個閉環管理的自動相位跟蹤電路(鎖相環PLL),會一直跟蹤(Track)雙方相位差,并予以補償。使得相位差控制在極小的范圍內,避免相位差過大造成誤碼。
有了前置Preamble小汽車,就上路了。很快到了目的地,接收方通過Preamble重復波形,檢測到自相關系數> 設定閾值,意味著一輛小汽車極大概率incoming。于是接收方物理層打雞血一樣拉起了警鈴,所有電路立馬從午睡中爬起來干活。
Preamble + SFD的作用僅僅為了同步、以及警示接收方的物理層Preamble在哪里結束,真正的小汽車(Frame)從哪里開始,一旦這兩個使命完成,物理層就把Preamble + SFD給扔掉了。
物理層真正接收的數據是PSDU,并給MAC層,MAC層檢查FCS,沒有問題之后給LLC,LLC檢查客戶到底是誰,打客戶電話來取走MSDU,整個春游結束。。。