提及以太网,大家可能就会想到百兆以太网、千兆以太网以及万兆以太网等等。局域以太网从10M开始发展,经历多少很多多少的变迁,发展到现在的千兆以太网。千兆以太网以高效、高速、高性能为特点,已经广泛运用在金融、商业、教诲、政府机关及厂矿企业等行业。吉比特以太网,或译千兆以太网是一个描述各种以吉比特每秒速率进行以太网帧传输技能的术语,由IEEE 802.3-2005标准定义。该标准许可通过集线器连接的半双工千兆连接,但是在市场上利用交流机的全双工连接所达到的速率才真正符合标准。
当今,随着互联网技能的迅速发展,采取以太网实现数据采集和掌握方面的运用,成为了电子系统设计的热点。以太网具有价格低廉、稳定可靠、传输速率快、传输间隔远等特点,以太网技能发展成熟,具有很高的性价比。采取以太网技能的设备,可以通过TCP/IP协议进行数据的传输,不须要进行传输协议转换,利用和掩护设备大略。随着技能的发展和各种运用的需求,涌现了各种以太网的标准,包括标准以太网(10Mbit/s)、百兆以太网(100Mbit/s)、千兆以太网(1000Mbit/s)和10G(10Gbit/s)以太网[1]。不同类型的以太网有其各自须要遵照的标准,同时其所用的传输介质以及数据吞吐量也各不相同。千兆以太网技能作为新一代的高速以太网技能,它可以供应1Gbps的通信带宽,采取和传统10M、100M以太网同样的CSMA/CD协议、帧格式和帧长、全/半双工事情办法、流控模式以及布线系统,给用户带来了提高核心网络的有效办理方案,这种办理方案的最大优点是继续了传统以太网技能价格便宜的特点。
对付学习者而言,你便是要搞清楚弄明白以太网如何去实现,在实际操作中怎么去做,从这个角度出发的话,你就会创造实在没那么繁芜,这便是提及来没那么难。那真正实现起来,到详细的各个接口以及细节的调试以及调通,你会创造还是比较烧脑的。以是呢,咱们先来聊一聊以太网的各个接口,从大体框架来剖析如何去学习。

咱们就以千兆以太网举例,千兆以太网,只是说以太网的速率为千兆,也便是1G。除了千兆网,还有百兆网,万兆网,当然这些都是指的以太网的速率。不同速率的以太网,在FPGA真个接口表现形式也是不一样的。下边就来先容百兆网和千兆网的接口形式。
这是网口与FPGA连接的常用方案,RJ45便是咱们平常说的水晶头,Ethernet PHY因此太网的PHY芯片,之后便是Ethernet PHY与FPGA相连。
下边因此太网PHY芯片与FPGA连接的大略的架构图(不代表全部的旗子暗记输入输出端口)
先说百兆网,百兆网的接口一样平常为MII(Media Independent Interface),当然10M网用的也是MII接口。下图是一块以太网PHY芯片的一些手册资料截图。
在百兆网模式下,其RXCLK的周期为40ns,也便是25M,数据端口RXD只用了4根线RXD[3:0],然后25M4 = 100M,这样算出来,便是100M的速率了。接着再来说一下千兆网,千兆网的接口,就目前打仗比较多的接口有3种,GMII,RGMII和SGMII。先说GMII,RxClk的周期为8ns,也便是125M,数据端口利用了8bit,125M8 = 1000M,速率便是千兆网了。
还有RGMII,其时钟频率也为125M,但是它只利用了4个线,不过,RGMII利用的是双沿模式,也便是DDR模式,在时钟的高下沿都可以传送数据。这样算的话,125M42 = 1000M,还是千兆网。RGMII与GMII紧张的差异便是双沿采样与单沿采样。
之后还有SGMII,全称为Serial Gigabit Media Independent Interface,也便是串行的以太网接口。RGMII,GMII还是MII,都是利用并行接口,而且还须要随路时钟,而SGMII只须要2组线,一组是发送,一组是吸收,当然一组线由两根差分线组成。SGMII也是须要8/10B编码。这样在PCB布线时,就可以节省一些布线的空间。当然,对付FPGA来讲,也节省了FPGA的引脚资源。SGMII一样平常在公司的项目会用的多一些,像GMII,RGMI在某宝上卖的开拓板上一样平常都有。
下面就大略的说说以太网数据格式,IEEE.802.3数据格式汇总,帧间隙IFG>=96bittime,10zM/100M/1000M格式一样。如下图大略的端口旗子暗记显示截图。
上面先容了那么多接口以及以太网的干系知识,那么问题来了,如何去快速学习千兆以太网呢?个人认为节制好总体框架以及接口细节,理解UDP协议,节制抓包等等,逐步琢磨学习,大家都可以逐步节制好的。那么下面咱们就来聊聊千兆以太网的UDP协议,并且会结合wireshark抓包软件抓取到的以太网包,带着大家看一下以太网的协议到底是怎么样的呢?当然,像我们常用的以太网协议有TCP/IP,UDPTCP/IP和UDP比较,TCP/IP是一种数据可靠的协议,而UDP是一种数据不可靠的协议。至于为什么TCP/IP是可靠的,而UDP是不可靠,留给大家自行百度。在wireshark中可以抓取到经由网口传输的很多数据包,可以说只假如经由网口的数据,在wireshark中都能抓到。大家可以去下载一个WireShark来学习一下吧,免费下载利用哦!
(备注:网络协议剖析器 WireShark是一款开源的网络数据帧剖析软件,可以抓取网络数据封包,供应每个数据帧的详细信息,如MAC地址、数据帧类型、IP地址、UDP端口、等主要信息,方便开拓者对网络数据协议的剖析与干系测试。WireShark官网:https://www.wireshark.org/)
下面我们根据抓取到的一个UDP包,来给大家先容UDP的协议
第一部分,可以粗略的知道该UDP包,其源IP和目的IP到底是什么。
第二部分,是对该UDP包的简短描述,从中可以大约的知道该数据包的数据长度,源MAC地址,目的MAC地址,等等干系信息。
第三部分,可以说是这个包的所有数据。一个完全的数据包,还会有数据包的帧头,帧尾还有CRC校验的数据。
看到第三部分,这全是十六进制的字符,这TMD的到底是什么意思呢?
关于这些内容,点开第二部分的展开图标,就可以一探究竟了。
这样看,是不是就可以知道这个UDP包的前6个字节,便是目的MAC地址了呢?再来看接着的6个字节数据:6c fd b9 87 48 de
这6个字节,代表着源MAC地址。我们也可以通过查看自己电脑上的MAC地址来确认。
接着的这些数据,大家也可以自己随着文章中的讲解,自己下载一个WireShark来学习一下。
当然,这里特殊须要解释的一下是,UDP协议涉及到校验和的打算。统共有两个校验和,一个是在IP首部的校验和,另一个是在UDP首部的校验和。