以太网简介
以太网(Ethernet)是互联网技术的一种,由于它是在组网技术中占的比例最高,很多人直接把以太网理解为互联网。
以太网是指遵守IEEE802.3标准组成的局域网,由IEEE 802.3标准规定的主要是位于参考模型的物理层(PHY)和数据链路层中的介质访问控制子层(MAC)。
PHY层
在物理层,由IEEE 802.3标准规定了以太网使用的传输介质、传输速度、数据编码方式和冲突检测机制,物理层一般是通过一个PHY芯片实现其功能的。
1 传输介质
传输介质包括同轴电缆、双绞线(水晶头网线是一种双绞线)、光纤。根据不同的传输速度和距离要求,基于这三类介质的信号线又衍生出很多不同的种类。最常用的是“五类线”适用于100BASE-T和10BASE-T的网络,他们的网络速率分别为100Mbps和10Mbps。
2 编码
为了让接收方在没有外部时钟参考的情况也能确定每一位的起始、结束和中间位置,在传输信号时不直接采用二进制编码。
在10BASE-T的传输方式中采用曼彻斯特编码,在100BASE-T中则采用4B/5B编码。
3 CSMA/CD冲突检测
以太网具备CSMA/CD冲突检测机制,如果多个节点同时利用同一条总线发送数据,则会产生冲突,若存在冲突则停止发送数据,随机等待一段时间再重传。
3.1 MAC子层
MAC的功能
- MAC子层是属于数据链路层的下半部分,主要负责与物理层进行数据交接,如是否可以发送数据,发送的数据是否正确,对数据流进行控制等。
- 自动对来自上层的数据包加上一些控制信号,交给物理层。
- 接收方得到正常数据时,自动去除MAC控制信号,把该数据包交给上层。
MAC数据包
IEEE对以太网上传输的数据包格式也进行了统一规定,如下图所示:
- 前导字段:也称报头,是一段方波,用于使收发节点的时钟同步;
- 帧起始定界符(SFD):用于区分前导段与数据段的,内容为0xd5;
- MAC地址:MAC地址由48位数字组成,它是网卡的物理地址,在以太网传输的最底层,就是根据MAC地址来收发数据的;
- 数据包类型:本区域可以用来描述本MAC数据包是属于TCP/IP协议层的IP包、ARP包还是SNMP包,也可以用来描述本MAC数据包数据段的长度;
- 数据段:数据段是MAC包的核心内容,它包含的数据来自MAC的上层;
- 填充域:当数据段的字节少于46字节时,在填充域会自动填上无效数据,以使数据包符合长度要求。
- 检验和域:MAC数据包的尾部是校验和域,保存了CRC校验序列,用于检错。
以上是标准的MAC数据包,IEEE 802.3同时还规定了扩展的MAC数据包,它是在标准的 MAC 数据包的 SA 和数据包类型之间添加 4 个字节的 QTag 前缀字段,用于获取标志的 MAC 帧。
STM32的ETH外设
stm32系列控制器内部集成了一个以太网外设,实际是一个通过DMA控制器进行介质访问控制(MAC),功能是实现MAC层的任务,该控制器可以通过ETH外设按照 IEEE 802.3-2002 标准发送和接收 MAC 数据包。
ETH 支持两个工业标准接口介质独立接口(MII)和简化介质独立接口(RMII)用于与外部 PHY 芯片连接。
MII和RMII接口用于MAC数据包传输,ETH还集成了站管理接口(SMI)接口专门用于与外部PHY通信,用于访问PHY芯片寄存器。
ETH系统功能框图如下图所示:
MII和RMII接口
介质独立接口(MII)用于理解MAC控制器和PHY芯片,提供数据传输路径。MII需要16根通信线,RMII只需7根通信,在功能上是相同的。如下图所示:
MII接口
RMII接口:
PHY:LAN8720A
LAN8720A是SMSC公司设计的一个体积小、功耗低、全能型10/100Mbps的以太网物理层收发器。
LAN8720A 总共只有 24Pin,仅支持 RMII 接口。由它组成的网络结构见下图。