链路层信道详解

接下来我们进入链路层。

在链路层的讨论中,我们将看到两种截然不同类型的链路层信道。

第一种类型是广播信道,这种信道用于连接有线局域网、卫星网和混合光纤同轴电缆(Hybrid Fiber Coaxial cable,HFC)接入网中的多台主机。因为许多主机与相同的广播信道连接,需要所谓的媒体访问协议来协调帧传输。在某些场合中,可以使用中心控制器来协调传输。

第二种类型的链路层信道是点对点通信链路,这在诸如长距离链路连接的两台路由器之间,或用户办公室计算机与它们所连接的邻近以太网交换机之间等场合经常能够发现。协调对点对点链 路的访问较为简单;在本书Web网站上的相关材料详细地讨论了点到点协议(Point-to-Point Protocol,PPP),该协议的适用范围从经电话线的拨号服务到经光纤链路的高速点到点帧传输。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZG1cUd3B-1617844005090)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/1.png)]

一、链路层概述

  • 节点:将运行链路层协议的任何设备均称为节点,包括:主机、路由器、WiFi接入节点。
  • 链路:沿着通信路径连接相邻节点的通信信道称为链路

我们考虑一个交通运输的类比例子。假如一个旅行社计划为游客开辟从美国新泽西州的普林斯顿到瑞士洛桑的旅游路线。假定该旅行社认为对于游客而言最为便利的方案是:从普林斯顿乘豪华大轿车到JFK机场,然后乘飞机从JFK机场去日内瓦机场,最后乘火车从日内瓦机场到洛桑火车站。一旦该旅行社作了这3项预定,普林斯顿豪华大轿车公司将负责将游客从普林斯顿带到JFK,航空公司将负责将游客从JFK带到日内瓦,瑞士火车服务将负责将游客从日内瓦带到洛桑。该旅程中3段中的每一段都在两个“相邻”地点之间是“直达的”。注意到这3段运输是由不同的公司管理,使用了完全不同的运输方式(豪华大轿车、飞机和火车)。尽管运输方式不同,但它们都提供了将旅客从一个地点运输到相邻地点的基本服务。在这个运输类比中,一个游客好比一个数据报,每个运输区段好比一条链路,每种运输方式好比一种链路层协议,而该旅行社好比一个路由选择协议。

链路层提供的服务

  • 基本服务:将数据报通过单一通信链路从一个节点移动到相邻节点。

链路层协议能够提供的可能服务:

  • 成帧(framing)。在每个网络层数据报经链路传送之前,几乎所有的链路层协议都要将其用链路层帧封装起来。一个帧由一个数据字段和若干首部字段组成,其中网络层数据报就插在数据字段中。帧的结构由链路层协议规定。当我们在本章的后半部分研究具体的链路层协议时,将看到几种不同的帧格式。
  • 链路接入媒体访问控制(Medium Access Control,MAC)协议规定了帧在链路上传输的规则。对于在链路的一端仅有一个发送方、链路的另一端仅有一个接收方的点对点链路,MAC协议比较简单(或者不存在),即无论何吋链路空闲,发送方都能够发送帧。更有趣的情况是当多个节点共享单个广播链路时,即所谓多路访问问题。这里,MAC协议用于协调多个节点的帧传输
  • 可靠交付。当链路层协议提供可靠交付服务时,它保证无差错地经链路层移动每个网络层数据报。前面讲过,某些运输层协议(例如TCP)也提供可靠交付服务。与运输层可靠交付服务类似,链路层的可靠交付服务通常是通过确认和重传取得的。链路层可靠交付服务通常用于易于产生高差错率的链路,例如无线链路,其目的是本地(也就是在差错发生的链路上)纠正一个差错,而不是通过运输层或应用层协议迫使进行端到端的数据重传。然而,对于低比特差错的链路,包括光纤、同轴电缆和许多双绞铜线链路,链路层可靠交付可能会被认为是一种不必要的开销。由于这个原因,许多有线的链路层协议不提供可靠交付服务
  • 差错检测和纠正。当帧中的一个比特作为1传输时,接收方节点中的链路层硬件可能不正确地将其判断为0,反之亦然。这种比特差错是由信号衰减电磁噪声导致的。因为没有必要转发一个有差错的数据报,所以许多链路层协议提供一种机制来检测这样的比特差错。通过让发送节点在帧中包括差错检测比特,让接收节点进行差错检查,以此来完成这项工作。因特网的运输层和网络层也提供了有限形式的差错检测,即因特网检验和。链路层的差错检测通常更复杂,并且用硬件实现。差错纠正类似于差错检测,区别在于接收方不仅能检测帧中出现的比特差错,而且能够准确地确定帧中的差错出现的位置(并因此纠正这些差错)。

链路层在何处实现

链路层是实现在路由器的线路卡中的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gjs5mttN-1617844005092)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/2.jpg)]

链路层的主体部分是在网络适配器(network adapter) 中实现的,网络适配器有时也称为网络接口卡(Network Interface Card,NIC)。位于网络适配器核心的是链路层控制器,该控制器通常是一个实现了许多链路层服务(成帧、链路接入、差错检测等)的专用芯片。因此,链路层控制器的许多功能是用硬件实现的。

  • 发送端,控制器取得了由协议栈较高层生成并存储在主机内存中的数据报,在链路层帧中封装该数据报(填写该帧的各个字段),然后遵循链路接入协议将该帧传进通信链路中。
  • 接收端,控制器接收了整个帧,抽取出网络层数据报。如果链路层执行差错检测,则需要发送控制器在该帧的首部设置差错检测比特,由接收控制器执行差错检测。

部分链路层是运行在主机CPU上的软件中实现的。链路层的软件组件实现了高层链路层功能,如组装链路层寻址信息和激活控制器硬件。

所以链路层是硬件和软件的结合体,即此处是协议栈中软件和硬件交接的地方。

二、差错检验和纠正技术

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q3pmgvJH-1617844005099)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/3.jpg)]

在发送节点,为了保护比特免受差错,使用差错检测和纠正比特EDC)来增强数据D。

我们现在来研究在传输数据中检测差错的3种技术

奇偶校验(它用来描述差错检测和纠正背后隐含的基本思想)

检验和方法(它通常更多地应用于运输层)

循环冗余检测 (它通常更多地应用在适配器中的链路层)

奇偶校验

  • 单个奇偶校验位

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EsvoafJ3-1617844005104)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/4.jpg)]

使得d+1比特中的1总是偶数,但只能检查有没有出错,而且只能检验单数错误,还没法纠正。

  • 单比特奇偶校验方案的二维一般化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jQ3TPv3G-1617844005106)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/5.jpg)]

二维奇偶校验 (two-dimensional parity)方案,包含比特值改变的列和行的校验值都将会岀现差错。 因此接收方不仅可以检测到出现了单个比特差错的事实,而且还可以利用存在奇偶行校验校验差错的列和行的索引来实际识别发生差错的比特并纠正它!

二维奇偶校验也能够检测(但不能纠正!) 一个分组中两个比特差错的任何组合。

检验和方法

将d比特数据作为一个k比特整数的序列处理,一个简单检验和方法就是将这k比特整数加起来,并用得到的和作为差错检测比特。

循环冗余检测

广泛应用的差错检验技术基于循环冗余检测(CRC)编码,CRC编码也称为多项式编码

CRC编码操作如下。考虑d比特的数据D,发送节点要将它发送给接收节点。发送方和接收方首先必须协商一个r + 1比特模式,称为生成多项式(general)。对于一个给定的数据段D,发送方要选择r个附加比特R并将它们附加到D上,使得得到的d + r比特模式(被解释为一 个二进制数)用模2算术恰好能被G整除(即没有余数)。用CRC进行差错检测的过程因此很简单:接收方用G去除接收到的 d+r 比特。如果余数为非零,接收方知道出现了差错;否则认为数据正确而被接收。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M3Rb79uK-1617844005107)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/6.jpg)]

假设发送方A向接收方B发送一串二进制数据101001。A需要计算出K位校验码,放在原始数据的后面一起发送给B。

它们双方事先约定了一个私密的二项式G(x) = x^3 + x^2 +1,这个多项式用来计算校验码的位数和值,二项式的设计必须符合一定的规则,G(x)的最高项和最低项的系数必须为1。通过这个二项式我们首先可以获取K的大小,最高项x^3的幂指数3就等于K。另外通过二项式G(x)生成数据串G(x) = 1x^3 + 1x^2 + 0x^1 +1x^0 = 1101(将二项式前面的系数组合在一起就形成了数据串)。数据串可以帮助我们计算出校验码的值。在有些情景下,我们无法获知多项式G(x)。但直接得到了多项式生成后的数据串1101,此时怎么知道校验码有几位呢?用数据串的长度减去1就是K的大小。

从上面描述可知二进制数据101001现在需要加上3位校验码,而用于校验的数据串也已经算出为1101。那通过这两个条件如何计算出校验码呢?在这里采用的是模2除法。模2除法它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行异或运算即可。详细运算过程如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-StKaWCJ3-1617844005109)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/7.jpg)]

101001后面需要加上3位校验码,先添加3个0替代变成101001000,随后对1101做模二除法

然后要看被除数的最高位是1还是0,是1商就上1,是0商就上0。此时被除数最高位是1,所以商为1。1再乘以1101和1010做异或运算第一轮计算余数为0111,舍弃最高位0,将后面的0填上就变成了1110。此时被除数变成了1110,最高位仍然为1,所以商仍然上1,将1101和1101做异或运算。结果0011,舍弃最高位0,将后面的1填上,被除数就变成了0111。依次类推算到最后一位的余数为001。

只要本着被除数的最高位为几商就写几的原则进行异或运算后的余数的最高位一定是0,是0就可以舍弃,继续进行下面的运算。最后得出的最终余数001就是我们想要的3位检验码。

通过这种模二除法有什么好处呢?比如说数101001后面加三个0后对1101做模二除法,最终会得到三位余数。然后将三位余数替换被除数的三个0再对1101做模二除法时,余数一定为0。换言之101001001再对1101做模二除法时余数一定为0。利用这个特性就可以做数据校验。

接受方B此时已经接受到了A传递过来的数据 101001001,并且他也知道事先约定的多项式g(x),他先通过g(x)计算出数据串为1101。他现在要开始做校验操作了。让101001001对1101做模二除法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fBrWXCN7-1617844005109)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/8.jpg)]

计算出来的余数为0,说明传送过来的数据正确。

假如传送过来的数据101001001第二位发生了跳变,变成了101001011,那运算结果又会如何?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RyHA8wvG-1617844005110)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/9.jpg)]

最后计算出来的余数为010,并不为0,说明数据发生了跳变。而010代表数字2,指明是第二位数据出现了错误。细心的同学肯定会发现3位校验码最多只能表示8种情况,而101001001有9个数字,在最多只有一位数字发生跳变的前提下,它的错误情况有九种,这样的话3位校验码就无法表示所有的出错情况了。比如说101001001最高位发生了跳变。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hCa7olC7-1617844005111)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/10.jpg)]

最高位发生跳变时,被除数的最高位为0,商上0继续运算,算到最后的余数为010。此时我们可以发现最高位(第9位)发现跳变时最后算出的余数是010,而第二位发生跳变时也是010,如果接收方算出了010,它也无法确定到底是第二位出错还是第九位出错,这样就只能检错而不能纠错。为了避免此类状况的发生,多项式g(x)和信息数据的长度设计显得尤为重要.

三、多路访问协议

首先,我们一开始提到过两种网络链路:点对点链路广播链路

  • 点对点链路:由链路的一端的单个发送方和链路另一端的单个接收方组成。如:点对点协议PPP),高级数据链路控制HDLC)。
  • 广播链路:能够让多个发送和接收方都连接到相同的、单一的、共享的广播信道上。如:以太网无线局域网

多路访问问题如何协调多个发送和接收节点对一个共享广播信道的访问

多路访问协议节点通过这些协议来规范他们在共享的广播信道上的传输行为

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lUQu1wtG-1617844005111)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/11.jpg)]

碰撞:多个节点同时传输帧,所有节点同时接收到帧,在接收方会发生碰撞,通常碰撞发生没有一个节点那能够有效地获得任何传输的帧,在某种意义下,碰撞的帧信号纠缠在一起,涉及此次碰撞的所有帧都丢失了,在碰撞事件间隔中的广播信道被浪费了。

多路访问协议划分为3中类型之一:信道划分协议随机接入协议轮流协议

多路访问协议应该具有的特性

  1. 当仅有一个节点发送数据时,该节点具有Rbps的吞吐量;
  2. 当有M个节点发送数据时,每个节点吞吐量为R/Mbps。这不比要求M个节点中的每一个节点总是有R/M的瞬时速率,而是每个节点在一些适当定义的时间间隔内应该有R/M的平均传输速率。
  3. 协议是分散的;这就是说不会因为某个主节点故障而使整个系统崩溃。
  4. 协议是简单的,使实现不昂贵。

信道划分协议

3种信道划分协议:时分多路复用TDM)、频分多路复用FDM)、码分多址CDMA)。

时分多路复用(TDM):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ux7R3pm8-1617844005112)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/12.jpg)]

假设一个支持N 个节点的信道且信道的传输速率为R bps。TDM将时间划分为时间帧(time frame),并进一步划分每个时间帧为N个时隙 (slot),然后把每个时隙分配给N 个节点中的一个。无论何时某个节点在有分组要发送的时候,它在循环的TDM帧中指派给它的时隙内传输分组比特。通常,选择的时隙长度应使一个时隙内能够传输单个分组。

TDM消除了碰撞而且非常公平,每个节点在每个帧时间内得到了专用的传输速率R/N bps。

然而有两个缺陷

  1. 节点被限制于R/N bps的 平均速率,即使当它是唯一有分组要发送的节点时。

  2. 节点必须总是等待它在传输序列中的轮次,即我们再次看到,即使它是唯一一个有帧要发送的节点。

频分多路复用(FDM):

FDM将R bps信道划分为不同的频段(每个频段具有R/N带宽),并把每个频率分配给N个节点中的一个。因此FDM在单个较大的R bps信道中创建了N个较小的R/N bps信道。FDM也有TDM同样的优点和缺点。它避免了碰撞,在N个节点之间公平地划分了带宽。然而,FDM也有TDM所具有的主要缺点,也就是限制一个节点只能使用R/N的带宽,即使当它是唯一一个有分组要发送的节点时。

码分多址(CDMA):

CDMA对每个节点分配一种不同的编码。然后每个节点用它唯一的编码来对它发送的数据进行编码如果精心选择这些编码,CDMA网络具有一种奇妙的特性,即不同的节点能够同时传输,并且它们各自相应的接收方仍能正确接 收发送方编码的数据比特(假设接收方知道发送方的编码),而不在乎其他节点的干扰传输。

随机接入协议

在随机接入协议中,一个传输节点总是以信道的全部速率R(即Kbps)进行发送。当有碰撞时,涉及碰撞的每个节点反复地重发它的帧 (也就是分组),到该帧无碰撞地通过为止。但是当一个节点经历一次碰撞时,它不必立刻重发该帧。相反,它在重发该帧之前等待一个随机时延。涉及碰撞的每个节点独立地选择随机时延。因为该随机时延是独立地选择的,所以下述现象是有可能的:这些节点之一所选择的时延充分小于其他碰撞节点的时延,并因此能够无碰撞地将它的帧在信道中发出。

时隙ALOHA

  • 当节点有一个新帧要发送时,它等到下一个时隙开始并在该时隙传输整个帧。
  • 如果没有碰撞,该节点成功地传输它的帧,从而不需要考虑重传该帧。(如果该节点有新帧,它能够为传输准备一个新帧。)
  • 如果有碰撞,该节点在时隙结束之前检测到这次碰撞。该节点以概率P在后续的每个时隙中重传它的帧,直到该帧被无碰撞地传输出去。

我们说以概率P重传,是指某节点有效地投掷一个有偏倚的硬币;硬币正面事件对 应着重传,而重传出现的概率为"硬币反面事件对应着“跳过这个时隙,在下个时隙再掷硬币”;这个事件以概率(1 - P)出现。所有涉及碰撞的节点独立地投掷它们的硬币。

优点

  • 当某节点时唯一活跃的节点时,时隙ALOHA允许该节点以全速R连续传输。
  • 时隙ALOHA也是高度发散的,因为每个节点检测碰撞并独立的决定什么时候重传。
  • 时隙ALOHA是一个简单的协议。

考虑效率。时隙多路访问协议的效率:当有大量的活跃节点且每个 节点总有大量的帧要发送时,长期运行中成功时隙的份额。注意到如果不使用某种形式的访问控制,而且每个节点都在每次碰撞之后立即重传,这个效率将为零。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5SajgKuX-1617844005122)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/13.jpg)]

一个给定节点成功传送的概率是p(1-p)N-1,N个节点成功传送的概率是Np(1-p)N-1

后,我们会发现这个协议的最大效率为1/e=0.37。这就是说,当有大量节点有很多帧要传输时,则(最多)仅有37%的时隙做有用的工作。因此该信道有效传输速率不是R bps,而仅为0.37R bps!相似的分析还表明37%的时隙是空闲的,26%的时隙有碰撞。试想一个蹩脚的网络管理员购买了一个100Mbps的时隙ALOHA系统,希望能够使用网络在大量的用户之间以总计速率如80Mbps来传输数据。尽管这个信道能够以信道的全速100Mbps传输一个给定的帧,但从长时间范围看,该信道的成功吞吐量将小于37Mbps。

ALOHA

时隙ALOHA协议要求所有的节点同步它们的传输,以在每个时隙开始时开始传输。 第一个ALOHA协议实际上是一个非时隙完全分散的协议。在纯ALOHA中,当一帧首次到达(即一个网络层数据报在发送节点从网络层传递下来),节点立刻将该帧完整地传输进广播信道。如果一个传输的帧与一个或多个传输经历了碰撞,这个节点将立即(在完全传输完它的碰撞帧之后)以概率P重传该帧。否则,该节点等待一个帧传输时间。在此等待之后,它则以概率P传输该帧,或者以概率1 - P在另一个帧时间等待(保持空闲)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xCSKu4gw-1617844005123)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/14.jpg)]

为了确定纯ALOHA的最大效率,我们关注某个单独的节点。我们的假设与在时隙ALOHA分析中所做的相同,取帧传输时间为时间单元。在任何给定时间,某节点传输一个帧的概率是处假设该帧在时刻S开始传输。为了使该帧能成功地传输,在时间间隔[t0-1, t0],中不能有其他节点开始传输。这种传输将与节点i的帧传输起始部分相重叠。所有其他节点在这个时间间隔不开始传输的概率是(1-P)N-1。类似地,当节点i在传输时,其他节点不能开始传输,因为这种传输将与节点i传输的后面部分相重叠。所有其他节点在这个时间间隔不开始传输的概率也是(1-P)N-1。因此,一个给定的节点成功传输一次的概率是P(1-P)2(N-1)。通过与时隙ALOHA情况一样来取极限,我们求得纯ALOHA协议的最大效率仅为1/(2e),这刚好是时隙ALOHA的一半。这就是完全分散的ALOHA协议所要付出的代价。

载波侦听多路访问(CSMA)

  • 载波侦听(carrier sensing):一个节点在传输前先听信道。如果来自另一个节点的帧正向信道上发送,节点则等待直到检测到一小段时间没有传输,然后开始传输。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D2Bl07RS-1617844005124)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/15.jpg)]

在t0时刻,节点B侦听到信道是空闲的,因为当前没有其他节点在传输。因此节点B开始传输,沿着广播媒体在两个方向上传播它的比特。比特随着时间的增加向下传播,这表明B的比特沿着广播媒体传播所实际需要的时间不是零(虽然以接近光的速度)。在时刻t1,节点D有一个帧要发送。尽管节点B在时刻t1正在传输,但B传输的比特还没有到达D,因此D在t1侦听到信道空闲。根据CSMA协议,从而D开始传输它的帧。一个短暂的时间之后,B的传输开始在D干扰D的传输。显然广播信道的端到端信道传播时延(channel propagation delay)(信号从一个节点传播到另一个节点所花费的时间)在决定其性能方面起着关键的作用。该传播时延越长,载波侦听节点不能侦听到网络中另一个节点已经开始传输的机会就越大。

具有碰撞检测的载波侦听多路访问(CSMA/CD)

  • 碰撞检测(collision detection):当一个传输节点在传输时一直在侦听此信道。如果它检测到另一个节点正在传输干扰帧,它就会停止传输,在重复”侦听-当空闲时传输“循环之前等待一段随机时间

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zylpvk4L-1617844005125)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/16.jpg)]

当某节点执行碰撞检测时,一旦它检测到碰撞将立即停止传输。

注意等待的随机时间:用于以太网以及DOCSIS电缆网络多路访问协议中用二进制指数后退算法

  • CSMA/CD效率:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FL2aeSZh-1617844005126)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/17.jpg)]

如果传播时延为0,碰撞的节点将立即终止而不会浪费。

如果一个帧取得了信道时,它将占有信道很长时间,因此信道在大多数时间都会有效地工作。

轮流协议

前面讲过多路访问协议的两个理想特性是:1当只有一个节点活跃吋,该活跃节点具 有R bps的吞吐量;2当有M个节点活跃时,每个活跃节点的吞吐量接近R/M bps。ALOHA和CSMA协议具备第一个特性,但不具备第二个特性。这激发研究人员创造另一类协议,也就是轮流协议(taking- turns protocol)。

轮询协议

轮询协议要求这些节点之一要被指定为主节点。主节点以循环的方式轮询(poll)每个节点。特别是,主节点首先向节点1发送一个报文,告诉它(节点1) 能够传输的帧的最多数量。在节点1传输了某些帧后,主节点告诉节点2它(节点2)能够传输的帧的最多数量。(主节点能够通过观察在信道上是否缺乏信号,来决定一个节点何时完成了帧的发送。)上述过程以这种方式继续进行,主节点以循环的方式轮询了每个节点。

轮询协议消除了困扰随机接入协议的碰撞和空时隙,这使得轮询取得高得多的效率。但是它也有一些缺点。

  • 第一个缺点是该协议引入了轮询时延,即通知一个节点“它可以传输”所需的时间。例如,如果只有一个节点是活跃的,那么这个节点将以小于R bps的速率传输,因为每次活跃节点发送了它最多数量的帧时,主节点必须依次轮询每一个非活跃的节点。
  • 第二个缺点(单点故障)可能更为严重,就是如果主节点有故障,整个信道都变得不可操作。

令牌传递协议

在这种协议中没有主节点。一个称为令牌(token) 的小的特殊帧在节点之间以某种固定的次序进行交换。

例如,节点1可能总是把令牌发送给节点2 ,节点2可能总是把令牌发送给节点3,而节点N可能总是把令牌发送给节点1。当一个节点收到令牌时,仅当它有一些帧要发送时,它才持有这个令牌;否则,它立即向下一个节点转发该令牌。当一个节点收到令牌时,如果它确实有帧要传输,它发送最大数目的帧数,然后把令牌转发给下一个节点。令牌传递是分散的,并有很高的效率。

但是它也有自己的一些问题。例如,一个节点的故障可能会使整个信道崩溃。或者如果一个节点偶然忘记了释放令牌,则必须调用某些恢复步骤使令牌返回到循环中来。

四、交换局域网

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YPHRNuQD-1617844005127)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/18.jpg)]

我们首先以讨论链路层寻址来开始对交换机局域网的学习。然后仔细学习著名的以太网协议。之后据需考察链路层交换机的工作方式。并随后考察通常是如何用这些交换机构建大规模局域网的。

链路层寻址和ARP

  • MAC地址

事实上,并不是主机或路由器具有链路层地址,而是它们的适配器(即网络接口)具有链路层地址。因此,具有多个网络接口的主机或路由器将具有与之相关联的多个链路层地址,就像它也具有与之相关联的多个IP地址一样。然而,重要的是注意到链路层交换机并不具有与它们的接口(这些接口是与主机和路由器相连的)相关联的链路层地址。这是因为链路层交换机的任务是在主机与路由器之间承载数据报;交换机透明地执行该项任务,这就是说,主机或路由器不必明确地将帧寻址到其间的交换机。

MAC地址长度为6字节,共有248个可能的MAC地址。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qr5VYELh-1617844005129)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/19.jpg)]

适配器的MAC地址具有扁平结构(这与层次结构相反),而且不论适配器到哪里用都不会变化。 带有以太网接口的便携机总具有同样的MAC地址,无论该计算机位于何方。具有802.11接口的一台智能手机总是具有相同的MAC地址,无论该智能手机到哪里。与之形成对照的是,前面说过的IP地址具有层次结构(即一个网络部分和一个主机部分),而且当主机移动时,主机的IP地址需要改变,即改变它所连接到的网络。适配器的MAC地址与人的社会保险号相似,后者也具有扁平寻址结构,而且无论人到哪里该号码都不会变化。IP地址则与一个人的邮政地址相似,它是有层次的,无论何时当人搬家时,该地址都必须改变。就像一个人可能发现邮政地址和社会保险号都有用那样,一台主机具有一个网络层地址和一个MAC地址是有用的。

当某适配器要向某些目的适配器发送一个帧时,发送适配器将目的适配器的MAC地址插入到该帧中,并将该帧发送到局域网上。因此一块适配器可以接收一个并非向它寻址的帧。这样,当适配器接收到一个帧时,将检查该帧中的目的MAC地址是否与它自己的MAC地址匹配。如果匹配,该适配器提取出封装的数据报,并将该数据报沿协议栈向上传递。如果不匹配,该适配器丢弃该帧,而不会向上传递该网络层数据报。所以,仅当收到该帧时,才会中断目的地。

然而,有时某发送适配器的确要让局域网上所有其他适配器来接收并处理它打算发送的帧。在这种情况下,发送适配器在该帧的目的地址字段中插入一个特殊的MAC广播地址(broadcast address)。对于使用6字节地址的局域网(例如以太网和802. 11)来说,广播地址是48个连续的1组成的字符串(即以十六进制表示法表示的FF- FF- FF- FF- FF- FF)。

  • 地址解析协议ARP

因为存在网络层地址(例如,因特网的IP地址)和链路层地址(即MAC地址),所以需要在它们之间进行转换。对于因特网而言,这是地址解析协议(Address ResolutionProtocol,ARP)的任务。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1kzJ5Dda-1617844005131)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/20.jpg)]

每台主机或路由器在 其内存中具有一个ARP表(ARP table),这张表包含IP地址到MAC地址的映射关系。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iiCkOYjY-1617844005132)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/21.jpg)]

关于ARP协议有两件有趣的事情需要注意。

首先,查询ARP报文是在广播帧中发送的,而响应ARP报文在一个标准帧中发送。

其次,ARP是即插即用的,这就是说,一个ARP表是自动建立的,即它不需要系统 管理员来配置。并且如果某主机与子网断开连接,它的表项最终会从留在子网中的节点的表中删除掉。

  • 发送数据报到子网以外

当子网中的某主机要向子网之外的主机发送网络层数据报的情况。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cw6bnt7U-1617844005133)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/22.jpg)]

我们发现为了使一个数据报从111.111.111.111到子网2上的主机,该数据报必须首先发送给路由器接口 111.111.111.110,它是通往最终目的地路径上的第一跳路由器的IP地址。因此,对于该帧来说,适当的MAC地址是路由器接口111. 111. 111. 110的适配器地址,即E6- E9-00- 17-BB-4BO但发送主机怎样获得 111.111.111.110的MAC地址呢?当然是通过使用ARP!

一旦发送适配器有了这个MAC地址,它创建一个帧(包含了寻址到222. 222. 222. 222的数据报),并把该帧发送到子网1中。在子网1上的路由器适配器看到该链路层帧是向它寻址的,因此把这个帧传递给路由器的网络层。万岁!该IP数据报终于被成功地从源主机移动到这台路由器了!但是我们的任务还没有结束。我们仍然要将该数据报从路由器移动到目的地。路由器现在必须决定该数据报要被转发的正确接口。这是通过查询路由器中的转发表来完成的。转发表告诉这台路由器该数据报要通过路由器接口 222. 222. 222. 220转发。然后该接口把这个数据报传递给它的适配器,适配器把该数据报封装到一个新的帧中,并且将帧发送进子网2 中。这时,该帧的目的MAC地址确实是最终目的地MAC地址。路由器又是怎样获得这个目的地MAC地址的呢?当然是用ARP获得的!

以太网

以太网几乎占领着现有的有线局域网市场

以太网具有二进制指数回退的CSMA/CD多路访问协议

  • 以太网帧结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KF6XkP8h-1617844005133)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/23.jpg)]

  • 数据字段(46~1500字节)。这个字段承载了IP数据报。以太网的最大传输单元(MTU)是1500字节。这意味着如果IP数据报超过了1500字节,则主机必须将该数据报分片。数据字段的最小长度是46字节。这意味着如果IP数据报小于46字节,数据报必须被填充到46字节。当采用填充时,传递到网络层的数据包括IP数据报和填充部分。网络层使用IP数据报首部中的长度字段来去除填充部分。
  • 目的地址(6字节)。这个字段包含目的适配器的MAC地址,当目的适配器收到一个以太网帧,帧的目的地址无论是该适配器的MAC地址,还是MAC广播地址,它都将该帧的数据字段的内容传递给网络层;如果它收到了具有任何其他MAC地址的帧,则丢弃之。
  • 源地址(6字节)。这个字段包含了传输该帧到局域网上的适配器的MAC地址。
  • 类型字段(2字节)。类型字段允许以太网复用多种网络层协议。为了理解这点, 我们需要记住主机能够使用除了IP以外的其他网络层协议。事实上,一台给定的主机可以支持多种网络层协议,以对不同的应用采用不同的协议。
  • CRC(4字节)。检测帧中是否引入了差错。
  • 前同步码(8字节)。以太网帧以一个8字节的前同步码(Preamble)字段开始。该前同步码的前7字节的值都是10101010;最后一个字节是10101011。前同步码字段的前7 字节用于“唤醒”接收适配器,并且将它们的时钟和发送方的时钟同步。为什么这些时钟会不同步呢?记住适配器A的目的是根据以太局域网类型的不同,分别以10Mbps、100Mbps或者lGbps的速率传输帧。然而,没有什么是完美无缺的,因此适配器A不会以精确的额定速率传输帧;相对于额定速率总有一 些漂移,局域网上的其他适配器不会预先知道这种漂移的。接收适配器只需通过锁定前同步码的前7字节的比特,就能够锁定适配器A的时钟。前同步码的第8 个字节的最后两个比特(第一个出现的两个连续的1)警告适配器B, “重要的内容”就要到来了。

所有的以太网技术都向网络层提供无连接服务。这就是说,当适配器A要向适配器B发送一个数据报时,适配器A在一个以太网帧中封装该数据报,并且把该帧发送到局域网上,没有先与适配器B握手。这种第二层的无连接服务类似于IP的第三层数据报服务和UDP的第四层无连接服务。

以太网技术都向网络层提供不可靠服务。特别是,当适配器B收到一个来自适配器A的帧,它对该帧执行CRC校验,但是当该帧通过CRC校验时它既不发送确认帧;而当该帧没有通过CRC校验时它也不发送否定确认帧。当某帧没有通过CRC校验,适配器B只是丢弃该帧。因此,适配器A根本不知道它传输的帧是否到达了B并通过了CRC校验。(在链路层)缺乏可靠的传输有助于使得以太网简单和便宜。但是它也意味着传递到网络层的数据报流能够有间隙。

如果由于丢弃了以太网帧而存在间隙,主机B上的应用也会看见这个间隙吗?这只取决于该应用是使用UDP还是使用TCP。如果应用使用的是UDP,则主机B中的应用的确会看到数据中的间隙。另一方面,如果应用使用的是TCP, 则主机B中的TCP将不会确认包含在丢弃帧中的数据,从而引起主机A的TCP重传。注意到当TCP重传数据时,数据最终将回到曾经丢弃它的以太网适配器。因此,从这种意义上来说,以太网的确重传了数据,尽管以太网并不知道它是正在传输一个具有全新数据的全新数据报,还是一个包含已经被传输过至少一次的数据的数据报。

链路层交换机

交换机的任务是接入链路层帧并将它们转发到出链路

我们将看到交换机自身对子网中的主机和路由器是透明的(transparent);这就是说,某主机/路由器向另一个主机/路由器寻址一个帧(而不是向交换机寻址该帧),顺利地将该帧发送进局域网,并不知道某交换机将会接收该帧并将它转发到另一个节点。这些帧到达该交换机的任何输岀接口之一的速率可能暂时会超过该接口的链路容量。为了解决这个问题,交换机输出接口设有缓存,这非常类似于路由器接口为数据报设有缓存。现在我们来仔细考察交换机运行的原理。

交换机的转发和过滤

过滤 (filtering) 是决定一个帧应该转发到某个接口还是应当将其丢弃的交换机功能。

转发(forwarding) 是决定一个帧应该被导向哪个接口,并把该帧移动到那些接口的交换机功能。

交换机的过滤和转发借助于交换机表(switch table)完成。该交换机表包含某局域网上某些主机和路由器的但不必是全部的表项。交换机表中的一个表项包含:①一个 MAC地址;②通向该MAC地址的交换机接口;③表项放置在表中的时间。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uEOrs7p1-1617844005134)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/24.jpg)]

自学习

交换机具有令人惊奇的特性(特别是对于早已超负荷工作的网络管理员),那就是它的表是自动、动态和自治地建立的,即没有来自网络管理员或来自配置协议的任何干预。换句话说,交换机是自学习(self-leaning) 的。这种能力是以如下方式实现的:

(1)交换机表初始为空。

(2)对于在每个接口接收到的每个入帧,该交换机在其表中存储:①在该帧源地址字段中的MAC地址;②该帧到达的接口;③当前时间。交换机以这种方式在它的表中记录了发送节点所在的局域网网段。如果在局域网上的每个主机最终都发送了一个帧,则每个主机最终将在这张表中留有记录。

(3)如果在一段时间(称为老化期)后,交换机没有接收到以该地址作为源地址的帧,就在表中删除这个地址。以这种方式,如果一台PC被另一台PC (具有不 同的适配器)代替,原来PC的MAC地址将最终从该交换机表中被清除掉。

交换机是即插即用设备,因为它们不需要网络管理员或用户的干预。要安装交换机的网络管理员除了将局域网网段与交换机的接口相连外,不需要做其他任何事。管理员在安装交换机或者当某主机从局域网网段之一被去除时,他没有必要配置交换机表。交换机也是双工的,这意味着任何交换机接口能够同时发送和接收

链路层交换机的性质

  • 消除碰撞。在使用交换机(不使用集线器)构建的局域网中,没有因碰撞而浪费的带宽!交换机缓存帧并且决不会在网段上同时传输多于一个帧。就像使用路由器一样,交换机的最大聚合带宽是该交换机所有接口速率之和。因此,交换机提供了比使用广播链路的局域网高得多的性能改善。
  • 异质的链路。交换机将链路彼此隔离,因此局域网中的不同链路能够以不同的速率运行并且能够在不同的媒体上运行。
  • 管理。除了提供强化的安全性,交换机也易于进行网络管理。例如,如果一个适配器工作异常并持续发送以太网帧(称为快而含糊的(jabbering)适配器),交换机能够检测到该问题,并在内部断开异常适配器。有了这种特色,网络管理员不用起床并开车到工作场所去解决这个问题。类似地,一条割断的缆线仅使得使用该条缆线连接到交换机的主机断开连接。在使用同轴电缆的时代,许多网络管理员花费几个小时“沿线巡检” (或者更准确地 说 “在天花板上爬行”),以找到使整个网络瘫痪的电缆断开之处。交换机也收集带宽使用的统计数据、碰撞率和流量类型,并使这些信息为网络管理者使用。这 些信息能够用于调试和解决问题,并规划该局域网在未来应当演化的方式。

交换机和路由器比较

路由器是使用网络层地址转发分组的存储转发分组交换机。尽管交换机也是一个存储转发分组交换机,但它和路由器是根本不同的,因为它用MAC地址转发分组。交换机是第二层的分组交换机,而路由器是第三层的分组交换机。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3FLfd95i-1617844005134)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/25.jpg)]

  • 考虑交换机的优点和缺点。如上面提到的那样,交换机是即插即用的,这是世界上所有超负荷工作的网络管理员都喜爱的特性。交换机还能够具有相对高的分组过滤和转发速率,交换机必须处理高至第二层的帧,而路由器必须处理高至第三层的数据报。在另一方面,为了防止广播帧的循环,交换网络的活跃拓扑限制为一棵生成树。另外,一个大型交换网络将要求在主机和路由器中有大的ARP表,这将生成可观的ARP流量处理量。而且,交换机对于广播风暴并不提供任何保护措施,即如果某主机出了故障并传输出没完没了的以太网广播帧流,该交换机将转发所有这些帧,使得整个以太网的崩溃。
  • 考虑路由器的优点和缺点。因为网络寻址通常是分层次的(不像MAC寻址那样 是扁平的),即使当网络中存在冗余路径时,分组通常也不会通过路由器循环。(然而,当路由器表被误配置时,分组可能循环;IP用一个特殊的报文首部字段来限制循环。)所以,分组就不会被限制到一棵生成树上,并可以使用源和目的地之间的最佳路径。因为路由器没有生成树限制,所以它们允许以丰富的拓扑结构构建因特网,例如包括欧洲和北美之间的多条活跃链路。路由器的另一个特色是它们对第二层的广播风暴提供了防火墙保护。尽管也许路由器最重要的缺点就是它们不是即插即用的,即路由器和连接到它们的主机都需要人为地配置IP地址。而且路由器对每个分组的处理时间通常比交换机更长,因为它们必须处理高达第三层的字段。
  • 总结表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rv5tw3mX-1617844005136)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/26.jpg)]

虚拟局域网

现代机构的局域网有3个缺点:

  • 缺乏流量隔离。尽管该等级结构把组流量局域化到一个单一交换机中,但广播流(例如携带ARP和DHCP报文或那些目的地还没有被自学习交换机学习到的帧)仍然必须跨越整个机构网络。限制这些广播流量的范围将改善局域网的性能。 也许更为重要的是,为了安全/隐私的目的也可能希望限制局域网广播流量。例如,如果一个组包括公司的行政管理团队,另一个组包括运行着Wireshark分组嗅探器的心怀不满的雇员,网络管理员也许非常希望行政流量无法到达该雇员的主机。通过用路由器代替中心交换机,能够提供这种类型的隔离。我们 很快看到这种隔离也能够经过一种交换(第二层)解决方案来取得。
  • 交换机的无效使用。如果该机构不止有3个组,而是有10个组,则将要求有10个第一级交换机。如果每个组都较小,比如说少于10个人,则单台96端口的交换机将足以容纳每个人,但这台单一的交换机将不能提供流量隔离。
  • 管理用户。如果一个雇员在不同组间移动,必须改变物理布线,以将该雇员连接到不同的交换机上。属于两个组的雇员将使问题更为困难。

幸运的是,这些都能通过虚拟局域网(Virtula Local Network,VLAN)的交换机来处理。

支持VLAN的交换机允许经一个单一的物理局域网基础设施定义多个虚拟局域网

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zo3nJoMi-1617844005138)(/Users/mac/Desktop/计算机网络/blog/第6章 链路层和局域网/27.jpg)](https://img-blog.csdnimg.cn/20210408091442412.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjM1MTU5Mw==,size_16,color_FFFFFF,t_70#pic_center)

五、链路虚拟化:网络作为链路层

多协议标签交换(Multiprotocol Label Switching,MPLS)自20世纪90年代中后期在一些产业界的努力下进行演化,以改善IP路由器的转发速度。它采用来自虚电路网络领域的一个关键概念:固定长度标签

其目标是:

对于基于固定长度标签和虚电路的技术,在不放弃基于目的地IP数据报转发的基础设施的前提下,当可能时通过选择性地标识数据报并允许路由器基于固定长度的标签(而不是目的地IP地址)转发数据报来增强其功能。重要的是,这些技术与IP协同工作,使用IP寻址和路由选择。

一个MPLS使能的路由器常被称为标签交换路由器

MPLS真正的优点:新的流量管理能力。

六、数据中心网络

每个 数据中心都有自己的数据中心网络(data center network),这些数据中心网络将其内部主机彼此互联并与因特网中的数据中心互联。

数据中心中的主机称为刀片(blade),与比萨饼盒类似,一般是包括CPU、内存和磁盘存储的商用主机。主机被堆叠在机架上,每个机架一般堆放20-40台刀片。在每一个机架顶部有 一台交换机,这台交换机被形象地称为机架顶部(Top of Rack,TOR)交换机,它们与机架上的主机互联,并与数据中心中的其他交换机互联。

据中心网络支持两种类型的流量:在外部客户与内部主机之间流动的流量,以及内部主机之间流动的流量。为了处理外部客户与内部主机之间流动的流量,数据中心网络包括了一台或者多台边界路由器(bordeT router),它们将数据中心网络与公共因特网相连。 数据中心网络因此需要将所有机架彼此互联,并将机架与边界路由器连接。

在这里插入图片描述

  • 负载均衡

一个云数据中心,如一个谷歌或者微软的数据中心,能够同时提供诸如搜索、电子邮件和视频应用等许多应用。为了支持来自外部客户的请求,每一个应用都与一个公开可见的IP地址关联,外部用户向该地址发送其请求并从该地址接收响应。在数据中心内部,外部请求首先被定向到一个负载均衡器(load balancer)。负载均衡器的任务是向主机分发请求,以主机当前的负载作为函数来在主机之间均衡负载。一个大型的数据中心通常会有几台负载均衡器,每台服务于一组特定的云应用。由于负载均衡器基于分组的目的端口号(第四层)以及目的IP地址做决策,因此它们常被称为“第四层交换机”。一旦接收到一个对于特定应用程序的请求,负载均衡器将该请求分发到处理该应用的某一台主机上(该 主机可能再调用其他主机的服务来协助处理该请求)。当主机处理完该请求后,向负载均衡器回送响应,再由负载均衡器将其中继发回给外部客户。负载均衡器不仅平衡主机间的工作负载,而且还提供类似NAT的功能,将外部IP地址转换为内部适当主机的IP地址,然后将反方向流向客户的分组按照相反的转换进行处理。这防止客户直接接触主机,从而具有隐藏网络内部结构和防止客户直接与主机交互等安全性益处。

  • 等级体系结构

当主机规模扩展到几万至几十万的时候,数据中心通常应用路由器和交换机等级结构(hierarchy of router and switch)

至此我们学习了链路层!

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值