哈工大计算网络课程局域网详解之:以太网概述
本节继续介绍局域网的相关知识,介绍一个最具有代表性的,也是现在在局域网中使用最广泛的一种有线局域网技术,就是以太网。
以太网(ETHERNET)
作为以太网,现在已经成为局域网技术中具有“统治地位”的有线LAN技术。以太网有以下几点优势:
- 造价低廉(一块以太网网卡不足百元)
- 应用最广泛的LAN技术
- 比令牌局域网和ATM等,简单、便宜。
- 满足网络速率要求:10Mbps-10Gbps
下面的示例图是以太网最初设计者Metcalfe绘画的这样一张以太网原理草图。在这张草图中可以看出来,以太网最初设计是通过一个共享的广播介质(黄色的线)来连接局域网中的所有主机。那时,把这种共享的广播介质称为以太,所以也把这种网络称为以太网。
早期的以太网设计几乎就参考了上面的原理图,进而实现的一种总线(bus)网络(上世纪90年代中期前流行)。
当时,使用总线形式的介质典型的就是使用同轴电缆。
在总线形式的以太网中,如下图所示,可以很明显的看出来,中间的广播介质是被所有结点在这个局域网中共享的。在这样一个形式下,任何一个结点发送数据,都有可能跟另一个结点发生冲突。因此,把这样一种场景也称为冲突域(collision domain)。
我们可以这种理解,所谓的冲突域,是指任何两个结点同时发送数据,就会产生冲突,这样的一个网路范围,就称之为一个冲突域。
后面我们会了解到,以太网使用的MAC协议就是CSMA/CD协议,因此有了冲突域的概念后,也可以说,CSMA/CD协议可以检测到的冲突范围就是一个冲突域。
在现在的以太网中,比较流行的是星型(star)网络拓扑结构。
利用交换机来连接不同的主机,从而构成星型拓扑结构的以太网。这样的以太网有时也被称为交换式以太网。
作为这种星型以太网,最大的优点在于,每个结点都是通过一个点对点的链路与中心交换机相连,此时,每个冲突域里只有一台主机,进而解决了传统意义上的冲突问题。
以太网:不可靠、无连接服务
作为以太网,在数据链路层提供的服务实际上是一种不可靠,无连接的服务。
无连接:
- 发送帧的网卡与接收帧的网卡间没有“握手”过程。
不可靠:
- 接收网卡不向发送网卡进行确认。
由于以太网主要应用于局域网范围内,所以数据差错的比例(误码率)实际上是比较低的。所以通常情况下,出错的可能性不大。如果出现了差错的数据帧,则会直接丢弃,丢弃帧中的数据恢复依靠高层协议(e.g. TCP),否则,发生数据丢失。
以太网在数据链路层使用的MAC协议,实际上采用的二进制指数退避算法的CSMA/CD协议。二进制指数退避算法是用来决定当出现冲突时,按照什么算法去计算一个随机的时间,等待该时间后,再次重新尝试数据帧的传输。
以太网CSMA/CD算法
接下来看一下以太网的CSMA/CD算法的实现过程。
-
以太网的CSMA/CD协议的具体算法是在网卡上完成的,因此当网卡接收到网络层的IP数据报时,会封装成一个数据帧。
-
监听信道:按照CSMA/CD协议来监听信道。
- 如果网卡监听到信道空闲,则开始发送数据帧。
- 如果网卡监听到信道忙,则一直等待到信道空闲,再发送数据帧。
-
网卡发送完整个帧,而没有检测到其他结点的数据发送,换句话说即没有检测到冲突(CSMA/CD协议是边发送数据帧边检测冲突的),则网卡确认该数据帧发送成功。
-
如果网卡在发送数据帧的过程中,检测到其他结点传输数据,即发生了冲突,则立即中止发送,并发送堵塞信号(jamsignal)。这个阻塞信号是为了加强信道的阻塞,可以让其他结点也更快的发现冲突。
-
中止发送后,网卡进入二进制指数退避算法来确定一个随机的等待时间,过程如下:
- 第m次连续冲突后,取n=Max(m, 10)。
- 网卡从{0,1,2, …, 2n-1}中随机选择一个数K。
- 网卡等待K*512比特的传输延迟时间,再返回第二步。
显然,按照二进制指数退避算法,如果连续冲突的次数越多,可能反映网络的阻塞情况比较严重,此时网卡的平均等待时间越长。
以太网帧结构
接下来继续观察一下以太网的帧结构。作为以太网的网卡,如果接收的是IP数据报(或其他网络层协议分组),会将其封装到以太网数据帧中。
下面的示例图就是以太网帧结构:
帧结构包含以下几个部分:
-
前导码(Preamble):8字节。其中前7个字节全部是10101010,第8字节是10101011。前导码的作为是为了发送端网卡和接收端网卡的时钟同步的。
-
目的MAC地址、源MAC地址(各6字节)。
- 如果网卡的MAC地址与收到的帧的目的MAC地址匹配,或者帧的目的MAC地址为广播地址(FF-FF-FF-FF-FF-FF),则网卡接收该帧,并将其封装的网络层分组交给相应的网络层协议。
- 否则,网卡丢弃(不接收)该帧。
-
类型(Type)(2字节)。
指示帧中封装的是哪种高层协议的分组(如,IP数据报,Novell IPX数据报、AppleTalk数据报等)。
-
数据(data)(46-1500字节)。
为什么数据部分要保证最小46字节?
因为以太网使用的是CSMA/CD协议,其最大的特点就是边发送数据帧边检测冲突,根据我们在CSMA/CD协议中介绍的公式:Lmin / R = RTTmax。在早期的10兆以太网中,R=10Mbps,数据帧往返的最大传输延迟RTTmax = 512μs,把这个数据带入上述公式中得到:最小以太网数据帧长度Lmin = 512bits=64B。64字节中再减去目的MAC地址、源MAC地址,两个12字节,和2字节的类型,4字节的CRC,就得到了数据部分的最小字节长度=64B - 18B = 46B。
-
CRC(4字节):循环冗余校验码。
因为以太网不提供可靠数据传输,因此,一定通过CRC娇艳发现出现差错时,就会简单丢弃掉该差错帧。
以太网标准
最后介绍下目前以太网标准。
作为以太网来说,事实上有很多标准,比如以802.3的百兆以太网为例,不同的标准在MAC协议和帧格式上是相同的。
主要的差别在于速率:2Mbps、10Mbps,100Mbps、1Gbps、10Gbps。
另一个差别在于不同介质:光纤、线缆。