为何以太网帧长计算没有覆盖前导码?
帧长,即帧的长度(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,整个春游结束。。。
