基于FPGA的以太网协议

描述

以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网的协议层是建立在OSI模型的基础上的,OSI模型,即开放式通信 系统互联参考模型(Open System Interconnection),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI。主要包括七层,具体如下:

(1)、物理层  Physical Layer

(2)、数据链路层  Data Link Layer

(3)、网络层  Network Layer

(4)、传输层  Transport Layer

(5)、会话层  Session Layer

(6)、表示层  Presentation Layer

(7)、应用层 Application Layer

因为我是做FPGA的,因此只关注了物理层,数据链路层,网络层,传输层;更上层协议没有做过多了解。

1,以太网物理层,

物理层为OSI中的第一层,主要包括PCS,PMA,PMD,

PCS:物理编码子层,完成完成对传输的MAC协议数据的编、译码;以便物理介质传输;

PMA:物理介质连接子层,生成线路的传输信号;接收线路信号完成时钟恢复;

PMD:物理介质相关子层,定义不同传输介质的接口标准,提供物理连接。

物理层与链路层接口:主要包括:MII、RMII接口、GMII接口、RGMII接口、SGMII接口、 XGMII接口。

MII:支持10兆和100兆的操作,一个接口由14根线组成,它的支持还是比较灵活的,但是有一个缺点是因为它一个端口用的信号线太多,如果一个8端口的交换机要用到112根线,16端口就要用到224根线,到32端口的话就要用到448根线,一般按照这个接口做交换机,是不太现实的,所以现代的交换机的制作都会用到其它的一些从MII简化出来的标准,比如RMII、SMII、GMII等。

RMII:简化的MII接口,在数据的收发上它比MII接口少了一倍的信号线,所以它一般要求是50兆的总线时钟。RMII一般用在多端口的交换机,它不是每个端口安排收、发两个时钟,而是所有的数据端口公用一个时钟用于所有端口的收发,这里就节省了不少的端口数目。RMII的一个端口要求7个数据线,比MII少了一倍,所以交换机能够接入多一倍数据的端口。和MII一样,RMII支持10兆和100兆的总线接口速度。

SMII:由思科提出的一种媒体接口,它有比RMII更少的信号线数目,S表示串行的意思。因为它只用一根信号线传送发送数据,一根信号线传输接受数据,所以在时钟上为了满足100的需求,它的时钟频率很高,达到了125兆,为什么用125兆,是因为数据线里面会传送一些控制信息。SMII一个端口仅用4根信号线完成100信号的传输,比起RMII差不多又少了一倍的信号线。SMII在工业界的支持力度是很高的。同理,所有端口的数据收发都公用同一个外部的125M时钟。

XGMII:是10Gb的物理层接口,接口时钟为156.25Mhz。

GMII :是千兆网的MII接口,这个也有相应的RGMII接口,表示简化了的GMII接口;GMII是8bit并行同步收发接口,采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps。同时兼容MII所规定的10/100 Mbps工作方式。

发送接口信号:

◇ GTXCLK——吉比特TX..信号的时钟信号(125MHz)

◇ TXCLK——10/100M信号时钟

◇ TXD[7..0]——被发送数据

◇ TXEN——发送器使能信号

◇ TXER——发送器错误(用于破坏一个数据包)

接收接口信号:

◇ RXCLK——接收时钟信号(从收到的数据中提取,因此与GTXCLK无关联)

◇ RXD[7..0]——接收数据

◇ RXDV——接收数据有效指示

◇ RXER——接收数据出错指示

◇ COL——冲突检测(仅用于半双工状态)

注:在千兆速率下,向PHY提供GTXCLK信号,TXD、TXEN、TXER信号与此时钟信号同步。否则,在10/100M速率下,PHY提供 TXCLK时钟信号,其它信号与此信号同步。其工作频率为25MHz(100M网络)或2.5MHz(10M网络)。

2,以太网数据链路层

数据链路层为OSI中的第二层,主要将从物理层拿到的数据帧解析后拿到IP数据报传递给网络层;或把网络层拿到的IP数据报,增加前导码,MAC地址,帧类型校验后组成新的数据帧传递给物理层;具体协议数据帧如下:

计算机

数据帧中的数据为IP数据报;

数据帧前会有8个字节的前导码,然后和上述的数据帧一块构成一个完成对MAC层数据报。

注意:

帧间最小间隔 :帧间最小间隔为 9.6 us (10Mbps) ,相当于96 bit 的发送时间(等待12个时钟之后)。一个站在检测到总线开始空闲后,还要等待 9.6 us (10Mbps)才能再次发送数据。这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。

最大帧长度:为了保证信道使用的相对公平性,让更多的站能抢占到信道,规定了最大帧长度;超过了最大帧长度就需要分多次完成;以太网规定了数据帧中传送数据的最大长度为1500字节。

最短有效帧长:如果发生冲突,就一定是在发送的前 64 字节之内。由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于 64 字节。以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。

3,以太网网络层

网络层是OSI中的第三层;位于传输层和数据链路层之间;实现将传输层数据报打包为IP数据报,或解析IP数据报。

IP数据报如下:(蓝色部分为IP数据报首部来;黄色部分为UDP/TCP数据报,也是IP数据报的报文)

计算机

首部介绍:

版本:占 4 位,指 IP 协议的版本,通信双方使用的IP协议的版本必须一致,目前的 IP 协议版本号为 4 (即 IPv4)

首部长度:占4位,可表示的最大数值是15个单位(一个单位为 4 字节),因此IP 的首部长度的最大值是 60 字节。最常用的是20字节(0101)

区分服务:占 8 位,一般不使用

总长度:占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节,总长度必须不超过最大传送单元MTU

标识:占 16 位,它是一个计数器,用来产生数据报的标识,在分片时被使用,用于数据的重组条件

标志:占 3 位,目前只有前两位有意义,标志字段的最低位是 MF(More Fragment),MF=1 表示后面“还有分片”。MF=0 表示最后一个分片;标志字段中间的一位是 DF (Don’t Fragment),只有当 DF=0 时才允许分片

片偏移:占13位,指较长的分组在分片后某片在原分组中的相对位置.片偏移以 8 个字节为偏移单位

生存时间:占 8 位,记为 TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit 字段.推荐的初始值由分配数字 RFC 指定,当前值为 64.发送ICMP 回显应答时经常把 TTL 设为最大值 255

协议:占 8 位,指出此数据报携带的数据使用何种协议以便目的主机的 IP 层将数据部分上交给哪个处理过程, 1 表示为 ICMP 协议, 2 表示为 IGMP 协议, 6 表示为 TCP 协议, 17 表示为UDP 协议

首部检验和:占 16 位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验码而采用简单的计算方法

源地址和目的地址:都各占 4 字节,分别记录源地址和目的地址

可选字段和填充字段 : 很少使用,新协议中已经取消IPv6

4,以太网传输层

传输层是OSI中的第四层;主要完成UDP/TCP的装配然后传输给网络层;

UDP:不可靠传输;但能保证实时性;多用于视频通话或会议等;

TCP:可靠传输;建立在连接的基础之上;保证数据完整性;多用于邮件,信息等;

UDP数据报:

计算机

TCP数据报:

计算机

带阴影的几个字段需要重点说明一下:

1) 序号:Seq(Sequence Number)序号占32位,用来标识从计算机A发送到计算机B的数据包的序号,计算机发送数据时对此进行标记。

2) 确认号:Ack(Acknowledge Number)确认号占32位,客户端和服务器端都可以发送,Ack = Seq + 1。

3) 标志位:每个标志位占用1Bit,共有6个,分别为 URG、ACK、PSH、RST、SYN、FIN,具体含义如下:

URG:紧急指针(urgent pointer)有效。

ACK:确认序号有效。

PSH:接收方应该尽快将这个报文交给应用层。

RST:重置连接。

SYN:建立一个新连接。

FIN:断开一个连接。

审核编辑 :李倩

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分