赞
踩
MDIO(Management Data Input/Output)接口是根据IEEE 802.3标准定义的一种简单双线串行接口,主要用于以太网MAC(Media Access Control)控制器与物理层(PHY, Physical Layer)器件之间的管理通信。这种接口允许MAC控制器或者上层管理系统读取和修改PHY芯片内部的寄存器设置,以便控制和监测PHY的工作状态。
MDIO接口包含了两条信号线:
MDIO: 这是一条双向数据线,用于在管理器件和PHY之间交换控制和状态信息。在不同的时间段内,这条线既可以用作数据输入也可以用作数据输出。
MDC (Management Data Clock): 这是MDIO接口的时钟信号线,由管理器件提供,用来同步MDIO上的数据传输。
通过MDIO接口,可以实现以下功能:
MDIO协议基于特定的时序进行操作,允许MAC控制器按照一定的命令格式读取或写入PHY的多个寄存器,从而实现了对以太网物理层设备的灵活配置和实时监控。
典型的以太网帧格式主要包括以下几个主要部分:
前导码(Preamble):
10101010…101010
序列,用于接收设备同步时钟和确定帧的开始。帧起始定界符(SFD, Start-of-Frame Delimiter):
10101011
,标志着帧正文的开始。以太网帧头(Ethernet Header):
数据负载(Payload):
帧校验序列(FCS, Frame Check Sequence):
在以太网中,每个设备都有一个唯一的MAC地址,这是其硬件标识符,用于在物理层上识别设备。而IP地址则是网络层为了寻址和路由数据包所使用的逻辑地址。当一台主机想要与同一网络内的另一台主机通信时,即使它知道目标主机的IP地址,也需要知道目标主机的MAC地址以便封装数据包到以太网帧中进行传输。
以下是ARP的工作流程:
ARP请求: 当主机A需要向主机B发送数据,并且只知道主机B的IP地址时,主机A会通过广播的方式发送一个ARP请求到整个局域网中。这个请求中包含了目标主机B的IP地址,并询问:“具有这个IP地址的设备,请告诉我你的MAC地址。”
ARP响应: 主机B收到ARP请求后,发现请求的目标IP地址与自己的IP地址匹配,便会回复一个ARP应答给主机A。ARP应答中包含了主机B的MAC地址。
ARP缓存: 主机A收到ARP应答后,会将主机B的IP地址与其对应的MAC地址存储在本地的ARP缓存中,这样下次再需要发送数据给主机B时,就可以直接从缓存中查找MAC地址,无需再次发起ARP请求。
帧格式:
ARP 数据报文格式:
硬件类型(Hardware Type,2字节)
协议类型(Protocol Type,2字节)
硬件地址长度(Hardware Address Length,1字节)
协议地址长度(Protocol Address Length,1字节)
操作代码(Operation Code,2字节)
发送者硬件地址(Sender Hardware Address,6字节)
发送者协议地址(Sender Protocol Address,4字节)
目标硬件地址(Target Hardware Address,6字节)
目标协议地址(Target Protocol Address,4字节)
28字节的 ARP 数据位于以太网帧格式的数据段。由于以太网数据段最少为 46个字节, 而 ARP 数据包总长度为 28 个字节,因此在 ARP 数据段后面需要填充 18 个字节的数据,以满足以太网传 输格式的要求。这个填充的过程称为 Padding(填充),填充的数据可以为任意值,但一般为 0。
以太网通信依赖物理层PHY芯片,其与MAC间常用接口包括MII、RMII、GMII、RGMII。其中:
下图是 MAC 侧与 PHY 侧接口的连接
接口信号:
ETH_RXC(接收数据参考时钟):
ETH_RXCTL(ETH_RX_DV):
ETH_RXD:
ETH_TXC(发送参考时钟):
ETH_TXCTL(ETH_TXEN):
ETH_TXD:
ETH_RESET_N:
ETH_MDC:
ETH_MDIO:
1000Mbps速率工作模式:
ETH_TXC和ETH_RXC时钟频率均为125MHz,采用DDR(Double Data Rate)方式传输数据。
ETH_TXCTL和ETH_RXCTL控制信号同样采用DDR方式传输。
首部(Header):
首部是IP数据报的控制区域,包含了一系列固定和可选字段,用于指导数据报在网络中的传输。
固定部分(Fixed Part)
版本(Version):占4位,指示正在使用的IP协议版本。最常见的版本是IPv4(值为4),目前广泛使用的也是IPv4;IPv6版本的值为6。
首部长度(Header Length, IHL):占4位,表示IP数据报首部的长度,以32位(4字节)为单位。最小值为5,即20字节(不包含任何可选项)。如果存在可选项字段,则首部长度相应增加。
区分服务(Differentiated Services Code Point, DSCP):占6位,用于指定数据报的优先级和QoS(Quality of Service)处理需求。它允许网络设备对不同类型的流量进行差异化服务。
总长度(Total Length):占16位,表示整个IP数据报(包括首部和数据部分)的字节数。最大值通常为65,535字节(对于IPv4),但实际有效载荷受到路径上最低MTU(Maximum Transmission Unit)的限制,通常以以太网的MTU(1500字节)为参考。
标识(Identification):占16位,是一个唯一标识符,用于标识属于同一个原始数据报的所有分片。当数据报因过大需要分片时,所有分片的标识字段设置为相同的值。
标志(Flags):占3位,其中:
片偏移(Fragment Offset):占13位,仅在数据报分片时有意义,指出该分片相对于原始数据报起始处的偏移量,以8字节为单位。
生存时间(Time to Live, TTL):占8位,初始值由发送方设定,每经过一个路由器减1。当TTL值为0时,数据报将被丢弃,防止数据报在网络中无限循环。
协议(Protocol):占8位,标识IP数据报携带的数据部分应交给哪个上层协议进行进一步处理,例如TCP(值为6)、UDP(值为17)等。
首部检验和(Header Checksum):占16位,用于检测IP数据报首部在传输过程中是否发生错误。接收方通过计算校验和来验证首部的完整性。
源地址(Source Address):占32位(IPv4)或128位(IPv6),标识发送方的IP地址。
目的地址(Destination Address):占32位(IPv4)或128位(IPv6),标识接收方的IP地址。
可选部分(Optional Fields)
紧跟在固定部分之后,可包含一系列可变长度的选项,如记录路由选项(Record Route)、时间戳选项(Timestamp)等。这些选项根据需要添加,使得IP数据报具有一定的灵活性。可选部分的存在会增加首部长度。
数据区(Payload):
紧随首部之后的是数据区,包含了由上层协议(如TCP、UDP等)提供的实际用户数据或上层协议控制信息。数据区的长度取决于IP数据报的总长度减去首部长度。
填充(Padding):
如果需要,会在数据区后附加一些全0的字节(填充),以确保整个IP数据报的长度是32位(4字节)的整数倍,满足某些底层网络设备对传输单位对齐的要求。
UDP主要特性和工作方式的简单介绍:
无连接:
不可靠性:
面向数据报:
最小化服务:
头部结构简单:
适用场景:
从底层到高层的包含关系描述如下:
UDP首部共计8个字节(64位),与IP数据报首部一样,遵循以32位(4字节)为单位的排列规则。其具体字段如下:
源端口号(Source Port):占用16位,用于标识发送端(源主机)正在使用的特定服务端口。端口号的取值范围从0到65535(含)。每个端口号代表一种特定的服务或应用程序,例如HTTP通常使用80端口,DNS通常使用53端口。源端口号的存在使得接收端可以根据该值识别并定向到相应的服务进程进行数据处理。
目的端口号(Destination Port):同样占用16位,用于指定接收端(目的主机)的目标服务端口。与源端口号类似,目的端口号用于在目的主机上区分不同的服务或应用程序,确保数据包能被正确地递送到预期的服务进程中。
UDP长度(Length):占据16位,表示整个UDP数据报(包括UDP首部和数据部分)的总长度,以字节(byte)为单位。该字段的值范围为最小值8(仅包含UDP首部,无数据)到最大值65535字节。由于UDP数据报作为IP数据报的数据部分,因此UDP长度需与IP数据报的总长度字段相协调,确保IP层能够正确处理封装后的数据报。
UDP校验和(Checksum):占用16位,用于检测UDP数据报在传输过程中是否出现错误。在许多实际应用场景中,接收端可能选择不严格检查UDP校验和,尤其是在对实时性要求较高而对数据完整性和可靠性要求相对较低的情况下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。