什么是以太网?

以太网是由DIX(DEC-Intel-Xerox)联盟开发的标准。经过长期的发展,以太网已成为应用最为广泛的局域网。IEEE 802.3规范则是基于以太网的标准制定的,并与以太网标准相互兼容。

在TCP/IP中,以太网的IP数据报文的封装格式由RFC894定义,IEEE802.3网络的IP数据报文封装由RFC1042定义。当今最常使用的封装格式是RFC894定义的格式,通常称为Ethernet_II或者Ethernet DIX。

发展历史

早在1972年,Robert Metcalfe(被尊称为“以太网之父”)作为网络专家受雇于Xerox公司,当时他的第一个任务是把Xerox公司Palo Alto研究中心(PARC)的计算机连接到Arpanet(Internet的前身)。同年底,Robert Metcalfe设计了一套网络,把PARC的计算机连接起来。因为该网络是以ALOHA系统(一种无线电网络系统)为基础的,又连接了众多的Xerox公司Palo Alto研究中心的计算机,所以Metcalfe把它命名为ALTO ALOHA网络。ALTO ALOHA网络在1973年5月开始运行,Metcalfe把这个网络正式命名为以太网(Ethernet),这就是最初的以太网试验原型,该网络运行速率为2.94Mbps,网络运行的介质为粗同轴电缆。1976年6月,Metcalfe和他的助手David Boggs发表了一篇名为《以太网:区域计算机网络的分布式包交换技术》(Ethernet: Distributed Packet Switching for Local Computer Networks)的文章。1977年底,Metcalfe和他的三位合作者获得了“具有冲突检测的多点数据通信系统”("Multipoint data communication system with collision detection")的专利。从此,以太网就正式诞生了。

经过多年的技术发展,以太网是当前应用最普遍的局域网技术,它很大程度上取代了其他局域网标准。如令牌环、FDDI和ARCNET。历经100M以太网在上世纪末的飞速发展后,目前千兆以太网甚至10G以太网正在国际组织和领导企业的推动下不断拓展应用范围。

目的

以太网是当今现有局域网LAN(Local Area Network)采用的最通用的通信协议标准。该标准定义了在局域网中采用的电缆类型和信号处理方法。

以太网是建立在CSMA/CD机制上的广播型网络。冲突的产生是限制以太网性能的重要因素,早期的以太网设备如HUB是物理层设备,不能隔绝冲突扩散,限制了网络性能的提高。而交换机做为一种能隔绝冲突的二层网络设备,极大的提高了以太网的性能,并替代HUB成为主流的以太网设备。然而交换机对网络中的广播数据流量不做任何限制,这也影响了网络的性能。通过在交换机上划分VLAN和采用L3交换机可解决这一问题。

以太网作为一种原理简单,便于实现同时又价格低廉的局域网技术已经成为业界的主流。而更高性能的千兆以太网和万兆以太网的出现更使其成为最有前途的网络技术。

CSMA/CD

CSMA/CD的概念
根据以太网的最初设计目标,计算机和其他数字设备是通过一条共享的物理线路连接起来的。这样被连接的计算机和数字设备必须采用一种半双工的方式来访问该物理线路,而且还必须有一种冲突检测和避免的机制,以避免多个设备在同一时刻抢占线路的情况,这种机制就是所谓的CSMA/CD(Carrier Sense Multiple Access/Collision Detection)。
可以从以下三点来理解CSMA/CD:

CS:载波侦听
在发送数据之前进行侦听,以确保线路空闲,减少冲突的机会。

MA:多址访问
每个站点发送的数据,可以同时被多个站点接收。

CD:冲突检测
由于两个站点同时发送信号,信号叠加后,会使线路上电压的摆动值超过正常值一倍。据此可判断冲突的产生。
边发送边检测,发现冲突就停止发送,然后延迟一个随机时间之后继续发送。

CSMA/CD的工作过程
CSMA/CD的工作过程如下:

终端设备不停的检测共享线路的状态。

如果线路空闲则发送数据。

如果线路不空闲则一直等待。

2.如果有另外一个设备同时发送数据,两个设备发送的数据必然产生冲突,导致线路上的信号不稳定。终端设备检测到这种不稳定之后,马上停止发送自己的数据。

3.终端设备发送一连串干扰脉冲,然后等待一段时间之后再进行发送数据。

4.发送干扰脉冲的目的是为了通知其他设备,特别是跟自己在同一个时刻发送数据的设备,线路上已经产生了冲突。

5.检测到冲突后等待的时间是随机的。

最小帧长

由于CSMA/CD算法的限制,以太网帧必须不能小于某个最小长度。以太网中,最小帧长为64字节,这是由最大传输距离和冲突检测机制共同决定的。

规定最小帧长是为了避免这种情况发生:A站点已经将一个数据包的最后一个Bit发送完毕,但这个报文的第一个Bit还没有传送到距离很远的B站点。B站点认为线路空闲继续发送数据,导致冲突。

高层协议必须保证Data域至少包含46字节,这样加上以太网帧头的14字节和帧尾的4字节校验码正好满足64字节的最小帧长,如图所示。如果实际数据不足46个字节,则高层协议必须填充一些数据单元。

以太网的双工模式

以太网的物理层存在半双工和全双工两种模式。

当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据。
当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。
ETHERNET_SNAP帧可以用于传输多种协议。因此,SNAP可以被看作一种扩展,它允许厂商创建自己的以太网传输协议。
ETHERNET_SNAP标准由IEEE802.1委员会制定,以保证IEEE802.3局域网和以太网之间的互操作性。
DSAP和SSAP其他的取值均为纯IEEE802.3帧。
IEEE802.3的帧结构
半双工
半双工的工作模式:
任意时刻只能接收数据或者发送数据。
采用CSMA/CD机制。
有最大传输距离的限制。
HUB工作在半双工模式。
全双工
在有L2交换机取代了HUB组建以太网后,以太网由共享式转变为交换式。而且用全双工代替了半双工,传输数据帧的效率大大提高,最大吞吐量达到双倍速率。
全双工从根本上解决了以太网的冲突问题,以太网从此告别CSMA/CD。
全双工的工作模式:
同一时刻可以接收和发送数据。
最大吞吐量达双倍速率。
消除了半双工的物理距离限制。
当前制造的网卡、二层设备、三层设备都支持全双工模式,HUB除外。
实现全双工的硬件保证:
支持全双工的网卡芯片
收发线路完全分离的物理介质
点到点的连接
冲突域和广播域

冲突域

在传统的以粗同轴电缆为传输介质的以太网中,同一介质上的多个节点共享链路的带宽,争用链路的使用权,这样就会发生冲突,CSMA/CD机制中当冲突发生时,网络就要进行回退,这段回退的时间内链路上不传送任何数据。而且这种情况是不可避免的。同一介质上的节点越多,冲突发生的概率越大。这种连接在同一导线上的所有节点的集合就是一个冲突域。冲突域内所有节点竞争同一带宽,一个节点发出的报文(无论是单播、组播、广播)其余节点都可以收到。

广播域

因为网络中使用了广播,会占用带宽,降低设备的处理效率,必须对广播加以限制。比如ARP使用广播报文从IP地址来解析MAC地址。全1MAC地址FFFF-FFFF-FFFF为广播地址,所有节点都会处理目的地址为广播地址的数据帧。这种一个节点发送一个广播报文其余节点都能够收到的节点的集合,就是一个广播域。传统的网桥可以根据MAC表对单播报文进行转发,对于广播报文向所有的接口都转发,所以网桥的所有接口连接的节点属于一个广播域,但是每个接口属于一个单独冲突域。

以太网帧结构

 

字段

说明

DMAC

DMAC(Destination MAC)是目的地址。DMAC确定帧的接收者。

SMAC

SMAC(Source MAC)是源地址。SMAC字段标识发送帧的工作站。

Type

两字节的类型字段用于标识数据字段中包含的高层协议,也就是说,该字段告诉接收设备如何解析数据字段。

在以太网中,多种协议可以在局域网中同时共存。因此,在Ethernet_II的类型字段中设置相应的十六进制值提供了在局域网中支持多协议传输的机制。

类型字段取值为0800的帧代表IP协议帧。
类型字段取值为0806的帧代表ARP协议帧。
类型字段取值为8035的帧代表RARP协议帧。
类型字段取值为8137的帧代表IPX和SPX传输协议帧。
Data

数据字段的最小长度必须为46字节以保证帧长至少为64字节,这意味着传输一字节信息也必须使用46字节的数据字段。

如果填入该字段的信息少于46字节,该字段的其余部分也必须进行填充。

数据字段的最大长度为1500字节。

CRC

CRC(Cyclic Redundancy Check)循环冗余校验字段提供了一种错误检测机制。

每一个发送器都计算一个包括了地址字段、类型字段和数据字段的CRC码,然后将计算出的CRC码填入4字节的CRC字段。

IEEE802.3帧格式类似于Ethernet_II帧,只是Ethernet_II帧的Type域被802.3帧的Length域取代,并且占用了Data字段的8个字节作为LLC和SNAP字段。

字段

说明

Length

Length字段定义了Data字段包含的字节数。

LLC

LLC(Logical Link Control)由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成。

SNAP

SNAP(Sub-network Access Protocol)由机构代码(org code)和类型(Type)字段组成。org code三个字节都为0。Type字段的含义与Ethernet_II帧中的Type字段相同。

IEEE802.3帧根据DSAP和SSAP字段的取值又可分为以下几类:

当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据。
当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。
ETHERNET_SNAP帧可以用于传输多种协议。因此,SNAP可以被看作一种扩展,它允许厂商创建自己的以太网传输协议。
ETHERNET_SNAP标准由IEEE802.1委员会制定,以保证IEEE802.3局域网和以太网之间的互操作性。
DSAP和SSAP其他的取值均为纯IEEE802.3帧。
1、如何区分以太帧和802.3帧

以太网的IP数据报文的封装格式由RFC894定义,IEEE802.3网络的IP数据报文封装由RFC1042定义。IEEE 802.3规范则是基于以太网的标准制定的,并与以太网标准相互兼容。

以太网帧格式中,不包括length字段,data字段最少需要46字节,以满足以太网帧最少64字节的要求,最小帧长由最大传输距离和冲突检测机制共同决定。

802.3帧格式中,包括length字段,且将以太网帧中data字段的前8个字节作为LLC和SNAP字段。他们的共同特点是都包括8字节的源mac地址和目的mac地址地段,以及最后的crc校验字段,其中crc校验字段由于wincap的原因在wireshock中无法观察到。

源地址域后面2字节的值如小于1500(十六进制小于0600),就可认为是IEEE 802.3帧格式,否则为以太帧格式。

  2、什么协议用到802.3帧

在实际应用中,我们会发现,大多数应用的以太网数据包是Ethernet V2的帧(如HTTP、FTP、SMTP、POP3等应用),而交换机之间的BPDU(桥协议数据单元)数据包则是IEEE802.3的帧,VLAN Trunk协议如802.1Q等则是采用IEEE802.3 SNAP的帧。