计算机网络——数据链路层

数据链路层属于计算机网络的低层。数据链路层使用的信道主要有以下两种类型:

  1. 点对点信道
  2. 广播信道

本章最主要的内容是:

  1. 数据链路层的点对点信道和广播信道的特点,以及这两种信道所使用的协议的特点。
  2. 数据链路层的三个基本问题:封装成帧、透明传输和差错检测。
  3. 以太网MAC层的硬件地址。
  4. 适配器、转发器、集线器、网桥、以太网交换机的作用及使用场合。

下面看一下两台主机通过互联网进行通信时数据链路层所处的地位(图3-1)。

图3-1(a)表示用户主机Hi通过电话线上网,中间经过三个路由器(R1,R2和R3)连接
到远程主机H2。

所经过的网络可以是多种的,如电话网、局域网和广域网。当主机H1向
H2发送数据时,从协议的层次上看,数据的流动如图3-1(b)所示。主机H1和H2都有完整的
五层协议栈,但路由器在转发分组时使用的协议栈只有下面的三层。数据进入路由器后要
先从物理层上到网络层,在转发表中找到下一跳的地址后,再下到物理层转发出去。因此,
数据从主机H1传送到主机H2需要在路径中的各结点的协议栈向上和向下流动多次,如图中
的浅灰色箭头所示。
然而当我们专门研究数据链路层的问题时,在许多情况下我们可以只关心在协议栈中
水平方向的各数据链路层。于是,当主机Hi向主机H2发送数据时,我们可以想象数据就是
在数据链路层从左向右沿水平方向传送的,如图3-2中从左到右的粗箭头所示,即通过以下
这样的链路:

H1的链路层一R1的链路层一R2的链路层一R3的链路层一H2的链路层

使用点对点信道的数据链路层

数据链路和帧

链路和数据链路并不是一回事。

  • 链路就是从一个节点到相邻酒店的一段物理线路,而中间没有其他任何的交换结点。
  • 数据链路则是另一个该概念。这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须要有些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用网络适配器来实现这些协议。一般适配器都包括数据链路层和物理层着两层功能。

数据链路层的协议数据单元——帧

数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。在互联网中网络层协议数据单元就是IP数据报。

为了把主要精力放在点对点信道的数据链路层协议上,可以采用如图3-3(a)所示的三层模型。在这种三层模型中,不管在哪一段链路上的通信(主机和路由器之间或两个路由器之间),我们都看成是结点和结点的通信(如图中的结点A和B),而每个结点只有下三层一网络层、数据链路层和物理层。

image-20200611132031343

点对点信道的数据链路层在进行通信时的主要步骤如下:

  1. 节点A的数据链路层把网络层交下来的IP数据添加首部和尾部封装成帧。
  2. 节点A把封装好的帧发送给节点B的数据链路层。
  3. 若节点B的数据链路层收到的帧无差错,则从收到的帧中提取处IP数据报交给上面的网络层;否则丢弃这个帧。

三个基本问题

封装成帧

封装成帧就是在一段数据的前后分别添加首部和尾部,这样就形成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。

我们知道,分组交换的一个重要概念就是:所有在互联网上传送的数据都是以分组(即IP数据报)为传送单位。网络层的IP数据报传送到数据链路层就成为了帧的数据部分。在帧的数据部分的前面和后面分别加上首部和尾部,就成为了一个完整的帧。

一个帧的帧长等于帧的数据部分的长度,加上首部和尾部的长度。

首部和尾部的一个重要作于就是进行帧定界。此外,首部和尾部还有很多的控制信息。

在发送帧时,是从帧首部开始发送的。

每一种链路层协议都规定了所能传送的帧的数据部分长度的上限——最大传送单元MTU。

当数据是由可打印的ASCII码组成的文件时,帧定界可以使用特殊的帧定界符

控制字符SOH放在一帧的最前面,表示帧首部的开始。另一个控制字符EOT表示帧的结束请注意,SOH和EOT都是控制字符的名称。它们的十六进制编码分别是01和04。

在传送出现差错时,帧定界的作用就更加明显。假定发送端在尚未发送完一个帧突然出现故障,中断了发送。但随后又恢复了正常,于是重新从头开始发送刚才未发送完的帧。由于使用了帧定界符,接收端就知道前面收到的数据是个不完整的帧,必须丢弃。

透明传输

由于帧的开始和结束的标记使用专门指明的控制字符,因此,所有传输的数据中的任何8 比特的组合一定不允许和用作帧界定的控制字符的比特编码一样,否则就会出现帧界定的错误。

当传送的帧使用文本文件组成的帧时(文本文件上的字符都是从键盘上输入的),其数据部分显然不会出现像SOH和EOT这样的帧界定控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输

但当数据部分是非ASCII码的文本文件时,情况就不同了。如果数据中的某个字节的二进制码恰好和SOH和EOT这种控制字符一样,数据链路就会错误地“找到帧的边界”,把部分帧收下,而把剩下的部分数据丢弃。

前面提到的透明是一个非常重要的术语。它表示:某一个实际存在的事物看起来却好像不存在一样。

“在数据链路层透明传送数据”表示无论什么样的比特组合的数据,都能按照原样没有差错地通过这个数据链路层。可以说数据链路层对这些数据来说是透明的。

为了解决透明传输的问题,就必须去设法使数据中可能出现的控制字符“SOH”和“EOT”在接收端不被解释为控制字符。

具体方法是:发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制码是1B)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充或字符填充。如果转义字符也出现在数据中,那么就就在转义字符的前面再插入一个转义字符。因此,当接收端收到连续两个转义字符使,就删除其中前面的一个。

差错检测

下面我们通过一个简单的例子来说明循环冗余检验的原理。

在发送端,先把数据划分为组,假定每组k个比特。现假定待传送的数据M = 101001
(k= 6)。CRC运算就是在数据M的后面添加供差错检测用的n位冗余码,然后构成一个帧
发送出去,一共发送k+n位。在所要发送的数据后面增加n位的冗余码,虽然增大了数据
传输的开销,但却可以进行差错检测。当传输可能出现差错时,付出这种代价往往是很值得
的。

这n位冗余码可用以下方法得出。用二进制的模2运算进行2n乘M的运算,这相当
于在M后面添加n个0。得到的(k+n)位的数除以收发双方事先商定的长度为(n + 1)位的除
数P,得出商是Q而余数是R (n位,比P少一位)。关于除数P下面还要介绍。在图3-8
所示的例子中,M=101001 (即k = 6)。假定除数P=1101 (即n = 3)。经模2除法运算后
的结果是:商Q=110101 (这个商并没有什么用处),而余数R = 001。这个余数R就作为
冗余码拼接在数据M的后面发送出去。这种为了进行检错而添加的冗余码常称为帧检验序
列 FCS (Frame Check Sequence)。因此加上 FCS 后发送的帧是 101001001 (即 2nM + FCS),
共有(k + n)位。
顺便说一下,循环冗余检验CRC和帧检验序列FCS并不是同一个概念。CRC是一种
检错方法,而FCS是添加在数据后面的冗余码,在检错方法上可以选用CRC,但也可不选
用 CRC。

在接收端把接收到的数据以帧为单位进行CRC检测:把收到的每一个帧都除以同样的除数P,然后检查得到的余数R。

如果在传输的过程中无差错,那么经过CRC检验后得出的余数R肯定是0。

但如果出现误码,那么余数任然是0 的概率是非常小的。

在接收端对收到的每一帧进故宫CRC检测后,有以下两种情况:

  1. 若得出余数R = 0,则判定这个帧没有错,就Accept。
  2. 若余数R != 0,则判断这个帧有差错,就丢弃。

如果要在数据链路层进行差错检验,就必须把数据划分成帧,每一帧都加上冗余码,一帧一帧地传送,然后在接收方逐帧进行差错检验。

在数据链路层若仅仅同循环冗余检验CRC差错检测技术,则只能做到对帧的无差错接受,即“凡是接收端数据链路层接受的帧,我们都能以非常接近1的概率认为这些帧在传输过程中没有差错”。接收端丢弃的帧,虽然曾收到了,但因为有差错而被丢弃。

请注意,我们现在并没有要求数据链路层向网络层提供“可靠传输”的服务。

所谓“可靠传输”就是:数据链路层的发送端发送什么,在接收端就收到什么。

传输差错可分为两大类:一类是前面所说的比特差错,而另一类更复杂些,就是收到的帧并没有出现比特差错,而是出现了帧丢失、帧重复或帧失序

我们应当明确”无比特差错“与”无传输差错“并不是同样的概念。在数据链路层使用CRC检验,能够实现无比特差错的传输,但这并不是可靠传输。

过去OSI的观点是:必须要让数据链路层向上提供可靠传输。因此在CRC检错的基础上,增加了帧编号、确认和重传机制。但现在的通信线路的质量已经大大提高了,因此,现在互联网采用了区别对待的方法:

对于通信质量良好的传输链路,数据链路层的协议不使用确认和重传机制,即不要求数据链路层向上层提供可靠传输的服务。如果在数据链路层传输数据时出现了差错并且需要进行改正,那么改正差错的任务就有上层协议来完成。

实践证明,这样做可以提高通信效率。

点对点协议PPP

在通信链路质量较差的年代,在数据链路层使用可靠传输协议曾经是一种好办法。因此,当时数据链路层使用的协议是高级数据链路控制HDLC。现在使用的最广泛的是点对点协议PPP

PPP协议的特点

我们知道,互联网用户通常都要连接到某个ISP才能接入到互联网。PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。

image-20200611144045751

PPP协议应满足的需求

  1. 简单:简单的协议可使设计时不容易出错。
  2. 封装成帧:PPP协议必须规定特殊的字符作为帧定界符,以便使接收端从收到的比特流中能准确地找出帧开始和结束的位置。
  3. 透明性:PPP协议必须保证数据传输的透明性。
  4. 多种网络层协议:PPP协议必须能够在同一条物理链路上同时支持多种网络层协议的运行。
  5. 多种类型链路:PPP还需要能在多种类型的链路上运行。
  6. 差错检测:PPP协议必须能够对接收到的帧进行检测,并立即丢弃有差错的帧。
  7. 检测连接状态:PPP协议必须有一种机制能够及时自动检测链路是否处于正常工作状态。
  8. 最大传送单元:PPP协议必须对每一种类型的点对点链路设置最大传送单元MTU的默认标准值。这样做是为了促进各种实现之间的互操作性。
  9. 网络层地址协商:PPP协议必须能够提供一种机制使两个网络层的实体能够通过协商知道或能够配置彼此的网络层地址。
  10. 数据压缩协商:PPP协议必须提供一种方法来协商使用数据压缩算法。但PPP协议并不要求将数据压缩算法进行标准化。

在TCP/IP协议族中,可靠传输由运输层的TCP协议负责,因此数据链路层的PPP协议不需要进行纠错,不需要设置序号,也不需要进行流量控制。

PPP协议不支持多点线路,而知支持点对点线路。

PPP协议只支持全双工链路。

PPP协议的组成

PPP协议由三分组成部分

  1. 一个将IP数据报封装到串行链路的方法。IP数据报在PPP帧中就是其信息部分。这个信息部分的长度收最大传送单元MTU的限制。
  2. 一个用来建立、配置和测试数据链路连接的链路控制协议LCP
  3. 一套网络控制协议NCP,其中的每一个协议支持不同的网络层协议。

PPP协议的帧格式

各字段的意义

PPP的帧格式如图3-10所示。PPP帧的首部和尾部分别为四个字段和两个字段。首部的第一个字段和尾部的第二个字段都是标志字段F (Flag),规定为0x7E (符号“0x”表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是
01111110)o标志字段表示一个帧的开始或结束。因此标志字段就是PPP帧的定界符。连续
两帧之间只需要用一个标志字段。如果出现连续两个标志字段,就表示这是一个空帧,应当
丢弃。

image-20200611144410206

首部中的地址字段A规定为0xFF (即11111111),控制字段C规定为0x03 (即00000011)
。最初曾考虑以后再对这两个字段的值进行其他定义,但至今也没有给出。可见
这两个字段实际上并没有携带PPP帧的信息。

PPP首部的第四个字段是2字节的协议字段。当协议字段为0x0021时,PPP帧的信息
字段就是IP数据报。若为0xC021,则信息字段是PPP链路控制协议LCP的数据,而
0x8021表示这是网络层的控制数据。

信息字段的长度是可变的,不超过1500字节。

尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS。

字节填充

当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采用一些措施使这种形式上和标志字段一样的比特组合不会出现在信息字段中。

当PPP使用异步传输时,它把转义字符定义为0x7d,并使用字节填充,RFC1662规定了如下的填充方法:

  1. 把信息字段中出现的每一个0x7E字节转变成2字节序列(0x7D,0x5E)。
  2. 若信息字段中出现了一个0x7D的字节(即出现了和转义字符一样的比特组合),则把0x7D转变成2字节序列(0x7D,0x5D)。
  3. 若细腻些字段中出现ASCII码的控制字符,则在该字符前加入一个0x7D字节。例如,出现0x03就要把它转换为2字节序列(0x7D,0x23)。

在接收端收到数据后再进行与发送端字节填充相反的变换,就能正确地恢复原来的信息。

零比特填充

PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送)而不是异
步传输(逐个字符地传送)。在这种情况下,PPP协议釆用零比特填充方法来实现透明传
输。

零比特填充的具体做法是:在发送端,先扫描整个信息字段(通常用硬件实现,但也
可用软件实现,只是会慢些)。只要发现有5个连续1,则立即填入一个0。因此经过这种零
比特填充后的数据,就可以保证在信息字段中不会出现6个连续1。接收端在收到一个帧
时,先找到标志字段F以确定一个帧的边界,接着再用硬件对其中的比特流进行扫描。每
当发现5个连续1时,就把这5个连续1后的一个0删除,以还原成原来的信息比特流(图
3-11)0这样就保证了透明传输:在所传送的数据比特流中可以传送任意组合的比特流,而
不会引起对帧边界的错误判断。

image-20200611144745630

PPP协议的工作状态

当用户拨号接入ISP后,就建立了一条从用户个人电脑到ISP的物理连接。这时,用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),以便建立LCP连接。这些分组及其影响选择了将要使用的一些PPP参数。接着还要进行网络层配置,网络控制协议NCP给新接入的用户个人电脑分配了一个临时的IP地址。这样,用户的个人电脑就成为了互联网上的一个有IP地址的主机了。

当用户通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址。接着,LCP释放数据链路层连接。最后释放的是物理层的连接。

PPP链路的起始和终止状态永远是图3-12中的”链路静止“状态,这时在用户个人电脑和ISP的路由器之间不存在物理层的连接。

当用户个人电脑通过调制调节器呼叫路由器时,路由器就能检测到调制调节器发出的载波信号。在双发建立了物理层连接后,PPP就进入了”链路建立“状态,其目的是建立LCP连接。

这时LCP会开始协商一些配置选项,即发送LCP的配置请求帧。这是个PPP帧,其协议字设置为LCP对应的代码,而信息字段包含了特定的配置请求。链路的另一端可以发送以下几种响应中的一种:

  1. 配置确认帧:所有选项都接受。
  2. 配置否认帧:所有选项都理解,但不能接受。
  3. 配置拒绝帧:选项有的无法接受或不能接受,需要协商。

LCP配置选项包括链路上的最大帧长、所使用的鉴别协议的规约,以及不适用PPP帧中的地址和控制字段。

协商结束后双方就建立了LCP链路,接着进入了”鉴别“状态。在这一种状态,只允许传送LCP协议的分组、鉴别协议的分组以及检测链路质量的分组。

若使用口令鉴别协议PAP,则需要发起通信的乙方发送身份标识符和口令。系统可允许用户尝试若干次。

如果需要有更好的安全性,则可使用更加复杂的口令握手鉴别协议CHAP。若兼备身份失败,则转到”链路终止“状态;若鉴别成功,则进入”网络层协议“状态。

在”网络层协议“状态,PPP链路的两端的网络控制协议NCP根据网络层的不同协议互相交换网络层特定的网络控制分组。这个步骤很重要,因为现在的路由器可以同时支持多种网络层协议。总之,PPP协议两端的网络层可以运行不同的网络层协议,但任然可以使用同一个PPP协议进行通信。

如果在PPP链路上运行的是IP协议,则对PPP链路的每一端配置IP协议模块时就要使用NCP中支持IP的协议——IP控制协议IPCP。

IPCP分组也封装成帧在PPP链路上传送。在低速链路上运行时,双方还可以协商使用压缩的TCP和IP首部,以减少在链路上发送的比特数。

当网络层配置完成后,链路就进入以进行数据通信的”链路打开“状态。链路的两个PPP端点可以彼此向对方发送分组。两个PPP端点还可以发送回请求LCP分组和回送达LCP分组,以检测链路的状态。

数据传输结束后,可以由链路的一段发送出终止LCP分组请求终止链路连接,在收到对方发来的终止确认LCP分组,转到”链路终止“状态。如果链路出现故障,也可以从”链路打开“状态转到”链路终止”状态。当调制调节器的载波停止后,则回到“链路静止”状态。

图3-12右边的灰色方框给出了对PPP协议的几个状态的说明。

从设备间无链路开始,到先建立物理链路,再建立链路控制协议LCP链路。经过鉴别后再建立网络控制协议NCP链路,然后才能交换数据。

由此可见,PPP协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。

使用广播信道的数据链路层

广播信道可以进行一对多的通信。

局域网的数据链路层

局域网的最主要的特点是:网络为一个的单位所拥有,且地理范围和站点数目均有限

局域网具有如下的一些主要有优点:

  1. 具有广播功能,从一个站点可以很方便地访问全网。局域网上的主机可以共享连接在局域网上的各种硬件和软件资源。
  2. 便于系统的扩展和逐渐演变,各设备的位置可以灵活调整和改变。
  3. 提高了系统的可靠性、可用性和生存性。

局域网可按网络拓扑进行分类。图3-13(a)是星形网。由于集线器(hub)的出现和双绞线大量用于局域网中,星形以太网以及多级星形结构的以太网获得了非常广泛的应用。

图3-13(b)是环形网,图3-13(c)为总线网,各站直接连在总线上。总线两端的匹配电阻吸收在总线上传播的电磁波信号的能量,避免在总线上产生有害的电磁波反射。总线网以传统以太网最为著名。局域网经过了四十年的发展,尤其是在快速以太网(100 Mbit/s)和吉比特以太网(1 Gbit/s)、10吉比特以太网(10 Gbit/s)相继进入市场后,以太网已经在局域网市场中占据了绝对优势。现在以太网几乎成为了局域网的同义词,因此本章从本节开始都是讨论以太网技术。

image-20200611151451682

局域网可以使用多张传输媒体。双绞线最便宜。当数据率很高时,往往需要使用光纤作为传输媒体。

局域网工作的层次跨越了数据链路层和物理层。

共享信道要着重考虑的一个问题就是如何使众多用户能够合理而方便地共享通信媒体资源。这在技术上有两种方法:

  1. 静态划分通道:如之前提到的频分复用、时分复用、波分复用和码分复用等。用户只要分配到信道就不会和其他用户发生冲突。但这种信道划分的方法代价较高,不适合局域网使用。
  2. 动态媒体接入控制:又称为多点接入,其特点是信道并非在用户通信时固定分配给用户,这里又分为以下两种:
    • 随机接入:其特点是所有的用户可随基的发送信息。但如果恰巧有两个或更多的用户在同一时刻发送信息,那么在共享媒体山就要发生碰撞,使得这些用户的发送都要失败。因此,必须要有解决碰撞的网络协议。
    • 受控接入:其特点是用户不能随意地发送信息,必须服从一定的控制。

以太网的两个标准

1980年9月,DEC公司、英特尔公司和施乐公司联合提出了10Mbit/s以太网规约的第一个版本DIX V1,1982年又修改为第二版规约,即DIX Ethernet V2,成为世界上第一个局域网产品的规约。

在此基础上,IEEE 802委员会的802.3工作组于1983年制定了第一个IEEE的以太网标准IEEE 802.3,数据率为10Mbit/s。

为了更好地适应多种局域网标准,IEEE 802委员会把局域网的数据链路层拆成了两个子层,即逻辑链路控制LLC子层和媒体接入控制层MAC子层。

与接入到传输媒体有关的子层都放在MAC子层,而LLC子层则与传输媒体无关,不管采用何种传输媒体和MAC子层的局域网对LLC子层来说都是透明的。

适配器的作用

计算机与外界局域网的连接是通过通信适配器进行的。

在这种适配器上装有处理器和存储器。适配器和局域网之间的通信是通过电缆或双绞线以串行传输的方式进行,而适配器和计算机之间通信则是通过计算机主板上的I/O总线以并行传输方式进行的。

因此适配器的一个重要功能是进行数据串行传输和并行传输的转换。

由于网络上的数据率和计算机总线上的数据率并不相同,因此在适配器中必须装有对数据进行缓存的存储芯片。

适配器还要能实现以太网协议。

适配器在接受和发送各种帧时,不使用计算机的CPU。这时计算机的CPU可以处理其他任务。当适配器收到有差错的帧时,就把这个帧直接丢失而不必通知计算机。当适配器收到正确的帧时,就使用中断来通知计算机,并交付协议栈中的网络层。

当计算机要发送IP数据报时,就由协议栈把IP数据报向下发送给适配器,组装成帧后发送到局域网。

计算机的硬件地址就在适配器的ROM中,而计算机的软件地址——IP地址,则在计算机的存储器中。

CSMA/CD协议

最早的以太网是将许多计算机都连接到一根总线上。当初认为这种连接方法既简单又可靠,因为在那个时代普遍认为:“有源器件不可靠,而无源的电缆线才是最可靠的”。

总线的特点是:当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据。这种就是广播通信方式。但我们并不总是要在局域网上进行一对多的广播通信。

为了在总线上实现一对一的通信,可以使每一台计算机的适配器拥有一个与其他适配器都不同的地址。在发送数据帧时,在帧的首部写明接收站的地址。

现在的电子技术可以很容易做到:仅当数据帧中的目的地址与适配器ROM中存放的硬件地址一致时,该适配器才能接收这个数据帧。适配器对不是发送给自己的数据帧就丢弃。这样,具有广播特性的总线上就实现了一对一的通信。

为了通信的简便,以太网釆取了以下两种措施:

第一,采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据。

适配器对发送的数据帧不进行编号,也不要求对方发回确认。这样做可以使以太网工作起来非常简单,而局域网信道的质量很好,因通信质量不好产生差错的概率是很小的。

因此,以太网提供的服务是尽最大努力的交付,即不可靠的交付。

当目的站收到有差错的数据帧时(例如,用CRC査出有差错),就把帧丢弃,其他什么也不做。对有差错帧是否需要重传则由高层来决定。

例如,如果高层使用TCP协议,那么TCP就会发现丢失了一些数据。于是经过一定的时间后,TCP就把这些数据重新传递给以太网进行重传。但以太网并不知道这是重传幡,而是当作新的数据帧来发送。

我们知道,总线上只要有一台计算机在发送数据,总线的传输资源就被占用。因此,在同一时间只能允许一台计算机发送数据,否则各计算机之间就会互相干扰,使得所发送数据被破坏。因此,如何协调总线上各计算机的工作就是以太网要解决的一个重要问题。

以太网釆用最简单的随机接入,但有很好的协议用来减少冲突发生的概率。这好比有一屋子的人在开讨论会,没有会议主持人控制发言。想发言的随时可发言,不需要举手示意。但我们还必须有个协议来协调大家的发言。这就是:如果你听见有人在发言,那么你就必须等别人讲完了才能发言(否则就干扰了别人的发言)。但有时碰巧两个或更多的人同时发言了,那么一旦发现冲突,大家都必须立即停止发言,等听到没有人发言了你再发言。

以太网釆用的协调方法和上面的办法非常像,它使用的协议是CSMA/CD意思是载波监听多点接入/碰撞检测(Carrier Sense Multiple Access with Collision Detection).

第二,以太网发送的数据都使用曼彻斯特(Manchester)编码的信号。

我们知道,二进制基带数字信号通常就是高、低电压交替出现的信号。

使用这种信号的最大问题就是当出现一长串的连1或连0时,接收端就无法从收到的比特流中提取位同步(即比特同步)信号。

如图3-16所示,曼彻斯特编码的编码方法是把每一个码元再分成两个相等的间隔。码元1是前一个间隔为低电压而后一个间隔为高电压。码元0则正好相反,从高电压变到低电压(也可釆用相反的约定,即1是“前高后低"而0是“前低后高”)。

这样就保证了在每一个码元的正中间出现一次电压的转换,而接收端就利用这种电压的转换很方便地把位同步信号提取出来。

但是从曼彻斯特编码的波形图也不难看出其缺点,这就是它所占的频带宽度比原始的基带信号增加了一倍(因为每秒传送的码元数加倍了)。

下面介绍CSMA/CD协议的要点

多接入点”就是说明这是总线型网络,许多计算机以多接入点的方式连接在一根总线上。协议的实质是“载波监听”和“碰撞检测”。

载波监听”就是用电子信息技术检测总线上有没有其他计算机也在发送。载波监听就是检测信道。不管是在发送前,还是在发送中,每个站都必须不停地检测信道。

在发送前检测信道,是为了获得发送权。如果检测出已经有其他站在发送,则自己就暂时不发送数据,必须等到信道变为空闲时才能发送。

在发送中检测信道,是为了及时发现有没有其他站的发哦是那个和本站的发送碰撞。这就是碰撞检测。

碰撞检测”也就是边发送边检测,即适配器边发送数据边检测信道上的信号电压的变化情况,以便检测自己在发送数据时其他站是否也在发送数据。

当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会变大(互相叠加)。当适配器检测到的信号电压变化幅度超过一定的门限值时,就认为总线上至少有两个站在同时发送数据,表明产生了碰撞。

所谓“碰撞”就是发生了冲突。因此“碰撞检测”也成为“冲突检测”。这时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。

因此,任何一个正在发送数据的站,一旦发现总线上出现了碰撞,其适配器就要立即停止发送,免得继续进行无效发送,白白浪费网络资源,然后一段等等待时间后再次发送。

既然每一个站在发送数据之前已经监听到信道为“空闲",那么为什么还会出现数据在总线上的碰撞呢?这是因为电磁波在总线上总是以有限的速率传播的。

这和我们开讨论会时相似。一听见会场安静,我们就立即发言,但偶尔也会发生几个人同时抢着发言而产生冲突的情况。

图3-17所示的例子可以说明这种情况。

设图中的局域网两端的站A和B相距1km,用同轴电缆相连。电磁波在1 km电缆的传播时延约为5 us (这个数字应当记住)。因此,A向B发出的数据,在约5 us后才能传送到B。换言之,B若在A发送的数据到达B之前发送自己的帧(因为这时B的载波监听检测不到A所发送的信息),则必然要在某个时间和A发送的帧发生碰撞。碰撞的结果是两个帧都变得无用。

在局域网的分析中,发送数据的站希望尽早知道是否发生了碰撞。那么A发送数据后,最迟要经过多长时间才能知道自己发送的数据和其他站发送的数据有没有发生碰撞?

从图3-17不难看出,这个时间最多是两倍的总线端到端的传播时延,或总线的端到端往返传播时延。由于局域网上任意两个站之间的传播时延有长有短,因此局域网必须按最坏情况设计,即取总线两端的两个站之间的传播时延(这两个站之间的距离最大)为端到端传播时延。

显然,在使用CSMA/CD协议时,一个站不可能同时发送和接收(但必须边发送边监听信道)。因此使用CSMA/CD协议的以太网不可能进行全双工信道,而只能进行双向交替信道。

下面是在图3-17中的一些重要的时刻。

在t = 0时,A发送数据,B检测到信道时空闲。

由此可见,每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。这一小段时间是不确定的,它取决于另一个发送数据的站到本站的距离。因此,以太网不能保证某一时间之内一定能够把自己的数据帧成功地发送出去(因为存在产生碰撞的可能)。

以太网的这一特点称为发送的不确定性。如果希望在以太网上发生碰撞的机会很小,必须使整个以太网的平均通信量远小于以太网的最高数据率。

我们还应注意到,适配器每发送一个新的帧,就要执行一次CSMA/CD算法。

适配器对过去发生过碰撞并无记忆功能。因此,当好几个适配器正在执行指数退避算法时,很可能有某一个适配器发送的新帧能够碰巧立即成功地插入到信道中,得到了发送权,而己经推迟好几次发送的站,有可能很不巧,还要继续执行退避算法,继续等待。

现在考虑一种情况。某个站发送了一个很短的帧,但在发送完毕之前并没有检测出碰撞。假定这个帧在继续向前传播到达目的站之前和别的站发送的帧发生了碰撞,因而目的站将收到有差错的帧(当然会把它丢弃)。可是发送站却不知道这个帧发生了碰撞,因而不会重传这个帧。

这种情况显然是我们所不希望的。为了避免发生这种情况,以太网规定了一个最短帧长64字节,即512 bit。如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于64字节。对于10 Mbit/s以太网,发送512 bit的时间需要51.2 us,也就是上面提到的争用期。

下面介绍强化碰撞的概念。这就是当发送数据的站一旦发现发生了碰撞时,除了立即停止发送数据外,还要再继续发送32比特或48比特的人为干扰信号(jamming signal),以便让所有用户都知道现在已经发生了碰撞(图3-18)。对于10 Mbit/s以太网,发送32 (或48)比特只需要3.2 (或4.8)us。

以太网还规定了帧间最小间隔为9.6 us,相当于96比特时间。这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。

根据以上所讨论的,可以把CSMA/CD协议的要点归纳如下:

  1. 准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中。但在发送之前,必须先检测信道。
  2. 检测信道:若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在96比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧。
  3. 在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:
    • 发送成功:在争用期内一直未检测到碰撞。这个帧肯定能够发送成功。发送完毕后,其他什么也不做。然后回到(1)。
    • 发送失败:在争用期内检测到碰撞。这时立即停止发送数据,并按规定发送人为干扰信号。适配器接着就执行指数退避算法,等待r倍512比特时间后,返回到步骤(2),继续检测信道。但若重传达16次仍不能成功,则停止重传而向上报错。

以太网每发送完一帧,一定要把己发送的帧暂时保留一下。如果在争用期内检测出发生了碰撞,那么还要在推迟一段时间后再把这个暂时保留的帧重传一次。

使用集线器的星型拓扑

传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。

这种以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器(hub),如图3-19所示。双绞线以太网总是和集线器配合使用的。

每个站需要用两对无屏蔽双绞线(放在一根电缆内),分别用于发送和接收。双绞线的两端使用RJ-V5插头。由于集线器使用了大规模集成电路芯片,因此集线器的可靠性就大大提高了。

1990年IEEE制定出星形以太网10BASE-T的标准802.3i。“10"代表10Mbit/s的数据率,BASE表示连接线上的信号是基带信号,T代表双绞线。实践证明,这比使用具有大量机械接头的无源电缆要可靠得多。

由于使用双绞线电缆的以太网价格便宜和使用方便,因此粗缆和细缆以太网现在都己成为历史,并己从市场上消失了。

但10BASE-T以太网的通信距离稍短,每个站到集线器的距髙不超过100 mo这种性价比很高的10BASE-T双绞线以太网的出现,是局域网发展史上的一个非常重要的里程碑,从此以太网的拓扑就从总线型变为更加方便的星形网络,而以太网也就在局域网中占据了统治地位。

使双绞线能够传送高速数据的主要措施是把双绞线的绞合度做得非常精确。这样不仅可使特性阻抗均匀以减少失真,而且大大减少了电磁波辐射和无线电频率的干扰。在多对双绞线的电缆中,还要使用更加复杂的绞合方法。

集线器的一些特点如下:

  1. 从表面上看,使用集线器的局域网在物理上是一个星形网,但由于集线器使用电子器件来模拟实际电缆线的工作,因此整个系统仍像一个传统以太网那样运行。也就是说,使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议(更具体些说,是各站中的适配器执行CSMA/CD协议)。网络中的各站必须竞争对传输媒体的控制,并且在同一时刻至多只允许一个站发送数据。

  2. 一个集线器有许多接口,例如8至16个,每个接口通过RJ-45插头(与电话机使用的插头RJ-11相似,但略大一些)用两对双绞线与一台计算机上的适配器相连(这种插座可连接4对双绞线,实际上只用2对,即发送和接收各使用一对双绞线)。因此,一个集线器很像一个多接口的转发器。

  3. 集线器工作在物理层,它的每个接口仅仅简单地转发比特——收到1就转发1,收到0就转发0,不进行碰撞检测。若两个接口同时有信号输入(即发生碰撞),那么所有的接口都将收不到正确的帧。图3-20是具有三个接口的集线器的示意图。

  4. 集线器釆用了专门的芯片,进行自适应串音回波抵消。这样就可使接口转发出去的较强信号不致对该接口接收到的较弱信号产生干扰(这种干扰即近端串音)。每个比特在转发之前还要进行再生整形并重新定时。

集线器本身必须非常可靠。现在的堆叠式(stackable)集线器由4~8个集线器堆叠起来使用。集线器一般都有少量的容错能力和网络管理功能。

例如,假定在以太网中有一个适配器出了故障,不停地发送以太网帧。这时,集线器可以检测到这个问题,在内部断开与出故障的适配器的连线,使整个以太网仍然能够正常工作。

模块化的机箱式智能集线器有很高的可靠性。它全部的网络功能都以模块方式实现。各模块均可进行热插拔,出故障时不断电即可更换或增加新模块。集线器上的指示灯还可显示网络上的故障情况,给网络的管理带来了很大的方便。

以太网的信道利用率

下面我们讨论一下以太网的信道利用率。

假定一个10 Mbit/s以太网同时有10个站在工作,那么每一个站所能发送数据的平均速率似乎应当是总数据率的1/10 (即IMbit/s)。其实不然,因为多个站在以太网上同时工作就可能会发生碰撞。当发生碰撞时,信道资源实际上是被浪费了。因此,当扣除碰撞所造成的信道损失后,以太网总的信道利用率并不能达到100%。

图3-21的例子是以太网的信道被占用的情况。一个站在发送帧时出现了碰撞。经过一个争用期2r后(r是以太网单程端到端传播时延),可能又出现了碰撞。这样经过若干个争用期后,一个站发送成功了。假定发送帧需要的时间是T0它等于帧长(bit)除以发送速率(10Mbit/s)。

我们应当注意到,成功发送一个帧需要占用信道的时间是T0+r,比这个帧的发送时间要多一个单程端到端时延兴这是因为当一个站发送完最后一个比特时,这个比特还要在以太网上传播。

在最极端的情况下,发送站在传输媒体的一端,而比特在媒体上传输到另一端所需的时间是r。因此,必须在经过时间T0 + r而以太网的媒体才完全进入空闲状态,才能允许其他站发送数据。

以太网的MAC层

MAC层的硬件地址

在局域网中,硬件地址又称为物理地址或MAC地址。

在制定局域网的地址标准时,首先遇到的问题就是应当用多少位来表示一个网络的地址字段。为了减少不必要的开销,地址字段的长度应当尽可能地短些。起初人们觉得用两个字节(共16位)表示地址就够了,因为这一共可表示6万多个地址。但是,由于局域网的迅速发展,而处在不同地点的局域网之间又经常需要交换信息,这就希望在各地的局域网中的站具有互不相同的物理地址。

为了使用户在买到适配器并把机器连到局域网后马上就能工作,而不需要等待网络管理员给他先分配一个地址,IEEE 802标准规定MAC地址字段可釆用6字节(48位)或2字节(16位)这两种中的一种。6字节地址字段对局部范围内使用的局域网的确是太长了,但是由于6字节的地址字段可使全世界所有的局域网适配器都具有不相同的地址,因此现在的局域网适配器实际上使用的都是6字节MAC地址。

现在IEEE的注册管理机构RA (Registration Authority)是局域网全球地址的法定管理机构,它负责分配地址字段的6个字节中的前三个字节(即高位24位)。

世界上凡要生产局域网适配器的厂家都必须向IEEE购买由这三个字节构成的这个号(即地址块),这个号的正式名称是组织唯一标识符OUI (Organizationally Unique Identifier),通常也叫做公司标识符(company_id) 。

例如,3Com公司生产的适配器的MAC地址的前三个字节是02-60-8C。地址字段中的后三个字节(即低位24位)则由厂家自行指派,称为扩展标识符(extended identifier),只要保证生产出的适配器没有重复地址即可。

可见用一个地址块可以生成224个不同的地址

用这种方式得到的48位地址称为EUI-48,这里EUI表示扩展的唯一标识符(Extended Unique Identifier)。

EUI-48的使用范围并不局限于局域网的硬件地址,而是可以用于软件接口。

但应注意,24位的OUI不能够单独用来标志一个公司,因为一个公司可能有几个OUI也可能有几个小公司合起来购买一个OUI,在生产适配器时,这种6字节的MAC地址已被固化在适配器的ROM中。

因此,MAC地址也叫做硬件地址(hardware address)或物理地址。可见“MAC地址"实际上就是适配器地址或适配器标识符EUP48。当这块适配器插入(或嵌入)到某台计算机后,适配器上的标识符EUI-48就成为这台计算机的MAC地址了。

这样,在全球管理时,对每一个站的地址可用46位的二进制数字来表示(最低位和最低第2位均为0时)。剩下的46位组成的地址空间可以有246个地址,已经超过70万亿个,可保证世界上的每一个适配器都可有一个唯一的地址。当然,非无限大的地址空间总有用完的时候。但据测算,到2020年以前还不需要考虑MAC地址耗尽的问题。

当路由器通过适配器连接到局域网时,适配器上的硬件地址就用来标志路由器的某个接口。路由器如果同时连接到两个网络上,那么它就需要两个适配器和两个硬件地址。

我们知道适配器有过滤功能。但适配器从网络上每收到一个MAC帧就先用硬件检査MAC帧中的目的地址。

如果是发往本站的帧则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他的处理。

这样做就不浪费主机的处理机和内存资源。这里“发往本站的帧”包括以下三种帧:

  1. 单播(unicast)帧(一对一),即收到的帧的MAC地址与本站的硬件地址相同。
  2. 广播(broadcast)帧(一对全体),即发送给本局域网上所有站点的帧(全1地址)。
  3. 多播(multicast)帧(一对多),即发送给本局域网上一部分站点的帧。

所有的适配器都至少应当能够识别前两种帧,即能够识别单播和广播地址。有的适配器可用编程方法识别多播地址。当操作系统启动时,它就把适配器初始化,使适配器能够识别某些多播地址。显然,只有目的地址才能使用广播地址和多播地址。

MAC帧的格式

常用的以太网MAC帧格式有两种标准,一种是DIX Ethernet V2标准(即以太网V2标准),另一种是IEEE的802.3标准。这里只介绍使用得最多的以太网V2的MAC帧格式(图3-22)。图中假定网络层使用的是IP协议。实际上使用其他的协议也是可以的。

以太网V2的MAC帧较为简单,由五个字段组成。

前两个字段分别为6字节长的目的地址和源地址字段。第三个字段是2字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。

例如,当类型字段的值是0x0800时,就表示上层使用的是IP数据报。若类型字段的值为0x8137,则表示该帧是由Novell IPX发过来的。

第四个字段是数据字段,其长度在46到1500字节之间(46字节是这样得出的:最小长度64字节减去18字节的首部和尾部就得出数据字段的最小长度)。

最后一个字段是4字节的帧检验序列FCS (使用CRC检验)。当传输媒体的误码率为1 x 10-8时,MAC子层可使未检测到的差错小于1 x I0-14

这里我们要指出,在以太网V2的MAC帧格式中,其首部并没有一个帧长度(或数据长度)字段。那么,MAC子层又怎样知道从接收到的以太网帧中取出多少字节的数据交付上一层协议呢?

我们在前面讲述图3-16的曼彻斯特编码时已经讲过,这种曼彻斯特编码的一个重要特点就是:在曼彻斯特编码的每一个码元(不管码元是1或0)的正中间一定有一次电压的转换(从高到低或从低到高)。

当发送方把一个以太网帧发送完毕后,就不再发送其他码元了(既不发送1,也不发送0)。因此,发送方网络适配器的接口上的电压也就不再变化了。这样,接收方就可以很容易地找到以太网帧的结束位置。在这个位置往前数4字节(FCS字段长度是4字节),就能确定数据字段的结束位置。

当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面加入一个整数字节的填充字段,以保证以太网的MAC帧长不小于64字节。

我们应当注意到,MAC帧的首部并没有指出数据字段的长度是多少。在有填充字段的情况下,接收端的MAC子层在剥去首部和尾部后就把数据字段和填充字段一起交给上层协议。

现在的问题是:上层协议如何知道填充字段的长度呢?(IP层应当丢弃没有用处的填充字段。)可见,上层协议必须具有识别有效的数据字段长度的功能。我们知道,当上层使用IP协议时,其首部就有一个“总长度”字段。因此,“总长度”加上填充字段的长度,应当等于MAC帧数据字段的长度

例如,当IP数据报的总长度为42字节时,填充字段共有4字节。当MAC帧把46字节的数据上交给IP层后,IP层就把其中最后4字节的填充字段丢弃。

从图3-22可看出,在传输媒体上实际传送的要比MAC帧还多8个字节。

这是因为当一个站在刚开始接收MAC帧时,由于适配器的时钟尚未与到达的比特流达成同步,因此MAC帧的最前面的若干位就无法接收,结果使整个的MAC成为无用的帧。

为了接收端迅速实现位同步,从MAC子层向下传到物理层时还要在帧的前面插入8字节(由硬件生成),它由两个字段构成

第一个字段是7个字节的前同步码(1和0交替码),它的作用是使接收端的适配器在接收MAC帧时能够迅速调整其时钟频率,使它和发送端的时钟同步,也就是“实现位同步”(位同步就是比特同步的意思)。

第二个字段是帧开始定界符,定义为10101011。它的前六位的作用和前同步码一样,最后的两个连续的1就是告诉接收端适配器:“MAC帧的信息马上就要来了,请适配器注意接收二MAC帧的FCS字段的检验范围不包括前同步码和帧开始定界符。

顺便指出,在使用SONET/SDH进行同步传输时则不需要用前同步码,因为在同步传输时收发双方的位同步总是一直保持着的。

还需注意,在以太网上传送数据时是以帧为单位传送的。以太网在传送帧时,各帧之间还必须有一定的间隙。

因此,接收端只要找到帧开始定界符,其后面的连续到达的比特流就都属于同一个MAC帧。可见以太网不需要使用帧结束定界符,也不需要使用字节插入来保证透明传输。

IEEE 802.3标准规定凡出现下列情况之一的即为无效的MAC帧

  1. 帧的长度不是整数个字节
  2. 用收到的帧检验序列FCS査出有差错
  3. 收到的帧的MAC客户数据字段的长度不在46〜1500字节之间。考虑到MAC帧首部和尾部的长度共有18字节,可以得出有效的MAC帧长度为64~ 1518字节之间。

对于检査出的无效MAC帧就简单地丢弃。以太网不负责重传丢弃的帧。

最后要提一下,IEEE 802.3标准规定的MAC帧格式与上面所讲的以太网V2 MAC帧格式的区别就是两个地方。

第一,IEEE 802.3规定的MAC帧的第三个字段是“长度/类型当这个字段值大于0x0600时(相当于十进制的1536),就表示“类型”。这样的帧和以太网V2 MAC帧完全一样。只有当这个字段值小于0x0600时才表示“长度”,即MAC帧的数据部分长度。显然,在这种情况下,若数据字段的长度与长度字段的值不一致,则该帧为无效的MAC帧。实际上,前面我们己经讲过,由于以太网釆用了曼彻斯特编码,长度字段并无实际意义。

第二,当“长度/类型"字段值小于0x0600时,数据字段必须装入上面的逻辑链路控制LLC子层的LLC帧。由于现在广泛使用的局域网只有以太网,因此LLC帧已经失去了原来的意义(见本章3.3.1节第1小节“以太网的两个标准”)。现在市场上流行的都是以太网V2的MAC帧,但大家也常常把它称为IEEE 802.3标准的MAC帧。

拓展的以太网

在许多情况下,我们希望对以太网的覆盖范围进行扩展。本节先讨论在物理层对以太网扩展,然后讨论在数据链路层对以太网扩展。这种扩展的以太网在网络层看来仍然是一个网络。

在物理层拓展以太网

以太网上的主机之间的距离不能太远(例如,10BASE-T以太网的两台主机之间的距离不超过200米),否则主机发送的信号经过铜线的传输就会衰减到使CSMA/CD协议无法正常工作。在过去广泛使用粗缆或细缆以太网时,常使用工作在物理层的转发器来扩展以太网的地理覆盖范围。那时,两个网段可用一个转发器连接起来。IEEE 802.3标准还规定,任意两个站之间最多可以经过三个电缆网段。

但随着双绞线以太网成为以太网的主流类型,扩展以太网的覆盖范围已很少使用转发器了。

现在,扩展主机和集线器之间的距离的一种简单方法就是使用光纤(通常是一对光纤)和一对光纤调制解调器,如图3-23所示。

光纤调制解调器的作用就是进行电信号和光信号的转换。由于光纤带来的时延很小,并且带宽很宽,因此使用这种方法可以很容易地使主机和几公里以外的集线器相连接。如果使用多个集线器,就可以连接成覆盖更大范围的多级星形结构的以太网。

例如,一个学院的三个系各有一个10BASE-T以太网(图3-24(a)),可通过一个主干集线器把各系的以太网连接起来,成为一个更大的以太网(图3-24(b))。

这样做可以有以下两个好处。

  • 第一,使这个学院不同系的以太网上的计算机能够进行跨系的通信。
  • 第二,扩大了以太网覆盖的地理范围。

例如,在一个系的10BASE-T以太网中,主机与集线器的最大距离是100 m,因而两台主机之间的最大距离是200 m。但在通过主干集线器相连接后,不同系的主机之间的距离就可扩展了,因为集线器之间的距离可以是100 m (使用双绞线)或甚至更远(如使用光纤)。

但这种多级结构的集线器以太网也带来了一些缺点。

  1. 如图3-24(a)所示的例子,在三个系的以太网互连起来之前,每一个系的10BASE-T以太网是一个独立的碰撞域(collision domain,又称为冲突域),即在任一时刻,在每一个碰撞域中只能有一个站在发送数据。每一个系的以太网的最大吞吐量是10 Mbit/s,因此三个系总的最大吞吐量共有30 Mbit/s。在三个系的以太网通过集线器互连起来后就把三个碰撞域变成一个碰撞域(范围扩大到三个系),如图3-24(b)所示,而这时的最大吞吐量仍然是一个系的吞吐量10 Mbit/s。这就是说,当某个系的两个站在通信时所传送的数据会通过所有的集线器进行转发,使得其他系的内部在这时都不能通信(一发送数据就会碰撞)。
  2. 如果不同的系使用不同的以太网技术(如数据率不同),那么就不可能用集线器将它们互连起来。如果在图3-24中,一个系使用10 Mbit/s的适配器,而另外两个系使用10/100 Mbit/s的适配器,那么用集线器连接起来后,大家都只能工作在10 Mbit/s的速率。集线器基本上是个多接口(即多端口)的转发器,它并不能把帧进行缓存。

在数据链路层拓展以太网

扩展以太网更常用的方法是在数据链路层进行

最初人们使用的是网桥(bridge)。网桥对收到的帧根据其MAC帧的目的地址进行转发和过滤。、

当网桥收到一个帧时,并不是向所有的接口转发此帧,而是根据此帧的目的MAC地址,査找网桥中的地址表,然后确定将该帧转发到哪一个接口,或者是把它丢弃(即过滤)。

1990年问世的交换式集线器(switching hub),很快就淘汰了网桥。交换式集线器常称为以太网交换机(switch)或第二层交换机(L2 switch),强调这种交换机工作在数据链路层。

以太网交换机的特点

以太网交换机实质上就是一个多接口的网桥,通常都有十几个或更多的接口,和工作在物理层的转发器、集线器有很大的差别。

以太网交换机的每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式

以太网交换机还具有并行性,即能同时连通多对接口,使多对主机能同时通信(而网桥只能一次分析和转发一个帧)。相互通信的主机都是独占传输媒体,无碰撞地传输数据。

以太网交换机的接口还有存储器,能在输出端口繁忙时把到来的帧进行缓存。

因此,如果连接在以太网交换机上的两台主机,同时向另一台主机发送帧,那么当这台主机的接口繁忙时,发送帧的这两台主机的接口会把收到的帧暂存一下,以后再发送出去。

以太网交换机是一种即插即用设备,其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。

以太网交换机由于使用了专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多。

对于传统的10 Mbit/s的共享式以太网,若共有10个用户,则每个用户占有的平均带宽只有1 Mbit/s。若使用以太网交换机来连接这些主机,虽然在每个接口到主机的带宽还是10Mbit/s,但由于一个用户在通信时是独占而不是和其他网络用户共享传输媒体的带宽,因此对于拥有10个接口的交换机的总容量则为l00Mbit/s。这正是交换机的最大优点。

从共享总线以太网转到交换式以太网时,所有接入设备的软件和硬件、适配器等都不需要作任何改动。

以太网交换机一般都具有多种速率的接口,方便了各种不同情况的用户。

虽然许多以太网交换机对收到的帧采用存储转发方式进行转发,但也有一些交换机釆用直通(cut-through)的交换方式。

直通交换不必把整个数据帧先缓存后再进行处理,而是在接收数据帧的同时就立即按数据帧的目的MAC地址决定该帧的转发接口,因而提高了帧的转发速度。

如果在这种交换机的内部采用基于硬件的交叉矩阵,交换时延就非常小。

直通交换的一个缺点是它不检査差错就直接将帧转发出去,因此有可能也将一些无效帧转发给其他的站。

在某些情况下,仍需要釆用基于软件的存储转发方式进行交换,例如,当需要进行线路速率匹配、协议转换或差错检测时。

现在有的厂商已生产出能支持两种交换方式的以太网交换机。以太网交换机的发展与建筑物结构化布线系统的普及应用密切相关。在结构化布线系统中,广泛地使用了以太网交换机。

以太网交换机的自学习功能

假定在图3-25中的以太网交换机有4个接口,各连接一台计算机,其MAC地址分别是A, B, C和D。在一开始,以太网交换机里面的交换表是空的(图3-25(a))。

A先向B发送一帧,从接口 1进入到交换机。

交换机收到帧后,先査找交换表,没有査到应从哪个接口转发这个帧(在MAC地址这一列中,找不到目的地址为B的项目)。

接着,交换机把这个帧的源地址A和接口 1写入交换表中,并向除接口 1以外的所有接口广播这个帧(这个帧就是从接口 1进来的,当然不应当把它再从接口 1转发出去)。

C和D将丢弃这个帧,因为目的地址不对。只B才收下这个目的地址正确的帧。这也称为过滤

从新写入交换表的项目(A, 1)可以看出,以后不管从哪一个接口收到帧,只要其目的地址是A,就应当把收到的帧从接口 1转发岀去。

这样做的依据是:既然A发出的帧是从接口 1进入到交换机的,那么从交换机的接口 1转发出的帧也应当可以到达A。

假定接下来B通过接口3向A发送一帧。

交换机査找交换表,发现交换表中的MAC地址有A。表明要发送给A的帧(即目的地址为A的帧)应从接口 1转发。于是就把这个帧传送到接口 1转发给A。

显然,现在己经没有必要再广播收到的帧。交换表这时新增加的项目(B, 3),表明今后如有发送给B的帧,就应当从接口3转发出去。

经过一段时间后,只要主机C和D也向其他主机发送帧,以太网交换机中的交换表就会把转发到C或D应当经过的接口号(2或4)写入到交换表中。

这样,交换表中的项目就齐全了。要转发给任何一台主机的帧,都能够很快地在交换表中找到相应的转发接口。

考虑到有时可能要在交换机的接口更换主机,或者主机要更换其网络适配器,这就需要更改交换表中的项目。

为此,在交换表中每个项目都设有一定的有效时间。过期的项目就自动被删除。用这样的方法保证交换表中的数据都符合当前网络的实际状况。

以太网交换机的这种自学习方法使得以太网交换机能够即插即用,不必人工进行配置,因此非常方便。

但有时为了增加网络的可靠性,在使用以太网交换机组网时,往往会增加一些冗余的链路。在这种情况下,自学习的过程就可能导致以太网帧在网络的某个环路中无限制地兜圈子。我们用图3-26的简单例子来说明这个问题。

在图3-26中,假定一开始主机A通过接口交换机#1向主机B发送一帧。交换机#1收到这个帧后就向所有其他接口进行广播发送。

现观察其中一个帧的走向:离开交换机#1的接口 3-交换机#2的接口 1-接口 2-交换机#1的接口 4~接口 3->交换机#2的接口 1->.......。这样就无限制地循环兜圈子下去,白白消耗了网络资源。

为了解决这种兜圈子问题,IEEE的802.1D标准制定了一个生成树协议STP (Spanning Tree Protocol)。其要点就是不改变网络的实际拓扑,但在逻辑上则切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构,从而消除了兜圈子现象。

从总线以太网到星型以太网

大家知道,传统的电话网是星形结构,其中心就是电话交换机。那么在20世纪70年代中期出现的局域网,为什么不釆用这种星形结构呢?

这是因为在当时的技术条件下,还很难用廉价的方法制造出高可靠性的以太网交换机。所以那时的以太网就采用无源的总线结构。这种总线式以太网一问世就受到广大用户的欢迎,并获得了很快的发展。

然而随着以太网上站点数目的增多,使得总线结构以太网的可靠性下降。与此同时,大规模集成电路以及专用芯片的发展,使得星形结构的以太网交换机可以做得既便宜又可靠。在这种情况下,釆用以太网交换机的星形结构又成为以太网的首选拓扑,而传统的总线以太网也很快从市场上消失了。

总线以太网使用CSMA/CD协议,以半双工方式工作但以太网交换机不使用共享总线,没有碰撞问题,因此不使用CSMA/CD协议,而是以全双工方式工作。既然连以太网的重要协议CSMA/CD都不使用了(相关的“争用期"也没有了),为什么还叫做以太网呢?原因就是它的帧结构未改变,仍然采用以太网的帧结构

虚拟局域网

利用以太网交换机可以很方便地实现虚拟局域网VLAN (Virtual LAN)。在IEEE 802.1Q标准中,对虚拟局域网VLAN是这样定义的:

虚拟局域网VLAN是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的计算机属于哪一个VLAN。

虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。

图3-27画的是使用了四个交换机的网络拓扑。设有10台计算机分配在三个楼层中,构成了三个局域网,即:
LAN1: (A1, A2, B1, C1), LAN2: (A3, B2, C2),LAN3: (A4, B3, C3)

但这10个用户划分为三个工作组,也就是说划分为三个虚拟局域网VLAN。即:

VLAN1:(A1,A2,A3,A4),VLAN2:(Bi,B2,B3), VLAN3:(C1,C2,C3)。

从图3-27可看出,每一个VLAN的计算机可处在不同的局域网中,也可以不在同一层楼中。

利用以太网交换机可以很方便地将这10台计算机划分为三个虚拟局域网:VLAN1、VLAN2和VLAN3。在虚拟局域网上的每一个站都可以收到同一个虚拟局域网上的其他成员所发出的广播。

例如,计算机B1~ B3同属于虚拟局域网VLAN2。当为向工作组内成员发送数据时,计算机B2和B3将会收到广播的信息,虽然它们没有和B1连在同一个以太网交换机上。

相反,B1向工作组内成员发送数据时,计算机A1、 A2和C1都不会收到B1发出的广播信息,虽然它们都与B1连接在同一个以太网交换机上。

以太网交换机不向虚拟局域网以外的计算机传送B1的广播信息。这样,虚拟局域网限制了接收广播信息的计算机数,使得网络不会因传播过多的广播信息(即所谓的“广播风暴”)而引起性能恶化。

由于虚拟局域网是用户和网络资源的逻辑组合,因此可按照需要将有关设备和资源非常方便地重新组合,使用户从不同的服务器或数据库中存取所需的资源。

虚拟局域网(VLAN)技术具有以下主要优点

  1. 改善了性能
  2. 简化了管理
  3. 降低了成本
  4. 改善了安全性

划分虚拟局域网的方法

  1. 基于交换机端口:最简单、也是最常用的方法。属于在第一层划分虚拟局域网的方法。缺点:不允许用户移动。
  2. 基于计算机网卡的MAC地址:根据用户计算机的MAC地址划分虚拟局域网。属于在第二层划分虚拟局域网的方法。允许用户移动。缺点:需要输入和管理大量的MAC地址。如果用户的MAC地址改变了,则需要管理员重新配置VLAN。
  3. 基于协议类型:根据以太网帧的第三个字段“类型”字段确定该类型的协议属于哪一个虚拟局域网。属于在第二层划分虚拟局域网的方法。
  4. 基于IP子网地址:根据以太网帧的第三个字段“类型”字段和IP分组首部中的源 IP 地址字段确定该 IP 分组属于哪一个虚拟局域网。属于在第三层划分虚拟局域网的方法。
  5. 基于高层应用或服务:根据高层应用或服务、或者它们的组合划分虚拟局域网。更加灵活,但更加复杂。

1988年IEEE批准了 802.3ac标准,这个标准定义了以太网的帧格式的扩展,以便支持虚拟局域网。虚拟局域网协议允许在以太网的帧格式中插入一个4字节的标识符(见图3-28),称为VLAN标记(tag),用来指明发送该帧的计算机属于哪一个虚拟局域网。插入VLAN标记得出的帧称为802.1Q帧。显然,如果还使用原来的以太网帧格式,那么就无法区分是否划分了虚拟局域网。图3-27标注出在几个粗线链路上传输的帧是802.1Q帧。在其他链路上传输的仍然是普通的以太网帧。

VLAN标记字段的长度是4字节,插入在以太网MAC帧的源地址字段和类型字段之间。VLAN标记的前两个字节总是设置为0x8100 (即二进制的10000001 00000000),称为IEEE 802.1Q标记类型。

当数据链路层检测到MAC帧的源地址字段后面的两个字节的值是0x8100时,就知道现在插入了 4字节的VLAN标记。

于是就接着检查后面两个字节的内容。在后面的两个字节中,前3位是用户优先级字段,接着的一位是规范格式指示符CFI (Canonical FormatIndicator),最后的12位是该虚拟局域网VLAN标识符VID (VLAN ID),它唯一地标志了这个以太网帧属于哪一个VLAN。

高速以太网

随着电子技术的发展,以太网的速率也不断提升。从传统的10 Mbit/s以太网一直发展到现在常用的速率为1 Gbit/s的吉比特以太网,甚至更快的以太网。下面简单介绍几种高速以太网技术。

100BASE-T以太网

速率达到或超过 100 Mbit/s 的以太网称为高速以太网。100BASE-T 在双绞线上传送 100 Mbit/s 基带信号的星形拓扑以太网,仍使用 IEEE 802.3 的 CSMA/CD 协议。100BASE-T 以太网又称为快速以太网 (Fast Ethernet)。1995 年IEEE已把 100BASE-T 的快速以太网定为正式标准,其代号为 IEEE 802.3u。

100BASE-T 以太网的特点

  1. 可在全双工方式下工作而无冲突发生。在全双工方式下工作时,不使用 CSMA/CD 协议。
  2. MAC 帧格式仍然是 802.3 标准规定的。
  3. 保持最短帧长不变,但将一个网段的最大电缆长度减小到 100 米。、
  4. 帧间时间间隔从原来的 9.6 us 改为现在的 0.96 us 。

吉比特以太网

特点:

  1. 允许在 1 Gbit/s 下以全双工和半双工两种方式工作。
  2. 使用 IEEE 802.3 协议规定的帧格式。
  3. 在半双工方式下使用 CSMA/CD 协议,全双工方式不使用 CSMA/CD 协议。
  4. 与 10BASE-T 和 100BASE-T 技术向后兼容。

吉比特以太网的物理层使用两种成熟的技术:一种来自现有的以太网,另一种则是美国国家标准协会 ANSI 制定的光纤通道 FC (Fiber Channel)。

吉比特以太网工作在半双工方式时,就必须进行碰撞检测。

为保持 64 字节最小帧长度,以及 100 米的网段的最大长度,吉比特以太网增加了两个功能:

  1. 载波延伸 (carrier extension):使最短帧长仍为 64 字节(这样可以保持兼容性),同时将争用时间增大为 512 字节。凡发送的 MAC 帧长不足 512 字节时,就用一些特殊字符填充在帧的后面,使MAC 帧的发送长度增大到 512 字节。接收端在收到以太网的 MAC 帧后,要将所填充的特殊字符删除后才向高层交付。
  2. 分组突发 (packet bursting):当很多短帧要发送时,第一个短帧要采用载波延伸方法进行填充,随后的一些短帧则可一个接一个地发送,只需留有必要的帧间最小间隔即可。这样就形成可一串分组的突发,直到达到 1500 字节或稍多一些为止。

当吉比特以太网工作在全双工方式时(即通信双方可同时进行发送和接收数据),不使用载波延伸和分组突发。

10 吉比特以太网和更快的以太网

10 吉比特以太网(10GE)并非把吉比特以太网的速率简单地提高到 10 倍,其主要特点有:

  1. 与 10 Mbit/s、100 Mbit/s 和 1 Gbit/s 以太网的帧格式完全相同。
  2. 保留了 802.3 标准规定的以太网最小和最大帧长,便于升级。
  3. 不再使用铜线而只使用光纤作为传输媒体。
  4. 只工作在全双工方式,因此没有争用问题,也不使用 CSMA/CD 协议。

以太网的技术发展得很快。在10GE之后又制定了 40GE/100GE (即40吉比特以太网和100吉比特以太网)的标准IEEE 802.3ba-2010和802.3bm-2015。表3Y 是40GE和100GE的物理层名称及传输距离,其中有两项带*号的是802.3bm提出的。

以太网的工作范围已经从局域网(校园网、企业网)扩大到城域网和广域网,从而实现了端到端的以太网传输。这种工作方式的好处有:

  1. 技术成熟;
  2. 互操作性很好;
  3. 在广域网中使用以太网时价格便宜;
  4. 采用统一的以太网帧格式,简化了操作和管理。

使用以太网进行宽带接入

IEEE 在 2001 年初成立了 802.3 EFM 工作组,专门研究高速以太网的宽带接入技术问题。
以太网宽带接入具有以下特点:

  1. 可以提供双向的宽带通信。
  2. 可以根据用户对带宽的需求灵活地进行带宽升级。
  3. 可以实现端到端的以太网传输,中间不需要再进行帧格式的转换。这就提高了数据的传输效率且降低了传输的成本。
  4. 但是不支持用户身份鉴别。

PPPoE (PPP over Ethernet) 的意思是“在以太网上运行 PPP”,它把 PPP 协议与以太网协议结合起来 —— 将 PPP 帧再封装到以太网中来传输。

现在的光纤宽带接入 FTTx 都要使用 PPPoE 的方式进行接入。在 PPPoE 弹出的窗口中键入在网络运营商购买的用户名和密码,就可以进行宽带上网了。

利用 ADSL 进行宽带上网时,从用户个人电脑到家中的 ADSL 调制解调器之间,也是使用 RJ-45 和 5 类线(即以太网使用的网线)进行连接的,并且也是使用 PPPoE 弹出的窗口进行拨号连接的。

原文地址:https://www.cnblogs.com/lihello/p/12864353.html