802.3

IEEE 802.3是一个工作组,也表示此工作组制定的一系列IEEE标准,这些标准都是物理层和数据链路层(MAC)的有线以太网标准(802.11是WiFi)。一般情况下,以太网就是一个局域网络,带有广域网的一些功能应用。物理连接存在与节点之前,或者节点与网络设备之间,比如hub, switch, router.连接形式多种多样,有各种的铜线和光纤。802.3技术支持802.1网络,同时802.3也定义了局域网的连接机制是CSMA/CD。

IEEE 802.3标准把物理层从低到高分成如下子层和接口:
MDI(Medium Dependent Interface,媒体相关接口):规范物理媒体信号和传输媒质与物理设备之间的机械和电气接口。

PMD(Physical Medium Dependent,物理媒体相关)子层:位于MDI之上的PMD负责与传输媒体的接口。

PMA(Physical Medium Attachment,物理媒体附加)子层:负责发送、接收、定时恢复和相位对准功能。

PCS(Physical Coding Sublayer,物理编码子层):负责把数据比特编成合适物理媒质传输的码组。

GMII(Gigabit Media Independent Interface,吉比特媒质无关接口):吉比特MAC和吉比特物理层之间的GMII允许多个数据终端设备混合使用各种吉比特速率物理层。

RS(Reconciliation Sublayer,协调子层):提供GMII信号到MAC层的映射。

数据链路层由下列子层组成(由下到上顺序):

MAC(Media Access Control,媒体访问控制)子层:负责向物理层的数据转发功能(与媒介无关)。一般地来说,MAC子层负责封装(成帧、地址标示、差错检测)和媒体接入(冲突监测和延时过程)功能。

MAC Control(MAC控制)子层:MAC Control是可选的子层,负责MAC子层操作的实时控制和处理。定义了MAC控制子层以允许未来加入新功能。

LLC(Logical Link Control,逻辑链路控制)子层:负责数据链路层与媒体访问无关的功能,它不在IEE802.3标准的范畴之内。MAC层和可选的MAC控制子层并不知晓上面是否存在LLC子层或者是其他客户(如网桥或中继器)。

以太网PHY和MAC实现国际标准化组织(ISO,International Organization forStandardization)开放系统互连(OSI,Open System Interconnect)(ISO/OSI) 协议栈的下两层。MAC通过MII和PHY接口。典型的10兆和100兆PHY以太网实现分别和10BaseT和100BaseTX接口结合。

帧格式

MAC块实现IEEE 802.3-2002标准指定的MAC子层和可选MAC控制子层(10/100mbit/s)。

为使用CSMA/CD MAC的数据通信系统指定了两种帧格式:
基本MAC帧格式
标记的MAC帧格式(基本MAC帧格式的扩展)

以上图片描述了框架结构(未标记和标记),包括以下字段:

1.前导码3
用于同步的7字节字段(PLS电路)十六进制值:55-55-55-55-55-55-55-55-55位模式:01010101 01010101 01010101 01010101 01010101 01010101(从右到左位传输)。

2.开始帧分隔符(SFD)
用于指示帧开始的1字节字段。十六进制值:D5位模式:11010101(从右到左位传输)。

3.目的地和源地址字段
6字节字段,表示目的地和源站地址,如下所示):

每个地址的长度为48位。
目标地址字段中的第一个LSB位(I/G)用于指示个人地址(I/G=0)或组地址(I/G=1)。一个组地址能识别无、1个、多个或所有连接到局域网的站点。在源地址中,第一位被保留并重置为0。
第二位(U/L)区分本地(U/L=1)或全局(U/L=0)受管地址。对于广播地址,该位也是1。
每个地址字段的每个字节必须首先传输最低有效位。

地址指定基于以下类型:
单个地址:这是与网络上特定站点相关联的物理地址。
组地址。与给定网络上的一个或多个站点关联的多目标地址。多播地址有两种:
多播组地址:与一组逻辑相关站点关联的地址。
广播地址:一个可分辨的预定义多播地址(目标地址字段中的所有1),它始终表示 给定LAN上的所有站点。
QTag前缀:在源地址字段和MAC客户端长度/类型字段之间插入的4字节字段。此字段是基本帧(未标记)的扩展,用于获取标记的MAC帧。未标记的MAC帧不包括此字段。标记扩展如下:
与类型解释(大于0x0600)一致的2字节常量长度/类型字段值,等于802.1Q标记协议类型(0x8100十六进制)的值。此常量字段用于区分标记的和未标记的MAC帧。
包含标签控制信息字段的2字节字段,细分如下:3位用户优先级、规范格式指示符(CFI)位和12位VLAN标识符。标记的MAC帧的长度由QTag前缀扩展了4个字节。

4.MAC客户端长度/类型
2字节字段,含义不同(互斥),具体取决于其值:
如果该值小于或等于maxValidFrame(0d1500,0x05DC),则此字段指示802.3帧的后续数据字段中包含的MAC客户端数据字节数(长度解释)。

如果该值大于或等于MinTypeValue(0d1536,0x0600),则此字段指示与以太网帧相关的MAC客户端协议(类型解释)的性质。

无论对长度/类型字段的解释如何,如果数据字段的长度小于协议正常运行所需的最小值,则在数据字段之后但在FCS(帧检查序列)字段之前添加一个PAD字段。长度/类型字段首先用高阶字节发送和接收。

对于maxValidLength和minTypeValue(不包括边界)之间的长度/类型字段值,不指定MAC子层的行为:MAC子层可以传递它们,也可以不传递它们。

5.数据和PAD字段
n字节数据字段。提供了完全的数据透明性,这意味着任何字节值的任意序列都可能出现在数据字段中。PAD的大小(如果有的话)由数据字段的大小决定。数据和PAD字段的最大和最小长度为:
最大长度=1500字节

未标记MAC帧的最小长度=46字节

标记MAC帧的最小长度=42字节

当数据字段长度小于所需的最小值时,将添加PAD字段以匹配最小长度(标记帧为42字节,未标记帧为46字节)。

6.帧检查序列
包含循环冗余检查(CRC)值的4字节字段。CRC计算基于以下字段:源地址、目标地址、QTag前缀、长度/类型、LLC数据和PAD(即除前导码、SFD之外的所有字段)。生成多项式如下:

帧的CRC值计算如下:
帧的前2位被补。
帧的n位是次数(n–1)的多项式M(x)的系数。目标地址的第一位对应于x(n-1)项,数据字段的最后一位对应于x0项。
M(x)与x^32相乘,再除以G(x),产生一个小于31的余数。
R(x)的系数被视为32位序列。
位序列被补充,结果是CRC。
CRC值的32位放入帧检查序列中。x32项是第一个传输,x0项是最后一个传输。

MAC帧的每个字节,除FCS字段外,首先传输低阶位。无效的MAC帧由以下条件之一定义:

帧长度与长度/类型字段指定的预期值不一致。如果长度/类型字段包含类型值,则假定帧长度与此字段一致(没有无效帧)。

帧长度不是整数字节数(额外位)。

在传入帧上计算的CRC值与包含的FCS不匹配。

ARP

MAC从PCI总线收到IP数据包(或者其他网络层协议的数据包)后,将之拆分并重新打包成最大1518Byte,最小64Byte的帧.这个帧里面包括了目标MAC地址、自己的源MAC地址和数据包里面的协议类型(比如IP数据包的类型用80表示).最后还有一个DWORD(4Byte)的CRC码.

可是目标的MAC地址是哪里来的呢?这牵扯到一个ARP协议(介乎于网络层和数据链路层的一个协议).第一次传送某个目的IP地址的数据的时候,先会发出一个ARP包,其MAC的目标地址是广播地址,里面说到:”谁是xxx.xxx.xxx.xxx这个IP地址的主人?”因为是广播包,所有这个局域网的主机都收到了这个ARP请求.收到请求的主机将这个IP地址和自己的相比较,如果不相同就不予理会,如果相同就发出ARP响应包.这个IP地址的主机收到这个ARP请求包后回复的ARP响应里说到:”我是这个IP地址的主人”.这个包里面就包括了他的MAC地址.以后的给这个IP地址的帧的目标MAC地址就被确定了.(其它的协议如IPX/SPX也有相应的协议完成这些操作.)

IP地址和MAC地址之间的关联关系保存在主机系统里面,叫做ARP表,由驱动程序和操作系统完成.在Microsoft的系统里面可以用arp-a的命令查看ARP表.收到数据帧的时候也是一样,做完CRC以后,如果没有CRC效验错误,就把帧头去掉,把数据包拿出来通过标准的接口传递给驱动和上层的协议客栈,最终正确的达到我们的应用程序.

ARP的功能是在32bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射,为上层将底层的物理地址差异屏蔽起来,这样上层的因特网协议就可以灵活地使用IP地址进行通信了。ARP协议的基本功能是使用目标主机的IP地址,查询其对应的MAC地址,以保证底层链路上数据包通信的进行。为了实现在网络接口物理地址与IP地址间的转换,ARP协议中引入了ARP缓存表的概念。ARP缓存表中记录了一条一条的<IP地址,MAC地址>对,他们是主机最近运行获得的关于周围其他主机的IP地址到物理地址的绑定,当需要发送IP数据包时,ARP层根据目的IP地址来查找ARP缓存表,并将匹配的MAC地址装入以太网帧首部,最后发送以太网数据。

ARP缓存表的建立与ARP数据包是密切相关的。在以太网中,ARP数据包和IP数据包是两个独立的部分,它们都封装在以太网帧中发送。ARP数据包的种类有两种:一是ARP请求包,它是通过以太网广播的方式发送的,用于向具有某个IP地址的主机发送请求,希望该主机返回其MAC地址;二是ARP应答包,收到ARP请求的主机会比对该数据包中的IP地址与自己的IP地址是否符合,若是,则该主机向源主机返回一个ARP应答包。向源主机报告自己的MAC地址。源主机通过提取ARP应答包中的相关字段来更新ARP缓存表。在Windows控制台上输入arp -a,可以查看操作系统中使用的ARP缓存表。

举一个简单的例子来看看ARP的功能。假如我们的主机(192.168.1.11)需要向开发板(192.168.1.37)发送一个IP数据包,当发送数据时,主机会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址为(04-02-35-00-00-01),此时,主机直接把目标MAC地址写入以太网首部发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,此时比较不幸,我们的数据需要被延迟发送,随后主机会先在网络上发送一个广播(ARP请求,以太网目的地址为FF-FF-FF-FF-FF-FF),广播的ARP请求表示同一网段内所有主机将会收到这样一条信息:“192.168.1.37的MAC地址是什么?请回答”。网络IP地址为192.168.1.37(开发板)的主机接收到这个帧后,它有义务做出这样的回答(ARP应答):“192.168.1.37的MAC地址是(04-02-35-00-00-01)”。这样,主机就知道了开发板的MAC地址,先前被延时的数据包就可以被发送了,此外,主机将这个地址对保存在缓存表中,以便后续数据包发送时使用。

ARP协议的核心就是对ARP缓存表的操作。发送数据包时,查找缓存表以得到目的MAC地址,此外,ARP还需要不断地处理ARP请求包和ARP应答包,以保证缓存表中各个表项的有效性。ARP的实质就是对缓存表的建立、更新、查询等操作。

GMAC接口(2)——协议相关推荐

  1. 性能测试——接口、协议篇

    1.不同视角的接口 开发眼中的接口:模块与模块之间对接的方式 测试眼中的接口:协议接口,可以独立部署 服务的成的 2.常见的接口协议 HTTP 超文本传输协议 HTTPS 安全超文本协议 FTP 文件 ...

  2. 思科-实验10:路由器接口 PPP 协议封装和 PAP、CHAP 验证配置

    [实验内容] (1) 选择两台C2811 路由器,分别关闭电源后添加WIC-2T 模块,添加位置为插槽0/接口适配器0(提示:在4个插槽中右下角的位置).开启电源之后使用Serial 电缆将两台路由器 ...

  3. 吉信通短信接口(HTTP协议) java

    最近学习了吉信通接口的内容,做了简单的短信对接功能.和大家分享一下吉信通短信接口(HTTP协议).吉信通官网上也有相关的代码示例. 吉信通官网:http://www.winic.org/api/Sen ...

  4. USB-C接口 OTG协议芯片 支持同时传输数据充电

    TYPE-C接口 OTG协议芯片 支持同时传输数据充电.乐得瑞科技推出LDR6028A 针对 USB Type-C 标准中的 Bridge 设备而开发的 USB-C DRP 接口 USB PD 通信芯 ...

  5. AXI接口协议详解-AXI总线、接口、协议

    转自:https://cloud.tencent.com/developer/article/1695010 AXI接口协议详解-AXI总线.接口.协议 AXI 总线 上面介绍了AMBA总线中的两种, ...

  6. 笔记本固态硬盘选型(总线、接口、协议、SATA、PCIe、AHCI、NVMe、M.2、NGFF)

    文章目录 固态硬盘选型 1.总线 基本概念 常见总线 SATA PCIe 2.协议 基本概念 常见硬盘协议 AHCI NVMe 3.接口 基本概念 常见接口 SATA mSATA SATA Expre ...

  7. AXI总线详解-总线和接口以及协议

      总线.接口和协议,这三个词常常被联系在一起,但是我们心里要明白他们的区别.   总线是一组传输通道,是各种逻辑器件构成的传输数据的通道,一般由由数据线.地址线.控制线等构成.接口是一种连接标准,又 ...

  8. 计算机网口通讯协议,接口通讯协议定义.doc

    接口通讯协议定义 PAGE PAGE 37 接口通讯协议定义 篇一:通讯接口概念 通信接口协议综述 (收集多处资料集合原创,综合232.422.485.USB及网络通讯等) 在现场数据采集和数据传输中 ...

  9. [4G5G专题-10]:前传接口 eCPRI协议的那些事

    目录 1. eCPRI概述 1.1 概述 1.2 CPRI协议的不足 1.3 eCPRI是如何克服CPRI的缺点的? 1.4 eCPRI的网络带宽 2.eCPRI协议网络架构 2.1 eCPRI协议网 ...

  10. 微信开发接口API协议

    微信开发接口API协议,出自冬天不穿秋裤,天冷也要风度的程序猿之手,必属精品! 一.网络通讯协议 如上图,采用 datalength+databytes 的自定义长度的协议,其中: datalengt ...

最新文章

  1. input限制文字个数但是输入中文时会被切断_Python文字转换语音,让你的文字会「说话」抠脚大汉秒变撒娇萌妹...
  2. Chromium之各国语言切换
  3. 保存ip地址和计算机名称,批量设置IP地址和计算机名
  4. 让CPU占用率听你指挥
  5. Python数据可视化2.6 一些最好的可视化实践
  6. 银行IT:研究框架(165页)
  7. 【网络传输与RTC】
  8. 致远OA任意文件下载漏洞(CNVD-2020-62422)
  9. 数组:完成等差等比数列,及其他数列
  10. SparkSQL性能优化
  11. 支撑百万并发的数据库架构如何设计?
  12. 离线处理需要做哪些工作_游戏配音需要做哪些工作?
  13. 【ElasticSearch 学习笔记】Java API
  14. 7.SOA架构:服务和微服务分析及设计--- REST服务及微服务的服务API于契约设计
  15. 基于javaweb实现人脸识别
  16. cad转dwf简易教程
  17. 基于Java+Springmvc+vue+element实现大学生科技创新创业项目管理系统
  18. 程序员量子力学-海森堡式BUG
  19. 手机拍照及简单的图片压缩
  20. 远程windows蓝屏解决办法

热门文章

  1. 棠玥寕谈芭蕾:人生应有一热爱
  2. MWC就快到来!5G、物联网应用以及折迭手机为本次焦点
  3. 跟着廖雪峰学python 006
  4. 虚拟主播甜妹小给给戏腔演绎国风佳作,引爆抖音直播浪潮
  5. AMS5601开发 AB角度磁编码器
  6. CTS2019 氪金手游
  7. 【团队介绍】小逗比们的介绍篇
  8. 自定义类型:结构体2.0(初阶+进阶)+位段+枚举+联合
  9. 我厌倦玩计算机游戏了英语翻译,我喜欢玩电子游戏英文翻译,我喜欢电脑游戏怎么说...
  10. hdu5879 Cure( 1/(n^2)的快速收敛性质)