GMAC接口(2)——协议

1. 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接口结合。
在这里插入图片描述

1.1 帧格式

在这里插入图片描述

MAC块实现IEEE 802.3-2002标准指定的MAC子层和可选MAC控制子层(10/100mbit/s)。
在这里插入图片描述
为使用CSMA/CD MAC的数据通信系统指定了两种帧格式:
基本MAC帧格式
标记的MAC帧格式(基本MAC帧格式的扩展)

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

1.1.1 前导码

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

1.1.2 开始帧分隔符(SFD)

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

1.1.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个字节。

1.1.4 MAC客户端长度/类型

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

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

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

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

1.1.5 数据和PAD字段

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

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

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

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

1.1.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不匹配。

1.2ARP

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的实质就是对缓存表的建立、更新、查询等操作。

1.3TCP/IP

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。
TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。

TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。
TCP/IP协议是Internet最基本的协议,其中应用层的主要协议有Telnet、FTP、SMTP等,是用来接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层;传输层的主要协议有UDP、TCP,是使用者使用平台和计算机信息网内部数据结合的通道,可以实现数据传输与数据共享;网络层的主要协议有ICMP、IP、IGMP,主要负责网络中数据包的传送等;而网络访问层,也叫网络接口层或数据链路层,主要协议有ARP、RARP,主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值