一、概述
以太网是应用最为广泛的局域网,包括标准的以太网(10Mbit/s)、快速以太网(100Mbit/s)和10G(10Gbit/s)以太网,采用的是CSMA/CD访问控制法,它们都符合IEEE802.3。
常见的802.3应用为:
10M:10base-T(铜线UTP模式)
100M:100base-TX(铜线UTP模式):100BASE-TX是一种使用5类数据级无屏蔽双绞线或屏蔽双绞线的快速以太网技术。它使用两对双绞线,一对用于发送,一对用于接收数据。在传输中使用4B/5B编码方式,信号频率为125MHz。符合EIA586的5类布线标准和IBM的SPT1类布线标准。使用同10BASE-T相同的RJ-45连接器。它的最大网段长度为100米。它支持全双工的数据传输。
100base-FX(光纤线):100BASE-FX是一种使用光缆的快速以太网技术,可使用单模和多模光纤(62.5和125um)。多模光纤连接的最大距离为550米。单模光纤连接的最大距离为3000米。在传输中使用4B/5B编码方式,信号频率为125MHz。它使用MIC/FDDI连接器、ST连接器或SC连接器。它的最大网段长度为150m、412m、2000m或更长至10公里,这与所使用的光纤类型和工作模式有关,它支持全双工的数据传输。100BASE-FX特别适合于有电气干扰的环境、较大距离连接、或高保密环境等情况下的适用。
1000M:1000base-T(铜线UTP模式)
二、以太网结构:
802.3通常使用专门的网络接口卡或通过系统主电路板上的电路实现。以太网使用收发器与网络媒体进行连接。收发器可以完成多种物理层功能,其中包括对网络碰撞进行检测。收发器可以作为独立的设备通过电缆与终端站连接,也可以直接被集成到终端站的网卡当中。
以太网采用广播机制,所有与网络连接的工作站都可以看到网络上传递的数据。通过查看包含在帧中的目标地址,确定是否进行接收或放弃。如果证明数据确实是发给自己的,工作站将会接收数据并传递给高层协议进行处理。
以太网采用CSMA/CD媒体访问机制,任何工作站都可以在任何时间访问网络。在发送数据之前,工作站首先需要侦听网络是否空闲,如果网络上没有任何数据传送,工作站就会把所要发送的信息投放到网络当中。否则,工作站只能等待网络下一次出现空闲的时候再进行数据的发送。
作为一种基于竞争机制的网络环境,以太网允许任何一台网络设备在网络空闲时发送信息。因为没有任何集中式的管理措施,所以非常有可能出现多台工作站同时检测到网络处于空闲状态,进而同时向网络发送数据的情况。这时,发出的信息会相互碰撞(collision)而导致损坏。工作站必须等待一段时间之后,重新发送数据。补偿算法用来决定发生碰撞后,工作站应当在何时重新发送数据帧。
三、以太网的工作过程
当以太网中的一台主机要传输数据时,它将按如下步骤进行:
1、监听信道上收否有信号在传输。如果有的话,表明信道处于忙状态,就继续监听,直到信道空闲为止。
2、若没有监听到任何信号,就传输数据
3、传输的时候继续监听,如发现冲突则执行退避算法,随机等待一段时间后,重新执行步骤1(当冲突发生时,涉及冲突的计算机会发送会返回到监听信道状态。
注意:每台计算机一次只允许发送一个包,一个拥塞序列,以警告所有的节点)
4、若未发现冲突则发送成功,所有计算机在试图再一次发送数据之前,必须在最近一次发送后等待9.6微秒(以10Mbps运行)。
四、以太网/IEEE802.3帧的结构
下图所示为以太网/IEEE802.3帧的基本组成。
如图所示,以太网和IEEE802.3帧的基本结构如下:
前导码:由0、1间隔代码组成,可以通知目标站作好接收准备。IEEE802.3帧的前导码占用7个字节,紧随其后的是长度为1个字节的帧首定界符(SOF)。以太网帧把SOF包含在了前导码当中,因此,前导码的长度扩大为8个字节。
帧首定界符(SOF):IEEE802.3帧中的定界字节,以两个连续的代码1结尾,表示一帧实际开始。
目标和源地址:表示发送和接收帧的工作站的地址,各占据6个字节。其中,目标地址可以是单址,也可以是多点传送或广播地址。
类型(以太网):占用2个字节,指定接收数据的高层协议。
长度(IEEE802.3):表示紧随其后的以字节为单位的数据段的长度。
数据(以太网):在经过物理层和逻辑链路层的处理之后,包含在帧中的数据将被传递给在类型段中指定的高层协议。虽然以太网版本2中并没有明确作出补齐规定,但是以太网帧中数据段的长度最小应当不低于46个字节。
数据(IEEE802.3):IEEE802.3帧在数据段中对接收数据的上层协议进行规定。如果数据段长度过小,使帧的总长度无法达到64个字节的最小值,那么相应软件将会自动填充数据段,以确保整个帧的长度不低于64个字节。
帧校验序列(FSC):该序列包含长度为4个字节的循环冗余校验值(CRC),由发送设备计算产生,在接收方被重新计算以确定帧在传送过程中是否被损坏。
五、以太网速率计算
我们通常所说的10M、100M,1000M、10GE,这些都是指物理介质每秒可以传送多少bit的数据。在我们实际中经常使用每秒传送实际数据帧的数目即PPS(packets per second)来表示报文的速率。下面介绍对于以太网来说如何进行链路速率与pps之间的换算。
以太网传送数据时,每两个帧之间存在帧间隙IFG(Inter Frame Gap),帧间隙的作用是使介质中的信号处于稳定状态,同时让帧接收者对接收的帧作必要的处理(如调整缓存取的指针、更新计数、发中断让主机对报文进行处理)。对于Ethernet(10M)帧间隙时间为9.6usec,100M快速以太网帧间隙为0.96usec,1000M帧间隙为0.096usec,10GE帧间隙为0.0096usec,这个时间正好相当于传送96bit数据的时间。
下面我们看怎么把以太网速率与pps进行换算,假设数据帧的长度为 k bytes(包括CRC),端口速率为R,转化后的PPS为N,那么:
N=R/(k×8+8×8+96)
其中k×8表示实际数据帧的长度(bits),8×8表示前导码(Preamble+SFD)的长度,96bit相当于帧间隙占用的bits。
下面举例说明,假设端口速率为100M,发送数据帧的长度为64字节,那么线速发送报文换算成pps后,
N=100 000 000/(64×8+8×8+96)≈148810 pps
六、半双工、全双工、自协商
在10BASE5和10BASE2的总线型拓扑中,同一时刻只能有一个节点发送数据。随着10BASE-T和hub的出现,网络节点的连接变成了点到点的连接。在节点之间点到点连接中,同一节点同一时刻只能接收或发送数据,不能同时接收、发送数据。这种同一时刻只能接收或发送数据的工作模式为半双工模式。在半双工模式下,使用CSMA/CD的机制来避免冲突。
全双工模式下,同一时刻可以同时接收和发送数据帧。
自协商功能允许一个网络设备能够将自己所支持的工作模式信息传达给网络上的对端,并接收对方可能传递过来的相应信息。对于两端处于自协商工作方式的设备,最终协商的结果是采用二者技术能力域中优先级低的网口提供的工作方式工作。协商级别一般为1000Mfull,1000Mhalf,100Mfull,100Mhalf,10Mfull,10Mhalf。
10BASE-T的以太网接口(它只支持10M,不支持自协商)在链路UP之前会发送Link Test Pulse(LTP),该脉冲用以检测链路是否应该UP;而100BASE-T以太网接口(它只支持100M,不支持自协商)在链路UP之前会发送FAST ETHERNET IDLE流,用以检测链路是否应该UP。
支持自协商(Autonegotiation)的以太网接口则在链路UP之前发送FLP(Fast Link Pulse),FLP实际上是一组LTP和数据脉冲的组合,它们表明一种含义:例如我支持100M全双工。较旧的设备例如10BASE-T仍然将这些FLP识别为LTP,而自协商设备则能够识别FLP的含义并通过交互这种握手信息来使链路成为最优配置。如果自协商设备看到有一般的LTP(不是有特定含义的FLP)输入,它就将本端设置为10M半双工。如果自协商设备看到有FAST ETHERNET IDLE输入,它就将本端设置为100M半双工。以上所述的自协商机制只对10/100兆铜缆接口或千兆光/电口有效,100BASE-FX不支持自协商。
千兆自协商和10/100兆自协商使用同样的机制,1000BASE-LX和1000BASE-SX使用自协商机制来协商双工和流控。1000BASE-T设备的自协商还会包含附加域(例如是MASTER还是SLAVE)的协商。千兆设备几乎没有半双工的情况(虽然可以协商),所以很多双工的问题都不存在了。
七、流控
流控指当接收者没有能力处理接收到的报文时,为了防止丢包,接收者需要通知报文的发送者一段时间内停止发送报文。
对于半双工模式和全双工模式,流控通过不同的方式来实现。在全双工模式下,接收者通过发送一种特殊的数据帧来通知发送者,停止发送报文,这种特殊的数据帧称为PAUSE帧,下面是PAUSE帧的结构:
PAUSE帧的长度固定为64字节(包括CRC),PAUSE帧的目的MAC为组播MAC:0180-c200-0001,源MAC为发送PAUSE帧的节点的MAC,LENTH/TYPE字段固定为0x8808。MAC CONTROL PARAMETERS字段表示要求发送者暂停发送流量的时间,数值有效范围为0-65535, 单位为512bit time(bit time指链路上传输1bit需要的时间,如100M链路bit time为10ns)。如果数据报文的接收者在发送PAUSE帧后,在PAUSE帧发送的等待时间超时之前可以处理数据报文,则再发送一个等待时间为0的PAUSE帧通知数据发送者开始发送数据。
PAUSE的接收者(也是数据报文的发送者),收到PAUSE帧后会根据PAUSE帧中的等待时间停止发送报文,等待时间超时后继续发送报文。
半双工模式下,以太网利用CSMA/CD机制处理冲突和链路使用问题。根据CSMA/CD机制,半双工的模式下,采取的流控方式为Backpressure,即背压。该种方法有两种实现,一个是数据接收者有意制造一次冲突,数据发送者检测到冲突采取Backoff,这样就延缓了数据的发送;另外一个方法是制造载波信号,使数据发送者感觉到接收者要发送数据,从而通过检测到载波而进行延时传输。