简介
以太网是一种产生较早,使用相当广泛的局域网技术,局域网就是一个区域的网络互联,可以使办公室也可以是学校等等,大小规模不一。包括标准以太网(10 Mbit/s)、快速以太网(100 Mbit/s)、千兆以太网(1000 Mbit/s)和万兆以太网(10 Gbit/s)等。这里单位是bit,换成byte百兆网能达到的最大网速为12.5MByte/s,千兆网能达到的最大网速为 125MByte/s。
网络模型
只考虑4层模型:
- 应用层:FTP、HTTP、SMTP
- 传输层:TCP、UDP
- 网络层:IP、ICMP、ARP/RARP
- 网络接口层:MAC
架构
此次学习考虑的架构图如下,用户数据在经过传输层时,传输层对用户数据进行封装,在用户数据的基础上添加了一个 TCP/UDP (这里用UDP协议)首部数据,此时数据包变成了 UDP 段;当它经过网络层时,网络层对 UDP 段进行封装,UDP 段变为IP 数据报;当它经过网络接口层时,网络接口层对 IP 数据报进行封装,此时 IP 数据报变成了完整的以太网帧。打包好数据帧后通过MII/GMII/RGMII等接口经过PHY芯片,通过网口传出。到达目的主机后每层协议再剥掉相应的首部数据,将用户数据解析出来处理。
其中PHY芯片作用:PHY在发送数据的时候,收到MAC过来的数据(对PHY来说没有帧的概念),然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去。收数据时的流程反之。PHY还有个重要的功能就是可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。
数据帧格式
总体数据帧大致如下:
1、MAC层
1.1 目的MAC:
目的MAC地址从应用上可分为单播地址、组播地址和广播地址。
- 单播:第一个字节的最低位为0,比如00-00-00-11-11-11,用于标志唯一的设备;
- 组播:第一个字节的最低位为1,比如01-00-00-11-11-11,用于标志同属一组的多个设备;
- 广播:所有bit全为1,即FF-FF-FF-FF-FF-FF,它用于标志同一网段中的所有设备。
1.2 类型:
- 数值小于1536:这个字段表示长度
- 数值大于1536:0X0800-IP 0X0806-ARP
2、IP层
- 版 本:4bit,0100-IPV4 0110-IPV6。
- 首部长度:4bit,表示IP首部一共有多少个32位(4字节),没有可选字段时数值固定为5
- 服务类型:8bit。3位优先级字段+4位TOS,最后一位固定为0。一般为0,表示一般服务。
- 总 长 度:16bit,表示IP报文总长度:IP首部+IP数据。
- 标 识:16bit,表示第几条报文,上电初识为0,每发一条报文+1。
- 标 志:3bit,分片。第1位保留,第2位(1是不分片,0分片),第3位标志更多的分片。
- 片 偏 移:13bit,片偏移,在接收方进行数据报重组时用来标识分片的顺序。
- 生存时间:8bit,防止丢失的数据包无休止的传播,一般设置为64或128(每转发一次-1)。
- 协 议:8bit,此数据报所携带上层数据使用的协议类型,TCP-6,UDP-17,ICMP-1。
- 首部校验:16bit,该字段只校验数据报的首部,不包含数据部分;校验IP数据报头部是否被破坏、篡改和丢失等。
- 源 地 址:32bit,自身IP地址。
- 目的地址:32bit,接收方的IP。
- 可选字段:数据报中的一个可变长度的可选信息,选项字段以32bit为界,不足时插入值为0的填充字节,保证IP首部始终是32bit的整数倍。
3、UDP层
UPD特点是:无连接、不可靠、高速率,格式如下:
UDP首部共8个字节,同IP首部一样,也是一行以32位(4个字节)为单位。
- 源端口号:16位发送端端口号,范围从0到65535。
- 目的端口号:16位接收端端口号。
- UDP长度:16位UDP长度,包含UDP首部长度+数据长度,单位是字节(byte)。
- UDP校验和:16位UDP校验和。UDP计算校验和的方法和计算IP数据报首部校验和的方法相似,但不同的是IP数据报的校验和只检验IP数据报的首部,而UDP校验和包含三个部分:UDP伪首部,UDP首部和UDP的数据部分。伪首部的数据是从IP数据报头和UDP数据报头获取的,包括源IP地址,目的IP地址,协议类型和UDP长度,其目的是让UDP两次检查数据是否已经正确到达目的地,只是单纯为了做校验用的。在大多数使用场景中接收端并不检测UDP校验和。
ICMP层和ARP层后面再详细写。
MII接口
PHY芯片与FPGA之间的接口为MII,即媒体独立接口,它是IEEE-802.3定义的以太网行业标准。“媒体独立”表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。它包括一个数据接口,以及一个MAC和PHY之间的管理接口。MII接口的类型有很多,常用的有MII、RMII、GMII、RGMII、SGMII,下面对它们进行一一介绍,不做赘述,只简单对比一下。
1.MII RMII
MII数据接口包含16个信号和2个管理接口信号。分别有单独的接收时钟和发送时钟。它的TX和RX数据线分别有四根,以4位半字节方式传送数据双向传输,时钟速率25MHz时其工作速率可达100Mb/s。当时钟频率为2.5MHz时,对应速率为10Mb/s。MII接口虽然很灵活但由于信号线太多限制了多接口网口的发展。
RMII(精简的媒体独立接口),它减少了以太网通信所需要的引脚数。根据IEEE802.3标准,RMII标准则将引脚数减少到了7个,收发数据为2bit,所以百兆网中时钟信号需要提高到50MHz,收发时钟均采用50MHz时钟源。MAC和外部的以太网PHY需要使用同样的时钟源。
总结(以百兆网为例):
- MII传输4bit数据,时钟频率为25MHz;RMII传输2bit数据,时钟频率为50MHz。
- MII有两条时钟线,RMII只有一条。
- MII不需要与MAC层时钟一致。RMII需与MAC层时钟一致,通常从MAC层获取该时钟源。
2.GMII RGMII
GMII(Gigabit Media Independant Interface),千兆MII接口。GMII采用8位接口数据,两条时钟线,工作时钟125MHz,因此传输速率可达1000Mbps。同时兼容MII所规定的10/100 Mbps工作方式。
RGMII,精简GMII接口。它的发送/接收数据线由8条改为了4条,时钟线还是两条。虽然RGMII信号线减半,但时钟仍为125Mhz,为了达到1000Mbit的传输速率,TXD/RXD信号线在时钟上升沿发送接收GMII接口中的TXD[3:0]/RXD[3:0],在时钟下降沿发送接收TXD[7:4]/RXD[7:4],即RGMII为双沿传输。
总结:
- GMII传输8bit数据,时钟频率为125MHz;RGMII双沿传输4bit数据,时钟频率为125MHz。
- GMII和RGMII都有两条时钟线。