以太网
2025/7/11
本文主要介绍了 以太网帧 , ARP数据报格式, IP数据报格式 ,UDP协议 ,PING 功能 以及 GMII和RGMII接口 相关知识
以太网帧格式
前导码(Preamble):8 字节,连续 7 个 8’h55 加 1 个 8’hd5,表示一个帧的开始,用于双方设备数据的同步。
目的 MAC 地址:6 字节,存放目的设备的物理地址,即 MAC 地址
源 MAC 地址:6 字节,存放发送端设备的物理地址
类型:2 字节,用于指定协议类型,常用的有 0800 表示 IP 协议,0806 表示 ARP 协议,8035表示 RARP 协议
数据:46 到 1500 字节,最少 46 字节,不足需要补全 46 字节,例如 IP 协议层就包含在数据部分,包括其 IP 头及数据。
FCS:帧尾,4 字节,称为帧校验序列,采用 32 位 CRC 校验,对目的 MAC 地址字段到数据字段进行校验。
以 UDP 协议为例,可以看到其结构如下,除了以太网首部的 14 字节,数据部分包含 IP 首部,UDP 首部,应用数据共 46~1500 字节
ARP数据报格式
ARP 地址解析协议,即 ARP(Address Resolution Protocol),根据 IP 地址获取物理地址。主机发送包含目的 IP 地址的 ARP 请求广播(MAC 地址为 48’hff_ff_ff_ff_ff_ff)到网络上的主机,并接收返回消息,以此确定目标的物理地址,收到返回消息后将 IP 地址和物理地址保存到缓存中,并保留一段时间,下次请求时直接查询 ARP 缓存以节约资源。下图为 ARP 数据报格式 。
帧类型:ARP 帧类型为两字节 0806
硬件类型:指链路层网络类型,1 为以太网
协议类型:指要转换的地址类型,采用 0x0800 IP 类型,之后的硬件地址长度和协议地址长度分别对应 6 和 4
OP : 1 表示 ARP 请求,2 表示 ARP 应答
IP数据报格式
下图为 IP 分组的报文头格式,报文头的前 20 个字节是固定的,后面的可变
版本:占 4 位,指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4)
首部长度:占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节)因此 IP 的首部长度的最大值是 60 字节
区分服务:占 8 位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.1998 年这个字段改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下都不使用这个字段
总长度:占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节.总长度必须不超过最大传送单元 MTU
标识:占 16 位,它是一个计数器,用来产生数据报的标识
标志(flag):占 3 位,目前只有前两位有意义MF标志字段的最低位是 MF (More Fragment)MF=1 表示后面“还有分片”。MF=0 表示最后一个分片DF标志字段中间的一位是 DF (Don't Fragment)只有当 DF=0 时才允许分片
片偏移:占 12 位,指较长的分组在分片后某片在原分组中的相对位置.片偏移以 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 位,只检验数据报的首部不检验数据部分,采用二进制反码求和,即将 16 位数据相加后,再将进位与低 16 位相加,直到进位为 0,最后将 16 位取反。源地址和目的地址:都各占 4 字节,分别记录源地址和目的地址
UDP协议
UDP 是 User Datagram Protocol(用户数据报协议)的英文缩写。UDP 只提供一种基本的、低延迟的被称为数据报的通讯。所谓数据报,就是一种自带寻址信息,从发送端走到接收端的数据包。UDP 协议经常用于图像传输、网络监控数据交换等数据传输速度要求比较高的场合。
数据报的长度是指包括报头和数据部分在内的总字节数。因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。数据报的最大长度根据操作环境的不同而各异。从理论上说,包含报头在内的数据报的最大长度为 65535 字节。不过,一些实际应用往往会限制数据报的大小,有时会降低到 8192 字节。
UDP 协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此 UDP 协议可以检测是否出错。虽然 UDP 提供有错误检测,但检测到错误时,错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。
PING 功能
ICMP 是 TCP/IP 协议族的一个 IP 层子协议,包含在 IP 数据报里,用于 IP 主机、路由器之间传递控制消息。控制消息是指网络是否连通,主机是否可达等功能。其中 ping 功能采用回送请求和回答报文,回送请求报文类型为 8’h08,回答报文类型为 8’h00。
GMII和RGMII接口
**GMII(Gigabit Media Independent Interface)和RGMII(Reduced Gigabit Media Independent Interface)**是用于千兆以太网的两种接口标准。它们主要用于MAC(媒体访问控制)和PHY(物理层)之间的数据传输。
MII(Medium Independent Interface)即“介质独立接口”,该接口一般应用于以太网硬件平台的MAC层和PHY层之间,MII接口的类型有很多,常见的有MII、RMII、SMII、SSMII、SSSMII、GMII、RGMII、SGMII等。
GMII(Gigabit Media Independent Interface)千兆MII接口。GMII采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps。同时兼容MII所规定的10/100 Mbps工作方式。GMII接口数据结构符合IEEE以太网标准,该接口定义见IEEE 802.3-2000。
GMII接口信号包括三类,分别为:
发送端信号:GTXCLK, TXCLK, TXD[7-0], TXEN, TXER
接收端信号:RXCLK, RXD[7-0], RXDV, RXER, CRS, COL
配置信号: MDIO, MDC
信号名称 | 描述 | 方向 |
---|---|---|
GTX_CLK | 1000M发送时钟 | MAC → PHY |
TX_CLK | 100/10M发送时钟 | PHY →MAC |
TX_ER | 发送数据错误 | MAC → PHY |
TX_EN | 发送使能 | MAC → PHY |
TX_[7:0] | 发送数据8bit | MAC → PHY |
RX_CLK | 接收时钟 | PHY → MAC |
RX_DV | 接收数据有效 | PHY → MAC |
RX_ER | 接收数据错误 | PHY → MAC |
RX_[7:0] | 接收数据8bit | PHY → MAC |
CRS | 载波监测 | PHY → MAC |
COL | 冲突碰撞监测 | PHY → MAC |
MDIO | 管理数据 | 双向 |
MDC | 管理数据时钟 | MAC → PHY |
**RGMII(Reduced Gigabit Media Independant Interface),**精简GMII接口。相比于上述的GMII有以下几点不同:
- 发送/接收数据线减半,由8条改为4条
- TX_ER和TX_EN复用,通过TX_CTL传送
- RX_ER与RX_DV复用,通过RX_CTL传送
- 1 Gbit/s速率下,时钟频率为125MHz
- 100 Mbit/s速率下,时钟频率为25MHz
- 10 Mbit/s速率下,时钟频率为2.5MHz
信号名称 | 描述 | 方向 |
---|---|---|
TXC | 发送时钟 | MAC→PHY |
TX_CTL | 发送数据控制 | MAC → PHY |
TXD[3:0] | 发送数据4bit | MAC → PHY |
RXC | 接收时钟 | PHY → MAC |
RX_CTL | 接收数据控制 | PHY → MAC |
RXD[3:0] | 接收数据4bit | PHY → MAC |
MDIO | 管理数据 | 双向 |
MDC | 管理数据时钟 | MAC → PHY |