以太网Ethernet通信协议

一、以太网简介

        计算机网络可分为局域网(LAN)、 城域网(MAN)、广域网(WAN)、互联网(Initernet)。局域网按传输介质所使用的访问控制方法可分为:以太网(Ethernet)、光纤分布式数据接口(FDDI)、异步传输模式(ATM)、令牌环网(Token Ring)、交换网(Switching) 等,它们在拓朴结构、传输介质、传输速率、数据格式等多方面都有许多不同,其中应用最广泛的当属以太网。

        以太网协议(Ethernet Protocol)是一种广泛应用于局域网(LAN)和广域网(WAN)的计算机网络通信协议。它是一种基于共享介质的局域网技术,最早由Xerox、Intel和Digital Equipment Corporation(DEC)于1970年代开发,并在1980年代初由IEEE标准化为IEEE 802.3。以太网根据最大传输速率的不同可以分为标准的以太网(10Mbit/s)、快速以太网(100Mbit/s)、千兆以太网 (1000Mbit/s)和万兆以太网(10Gbit/s)。

二、计算机网络模型

        为了实现网络通信的标准化,普及网络应用,国际标准化组织(ISO)将整个以太网通信结构制定了OSI(Open System Interconnection)模型。OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层表示层、应用层),即OSI开放互连系统参考模型。每个层功能不同,网络通信中各司其职,整个模型包括硬件和软件定义。

        在一定程度上参考了OSI模型后,产生了TCP/IP协议。TCP/IP (Transmission ControProtocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信传输的协议簇。TCP/IP协议不仅仅指的TCP和IP两个协议,而是指一个由FTPSMTP、TCP、UDP、IP 等协议构成的协议簇, 只是因为在 TCP/P 协议中 TCP 协议和I协议最具代表性,所以被称为 TCP/IP 协议。
        在TCP/IP协议中,OSI 七层参考模型被简化为五层。

        在TCP/IP五层参考模型中,数据链路层又被分为LLC层(逻辑链路层)和MAC层(媒体介质访问层)。 LLC层和MAC层是软、硬件的分界线。如PC的网卡主要负责实现参考模型中的MAC子层和物理层。 

之前写计算机网络的时候也写过相关博文:

Linux网络编程(一)_STATEABC的博客-CSDN博客

三、以太网传输格式

        IEEE 802.3规定了以太网传输数据包的帧格式:前导码、帧起始界定符、帧头(目的MAC地址+源MAC地址+类型/长度)、数据、校验位

  • 前导码(Preamble):也称报头,用于使收发节点的时钟同步。物理层使用连续7个字节的0x55实现数据的同步。
  • 帧起始定界符(SFD,Start Frame Delimiter):用于区分前导码与数据段,固定为1字节的0xD5。字段和帧起始定界符在MAC收到数据包后会自动过滤掉。
  • 目的MAC地址:即接收端物理MAC地址,由48位数字组成,占用6个字节,每个设备都有且仅有唯一的MAC地址。MAC地址从应用上可分为单播地址、组播地址和广播地址。单播地址:第一个字节的最低位为0,比如0-00-00-11-11-11,一般用于标志唯一的设备;组播地址:第一个字节的最低位为1,比如01-00-00-11-11-11,一般用于标志同属一组的多个设备;广播地址:所有48bit全为1,即FF-FF-FF-FF-FF-FF,用于标志同一网段中的所有设备。
  • 源MAC地址:即发送端物理MAC地址,占用6个字节。
  • 数据包类型/长度:2字节,当这两个字节的值小于1536 (十六进制为0x0600)时代表该以太网中数据段的长度;如果这两个字节的值大于1536,则表示与以太网帧相关的MAC客户端协议的类型,例如0x0800代表IP协议(网际协议)、0x0806 代表ARP协议(地址解析协议) 等。
  • 数据:数据段是MAC包的核心内容,它包含的数据来自MAC的上层,长度为46-1500字节。最大值1500称为以太网的最大传输单元(MTU,Maximum Transmission Unit)。接收到的数据包如果少于64字节会被认为发生冲突,数据包被自动丢弃。
  • 校验(FCS,Frame Check Sequence):确保数据的正确传输,在数据的尾部加入了4字节的循环冗余校验码(CRC)来检验数据是否传输错误。CRC数据校验从目的MAC地址开始。
  • 帧间隙(IFG,Interpacket Gap):以太网相邻两帧之间的时间间隔,即网络设备和组件在接收一帧之后,需要短暂的时间来恢复并为接收下一帧做准备的时间,最小值是96 bit time(媒介中发送96位原始数据所需要的时间)。

四、ARP协议

        在以太网中要想进行通信,首先要知道接收端的物理MAC地址,而ARP(Address Resolution Protocol),地址解析协议就是根据目的设备的IP地址 (逻辑地址)获取MAC地址的一种TCP/IP协议。

        ARP协议分为ARP请求和ARP应答,源主机发起查询目的MAC地址的报文称为ARP请求,目的主机响应源主机并发送包含本地MAC地址的报文称为ARP应答。

        当主机需要找出网络中的另一个主机的物理地址时,它就可以发送一个ARP请求报文,这个报文包含了发送方的MAC地址和IP 地址以及接收方的IP地址。因为发送方不知道接收方的物理地址,所以这个查询分组会在网络层中进行广播,即ARP请求时发送的接收方物理地址为广播地址,用48'hff_ff_ff_ff_ff_ff表示。此时局域网中的所有主机都会进行接收并处理这个ARP请求报文,然后进行验证,查看接收方的IP地址是不是自己的地址。是则返回ARP应答报文(含接收方的IP地址和物理地址),不是则不响应。

        主机B利用收到的ARP请求报文中的请求方物理地址,以单播的方式直接发送给主机A,主机A将收到的ARP应答报文中的目的MAC地址解析出来,将目的MAC地址和目的 P 地址更新至ARP缓存表中。当再次和主机A通信时,可以直接从ARP缓存表中获取,而不用重新发起ARP请求报文。ARP缓存表中的表项有过期时间(一般为20分钟),过期之后,需要重新发起ARP请求以获取目的MAC地址。

        ARP数据位于以太网帧格式的数据段中。28字节的ARP数据位于以太网格式的数据段。由于以太网数据段最少为46个字节,而ARP数据包总长度为28个字节,因此在ARP数据段后面需要填充18字节的数据,以满足以太网传输格式的要求,填充的数据可以为任意值,但一般为0。

  • 硬件类型(Hardware type):硬件地址的类型,1 表示以太网地址。
  • 协议类型(Protocol type):要映射的协议地址类型,ARP协议的上层协议为IP协议,因此该协议类型为IP协议,其值为0x0800。
  • 硬件地址长度 (Hardware size):硬件地址(MAC 地址)的长度,以字节为单位。对于以太网上 IP 地址的ARP请求或者应答来说,该值为6。
  • 协议地址长度 (Protocol size):IP地址的长度,以字节为单位。对于以太网上 P 地址的 ARP 请求或者应答来说,该值为4。
  • OP(Opcode):操作码,用于表示该数据包为ARP请求或者ARP应答。1表示ARP请求,2表示ARP应答。
  • 源MAC地址:发送端的硬件地址。
  • 源IP地址:发送端的协议(IP) 地址,如192.168.1.102。
  • 目的MAC地址:接收端的硬件地址,在ARP请求时由于不知道接收端MAC地址,因此该字段为广播地址,即48'hff_ff_ff_ff_ff_ff。

五、RGMII接口

        在物理层,由IEEE 802.3标准规定了以太网使用的传输介质、传输速度、数据编码方式和冲突检测机制,物理层一般是通过一个PHY芯片实现其功能的。

        FPGA可以看成是MAC侧,接收或发送数据到PHY侧,PHY侧再通过网线接口和其他设备进行连接。PHY在发送数据的时候,接收MAC发过来的数据,把并行数据转化为串行流数据,按照物理层的编码规则把数据编码转换为模拟信号发送出去,收数据时的流程反之。

        MII (Media Independent Interface)为媒体独立接口,用以连接以太网MAC层和PHY芯片,常用接口有:MII、RMII、GMII、RGMII。

  • MII (Medium Independent Interface,媒体独立接口):MII支持10Mbps和100Mbps的操作,数据位宽为4位,在 100Mbps 传输速率下,时钟频率为25Mhz。
  • RMII(Reduced MII):RMII是MI的简化版,数据位宽为2位,在100Mbps传输速率下,时钟频率为50Mhz。
  • GMII (Gigabit MII):GMII接口向下兼容MII接口,支持10Mbps、100Mbps和1000Mbps的操作,数据位宽为8位,在1000Mbps传输速率下,时钟频率为125Mhz。
  • RGMII (Reduced GMII):RGMII是GMII的简化版,数据位宽为4位,在1000Mbps传输速率下,时钟频率为125Mhz,在时钟的上下沿同时采样数据。在100Mbps和10Mbps通信速率下,为单个时钟沿采样。

        在千兆以太网中,常用的接口为RGMI和GMII接口。RGMII接口的优势是同时适用于10M/100M/1000Mbps通信速率,同时占用的引脚数较少。但RGMII接口在PCB布线时需要尽可能对时钟、控制和数据线进行等长处理,且时序约束相对也更为严格。

  • ETH_RXC:接收数据参考时钟,1000Mbps速率下,时钟频率为125MHZ,时钟为上下沿同时采样;100Mbps速率下,时钟频率为25MHz;10Mbps速率下,时钟频率为2.5MHz,ETH_RXC由PHY侧提供。
  • ETH_RXCTL(ETH_RX_DV):接收数据控制信号。
  • ETH_RXD:四位并行的接收数据线。
  • ETH_TXC:发送数据参考时钟,1000Mbps速率下,时钟频率为125MHZ,时钟为上下沿同时采样;100Mbps速率下,时钟频率为25MHz;10Mbps速率下,时钟频率为2.5MHz,ETH_TXC 由MAC侧提供。
  • ETH_TXCTL(ETH_TXEN):发送数据控制信号。
  • ETH_TXD:四位并行的发送数据线。
  • ETH_RESET_N:芯片复位信号,低电平有效。
  • ETH_MDC:数据管理时钟(Management Data Clock),该引脚对ETH_MDIO信号提供了一个同步的时钟。
  • ETH_MDIO:数据输入/输出管理 (Management Data Input/Output),该引脚提供了一个双向信号用于传递管理信息。

其中ETH_RXC、ETH_RXCTL和ETH_RXD为MAC接收侧引脚;ETH_TXC、ETH_TXCTL 和ETH_TXD 为MAC发送侧引脚; ETH_MDC和ETH_MDIO为MDIO接口引脚,用于配置PHY芯片内部寄存器;ETH_RST_N为PHY芯片硬件复位信号。

        RGMII使用4bit数据接口,在1000Mbps通信速率下,ETH_TXC和ETH_RXC的时钟频率为 125Mhz,采用上下沿DDR (Double Data Rate) 的方式在一个时钟周期内传输8位数据信号,即上升沿发送/接收低4位数据,上升沿发送/接收高4位数据。ETH_TXCTL和ETH_RXCTL控制信号同样采用DDR的方式在一个时钟周期内传输两位控制信号,即上升沿发送/接收数据使能(TX_EN/RX_DV)信号,下降沿发送)接收使能信号与错误信号的异或值 (TX_ERR xor TX_EN、RX_ERR xor RX_DV)。当RX_DV为高电平(表示数据有效),RX_ERR为低电平(表示数据无错误),则异或的结果值为高电平,因此只有当ETH_RXCTL和 ETH_TXCTL信号的上下沿同时为高电平时,发送和接收的数据有效目正确。

        当RGMII工作在100Mbps时,ETH_TXC和ETH_RXC的时钟频率为25Mhz,采用上升沿SDR 的方式在一个周期内传输4位数据,ETH_TXCTL和ETH_RXCTL控制信号仍采用上下沿 DDR 的传输方式。
        当RGMII工作在10Mbps时,ETH_TXC 和ETH_RXC的时钟频率为2.5Mhz,采用上升沿SDR 的方式在一个周期内传输4位数据,ETH_TXCTL和ETH_RXCTL控制信号也采用SDR的传输方式。

参考文献:

《开拓者之FPGA开发指南》

《FPGA Verilog开发实战指南》


 

  • 11
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值