计算机基础(笔记)——计算机网络(链路层)
Posted XML火柴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机基础(笔记)——计算机网络(链路层)相关的知识,希望对你有一定的参考价值。
链路层
在链路层中,会讨论到两种截然不同类型的链路层信道。第一种类型是广播信道,这种信道用于连接有线局域网、卫星网和混合光纤同轴电缆( Hybrid Fiber Coaxialcable,HFC)接入网中的多台主机。因为许多主机与相同的广播信道连接,需要所谓的媒体访问协议来协调帧传输。在某些场合中,可以使用中心控制器来协调传输。第二种类型的链路层信道是点对点通信链路,这在诸如长距离链路连接的两台路由器之间,或用户办公室计算机与它们所连接的邻近以太网交换机之间等场合经常能够发现。点到点协议( Point-toPoint Protocol,PPP),该协议的适用范围从经电话线的拨号服务到经光纤链路的高速点到点帧传输。
链路层概述
将运行链路层协议(即第2层)协议的任何设备均称为 结点(node)。结点包括主机、路由器、交换机和WiFi接入点。我们也把沿着通信路径连接相邻结点的通信信道称为 链路(link)。为了将一个数据报从源主机传输到目的主机,数据报必须通过沿端到端路径上的各段链路传输。
链路层提供的服务
尽管任一链路层的基本服务都是将数据报通过单一通信链路从一个结点移动到相邻结点,但所提供的服务细节能够随着链路层协议的不同而变化。链路层协议能够提供的可能服务包括:
- 成帧( framing)。在每个网络层数据报经链路传送之前,几乎所有的链路层协议都要将其用链路层帧封装起来。一个帧由一个数据字段和若干首部字段组成,其中网络层数据报就插在数据字段中。帧的结构由链路层协议规定。
- 链路接入。媒体访问控制( Medium Access Control,MAC)协议规定了帧在链路上传输的规则。对于在链路的一端仅有一个发送方、链路的另一端仅有一个接收方的点对点链路,MAC协议比较简单(或者不存在),即无论何时链路空闲,发送方都能够发送帧。更有趣的情况是当多个结点共享单个广播链路时,即所谓多路访问问题。这里,MAC协议用于协调多个结点的帧传输。
- 可靠交付。当链路层协议提供可靠交付服务时,它保证无差错地经链路层移动每个网络层数据报。前面讲过,某些运输层协议(例如TCP)也提供可靠交付服务。与运输层可靠交付服务类似,链路层的可靠交付服务通常是通过确认和重传取得的链路层可靠交付服务通常用于易于产生高差错率的链路,其目的是本地(也就是在差错发生的链路上)纠正一个差错,而不是通过运输层或应用层协议迫使进行端到端的数据重传。然而,对于低比特差错的链路,包括光纤、同轴电缆和许多双绞铜线链路,链路层可靠交付可能会被认为是一种不必要的开销。由于这个原因,许多有线的链路层协议不提供可靠交付服务。
- 差错检测和纠正。当帧中的一个比特作为1传输时,接收方结点中的链路层硬件可能不正确地将其判断为0,反之亦然。这种比特差错是由信号衰减和电磁噪声导致的。因为没有必要转发一个有差错的数据报,所以许多链路层协议提供一种机制来检测这样的比特差错。通过让发送结点在帧中包括差错检測比特,让接收结点进行差错检查,以此来完成这项工作。运输层和网络层也提供了有限形式的差错检测,即因特网检验和。链路层的差错检测通常更复杂,并且用硬件实现。差错纠正类似于差错检测,区别在于接收方不仅能检测帧中出现的比特差错,而且能够准确地确定帧中的差错出现的位置(并因此纠正这些差错)。
链路层在何处实现
链路层的主体部分是在网络适配器( network adapter)中实现的,网络适配器有时也称为网络接口卡( Network Interface Card,NC)。位于网络适配器核心的是链路层控制器,该控制器通常是一个实现了许多链路层服务(成帧、链路接入、差错检测等)的专用芯片。因此,链路层控制器的许多功能是用硬件实现的。例如, Intel I的8254x控制器[ Intel2012]实现了以太网协议。
在发送端,控制器取得了由协议较高层生成并存储在主机内存中的数据报,在链路层帧中封装该数据报(填写该帧的各个字段),然后遵循链路接入协议将该帧传进通信链路中。在接收端,控制器接收了整个帧,抽取出网络层数据报。如果链路层执行差错检测,则需要发送控制器在该帧的首部设置差错检测比特,由接收控制器执行差错检测。
尽管大部分链路层是在硬件中实现的,但部分链路层是在运行于主机CPU上的软件中实现的。链路层的软件组件实现了高层链路层功能,如组装链路层寻址信息和激活控制器硬件。在接收端,链路层软件响应控制器中断(例如,由于一个或多个帧的到达),处理差错条件和将数据报向上传递给网络层。所以,链路层是硬件和软件的结合体,即此处是协议钱中软件与硬件交接的地方。
差错检测和纠正技术
比特级差错检测和纠正(bit- level error detection and correotion),即对从一个结点发送到另一个物理上连接的邻近结点的链路层帧中的比特损伤进行检测和纠正,它们通常是链路层提供的两种服务。
在发送结点,为了保护比特免受差错,使用差错检测和纠正比特(Eror- Detection and- Correction,EDC)来增强数据D。通常,要保护的数据不仅包括从网络层传递下来需要通过链路传输的数据报,而且包括链路首部中的链路级的寻址信息、序号和其他字段。
差错检测和纠正技术使接收方有时但并总是检测出已经出现的比特差错。即使采用差错检测比特,也还是可能有未检出比特差错( undetected bit error);这就是说,接收方可能无法知道接收的信息中包含着比特差错。因此,接收方可能向网路层交付一个损伤的数据报,或者不知道该帧首部的某个其他字段的内容已经损伤。因此要选择一个差错检测方案,使得这种事件发生的概率很小。一般而言,差错检测和纠错技术越复杂(即那些具有未检测出比特差错概率较小的技术),导致的开销就越大,这就是意味着需要更多的计算量及更多的差错检测和纠错比特。
在传输数据中检测差错的3种技术:奇偶校验(它用来描述差错检测和纠正背后隐含的基本思想)、检验和方法(它通常更多地应用于运输层)和循环冗余检测(它通常更多地应用在适配器中的链路层)。
奇偶校验
奇偶校验(Parity Check)是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。
采用单个奇偶校验位方式,接收方的操作也很简单。接收方只需要数一数接收的d+1比特中1的数目即可。如果在采用偶校验方案中发现了奇数个值为1的比特,接收方知道至少出现了一个比特差错。更精确的说法是,出现了 奇数个比特差错。其他多维奇偶校验维基百科:Multidimensional parity-check code
- 工作方式
为了能检测和纠正内存软错误,首先出现的是内存“奇偶校验”。内存中最小的单位是比特,也称为“位”,位只有两种状态分别以1和0来标示,每8个连续的比特叫做一个字节(byte)。不带奇偶校验的内存每个字节只有8位,如果其某一位存储了错误的值,就会导致其存储的相应数据发生变化,进而导致应用程序发生错误。而奇偶校验就是在每一字节(8位)之外又增加了一位作为错误检测位。在某字节中存储数据之后,在其8个位上存储的数据是固定的,因为位只能有两种状态1或0,假设存储的数据用位标示为1、1、1、0、0、1、0、1,那么把每个位相加(1+1+1+0+0+1+0+1=5),结果是奇数。对于偶校验,校验位就定义为1,反之则为0;对于奇校验,则相反。当CPU读取存储的数据时,它会再次把前8位中存储的数据相加,计算结果是否与校验位相一致。从而一定程度上能检测出内存错误,奇偶校验只能检测出错误而无法对其进行修正,同时虽然双位同时发生错误的概率相当低,但奇偶校验却无法检测出双位错误。 - 优缺点
奇偶校验有两种类型:奇校验和偶校验。奇偶校验位是一个表示给定位数的二进制数中1的个数是奇数或者偶数的二进制数,奇偶校验位是最简单的错误检测码。如果传输过程中包括校验位在内的奇数个数据位发生改变,那么奇偶校验位将出错表示传输过程有错误发生。因此,奇偶校验位是一种错误检测码,但是由于没有办法确定哪一位出错,所以它不能进行错误校正。发生错误时必须扔掉全部的数据,然后从头开始传输数据。在噪声很多的媒介上成功传输数据可能要花费很长的时间,甚至根本无法实现。但是奇偶校验位也有它的优点,它是使用一位数据能够达到的最好的校验码,并且它仅仅需要一些异或门就能够生成。奇偶校验被广泛应用。
检验和方法
检验和(checksum),在数据处理和数据通信领域中,用于校验目的地一组数据项的和。它通常是以十六进制为数制表示的形式。如果校验和的数值超过十六进制的FF,也就是255. 就要求其补码作为校验和。通常用来在通信中,尤其是远距离通信中保证数据的完整性和准确性。
-
步骤
发送方生成检验和- 将发送的进行检验和运算的数据分成若干个16位的位串,每个位串看成一个二进制数,这里并不管字符串代表什么,是整数、浮点数还是位图都无所谓。
- 将IP、UDP或TCP的PDU首部中的检验和字段置为0,该字段也参与检验和运算。
- 对这些16位的二进制数进行1的补码和(one’s complement sum)运算,累加的结果再取反码即生成了检验码。将检验码放入检验和字段中。其中1的补码和运算,即带循环进位(end round carry)的加法,最高位有进位应循环进到最低位。反码即二进制各位取反,如0111的反码为1000。
接收方校验检验和
- 接收方将接收的数据(包括检验和字段)按发送方的同样的方法进行1的补码和运算,累加的结果再取反码。
- 校验,如果上步的结果为0,表示传输正确;否则,说明传输有差错。
检验和算法示例
#include<stdio.h>
int main()
int a[8]=0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08;
int i,sum=0;
for (i=0;i<8;i++)
sum+=a[i];//将每个数相加
if(sum>0xff)
sum=~sum;
sum+=1;
sum=sum&0xff;
printf("0x%x\\n",sum);
一个简单检验和方法就是将这k比特整数加起来,并且用得到的和作为差错检测比特。 因特网检验和( Internet checksum)就基于这种方法,即数据的字节作为16比特的整数对待并求和。这个和的反码形成了携带在报文段首部的因特网检验和。接收方通过对接收的数据(包括检验和)的和取反码,并且检测其结果是否为全1比特来检测检验和。如果这些比特中有任何比特是0,就可以指示出差错。RFC1071详细地讨论因
特网检验和算法和它的实现。在TCP和UDP协议中,对所有字段(包括首部和数据字段)都计算因特网检验和。
检验和方法需要相对小的分组开销。例如,TCP和UDP中的检验和只用了16比特。然而,与后面要讨论的常用于链路层的CRC相比,它们提供相对弱的差错保护。运输层通常是在主机中作为用户操作系统的一部分用软件实现的。因为运输层差错检測用软件实现,采用简单而快速如检验和这样的差错检测方案是重要的。在另一方面,链路层的差错检测在适配器中用专用的硬件实现,它能够快速执行更复杂的CRC操作。
循环冗余检测
现今的计算机网络中广泛应用的差错检测技术基于 循环冗余检测( Cyelie RedundaCheck,CRC)编码。CRC编码也称为多项式编码( polynomial code),因为该编码能够将要发送的比特串看作为系数是0和1一个多项式,对比特串的操作被解释为多项式算术。
循环冗余校验(Cyclic redundancy check,通称“CRC”)是一种根据网上数据包或计算机文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。生成的数字在传输或者存储之前计算出来并且附加到数据后面,然后接收方进行检验确定数据是否发生变化。一般来说,循环冗余校验的值都是32位的整数。由于本函数易于用二进制的计算机硬件使用、容易进行数学分析并且尤其善于检测传输通道干扰引起的错误,因此获得广泛应用。
CRC为校验和的一种,是两个字节数据流采用二进制除法(没有进位,使用XOR来代替减法)相除所得到的余数。其中被除数是需要计算校验和的信息数据流的二进制表示;除数是一个长度为(n+1)的预定义(短)的二进制数,通常用多项式的系数来表示。在做除法之前,要在信息数据之后先加上n个0.
CRC是基于有限域GF(2)(即除以2的同余)的多项式环。简单的来说,就是所有系数都为0或1(又叫做二进制)的多项式系数的集合,并且集合对于所有的代数操作都是封闭的。例如:
(x3+x)+(x+1)=x3+2x+x=x3+x
2会变成0,因为对系数的加法运算都会再取2的模数。乘法也是类似的:
(x2+x)(x+1)=x3+2x2+x=x3+x
我们同样可以对多项式作除法并且得到商和余数。例如,如果我们用x+x+x除以x+ 1。我们会得到:
(x3+x2+x)/(x+1)=(x2+1)-1/(x+1)
也就是说:
(x3+x2+x)=(x2+1)(x+1)-1
等价于:
(x2+x+1)x=(x2+1)(x+1)-1
这里除法得到了商x+ 1和余数-1,因为是奇数所以最后一位是1。
字符串中的每一位其实就对应了这样类型的多项式的系数。为了得到CRC,我们首先将其乘以 ,这里n是一个固定多项式的阶数,然后再将其除以这个固定的多项式,余数的系数就是CRC。
在上面的等式中,x2+x+x1表示了本来的信息位是111, 是所谓的钥匙,而余数1(也就是x0)就是CRC. key的最高次为1,所以我们将原来的信息乘上x1来得到x3+x2+x,也可视为原来的信息位补1个零成为1110。
一般来说,其形式为:
M(x)·xn=Q(x)K·(x)-R(x)
这里M(x)是原始的信息多项式。K(x)是n阶的“钥匙”多项式。M(x)·xn表示了将原始信息后面加上n个0。R(x)是余数多项式,即是CRC“校验和”。在通信中,发送者在原始的信息数据M后附加上n位的R(替换本来附加的0)再发送。接收者收到M和R后,检查M(x)·xn+R(x)是否能被K(x)整除。如果是,那么接收者认为该信息是正确的。值得注意的是M(x)·xn+R(x)就是发送者所想要发送的数据。这个串又叫做codeword.
CRCs经常被叫做“校验和”,但是这样的说法严格来说并不是准确的,因为技术上来说,校验“和”是通过加法来计算的,而不是CRC这里的除法。
“错误纠正编码”(Error–Correcting Codes,简称ECC)常常和CRCs紧密相关,其语序纠正在传输过程中所产生的错误。这些编码方式常常和数学原理紧密相关。例如常见于通信或信息传递上BCH码、前向错误更正、Error detection and correction等
多路访问链路和协议
在本章概述中,我们提到了有两种类型的网络链路:点对点链路和广播链路。点对点
链路( point-toe- point link)由链路一端的单个发送方和链路另一端的单个接收方组成。许
多链路层协议都是为点对点链路设计的,如点对点协议( point-- point protocol,PP)和高级数据链路控制(high- level datalink control,HDLC)就是两种这样的协议。第二种类型的链路是广播链路( broadcast ink),它能够让多个发送和接收结点都连接到相同的、单一的、共享的广播信道上。这里使用术语“广播”是因为当任何一个结点传输一个帧时,信道广播该帧,每个其他结点都收到一个副本。以太网和无线局域网是广播链路层技术的例子。:如何协调多个发送和接收结点对一个共享广播信道的访问,这就是多路访问问题( multiple aceessproblem)。广播信道通常用于局域网中,局域网是一个地理上集中在一座建筑物中(或者在一个公司,或者在大学校园)的网络。因此我
们还将在本节后面考察一下多路访问信道是如何在局域网中使用的。
我们都很熟悉广播的概念,因为自电视发明以来就使用了这种通信方式。但是传统的电視是一种一个方向的广播(即一个固定的结点向许多接收结点传输),而计算机网络广播信道上的结点既能够发送也能够接收。多路访问协议( multiple access protocol),即结点通过这些协议来规范它们在共享的广播信道上的传输行为。在各种各样的网络环境下需要多路访问协议,包括有线和无线接入网,以及卫星网络。尽管从技术上讲每个结点通过它的适配器访问广播信道,把结点作为发送和接收设备。在实践中,数以百计或者甚至数以千计个结点能够通过一个广播信道直接通信。
因为所有的结点都能够传输,所以多个结点可能会同时传输帧。当发生这种情况时,所有结点同时接到多个帧;这就是说,传输的帧在所有的接收方处碰撞( collide)了。通常,当碰撞发生时,没有一个接收结点能够有效地获得任何传输的帧;在某种意义下,碰撞帧的信号纠缠在一起。因此,涉及此次碰撞的所有帧都丢失了,在碰撞时间间隔中的广播信道被浪费了。显然,如果许多结点要频繁地传输帧,许多传输将导致碰撞,广播信道的大量带宽将被浪费掉。
当多个结点处于活跃状态时,为了确保广播信道执行有用的工作,以某种方式协调活跃结点的传输是必要的。这种协调工作由多路访问协议负责。
将任何多路访问协议划分为3种类型之一:信道划分协议( channel partitioning protocol)、随机接入协议( random access protocol)和轮流协议( taking- turns protocol)。
给出下列条件。在理想情况下,对于速率为Rbps的广播信道,多路访问协议应该具有以下所希望的特性:
- 当仅有一个结点有数据发送时,该结点具有Rbps的吞吐量
- 当有M个结点要发送数据时,每个结点春吐量为R/Mbps。这不必要求M结点中的每一个结点总是有RM的瞬间速率,而是每个结点在一些适当定义的时间间隔内应该有R/M的平均传输速率。
- 协议是分散的;这就是说不会因某主结点故障而使整个系统崩溃。
- 协议是简单的,使实现不昂费
信道划分协议
时分多路复用(TDM)和频分多路复用(FDM)是两种能够用于在所有共享信道结点之间划分广播信道带宽的技术。举例来说,假设一个支持N个结点的信道且信道的传输速率为Rbps。TDM将时间划分为时间帧( time frame),并进步划分每个时间帧为N个时隙(slo)。(不应当把TDM时间帧与在发送和接收适配器之间交换的链路层数据单元相混淆,后者也被称为帧。为了减少混乱,在本小节中我们将链路层交换的数据单元称为分组。)然后把每个时隙分配给N个结点中的一个。无论何时某个结点在有分组要发送的时候,它在循环的TDM帧中指派给它的时隙内传输分组比特。通常,选择的时隙长度应使一个时隙内能够传输单个分组。
TDM是有吸引力的,因为它消除了碰撞而且非常公平:每个结点在每个帧时间内得到了专用的传输速率 R/N bps。然而它有两个主要缺陷。首先,结点被限制于R/Nbps的平均速率,即使当它是唯一有分组要发送的结点时。其次,结点必须总是等待它在传输序列中的轮次,即我们再次看到,即使它是唯一一个有帧要发送的结点。
TDM在时间上共享广播信道,而FDM将Rbps信道划分为不同的频段(每个频段具有B/N带宽),并把每个频率分配给N个结点中的一个。因此FDM在单个较大的Rbps信道中创建了N个较小的R/Nbps信道。FDM也有TDM同样的优点和缺点。它避免了碰撞,在N个结点之间公平地划分了带宽。然而,FDM也有TDM所具有的主要缺点,也就是限制一个结点只能使用R/N的带宽,即使当它是唯一一个有分组要发送的结点时。第三种信道划分协议是码分多址( Code Division Multiple Access,CDMA)。TDM和FDM分别为结点分配时隙和频率,而CDMA对每个结点分配一种不同的编码。然后每个结点用它唯一的编码来对它发送的数据进行编码。如果精心选择这些编码,CDMA网络具有一种奇妙的特性,即不同的结点能够同时传输,并且它们各自相应的接收方仍能正确接收发送方编码的数据比特(假设接收方知道发送方的编码),而不在乎其他结点的干扰传输。CDMA已经在军用系统中使用了一段时间(由于它的抗干扰特性)。
随机接入协议
第二大类多访问协议是随机接入协议。在随机接入协议中,一个传输结点总是以信道的全部速率(即Rbps)进行发送。当有碰撞时,涉及碰撞的每个结点反复地重发它的帧(也就是分组),到该帧无碰撞地通过为止。但是当一个结点经历一次碰撞时,它不必立刻重发该帧。相反,它在重发该之前等待一个随机时延。涉及碰撞的每个结点独立地选择随机时延。因为该随机时延是独立地选择的,所以下述现象是有可能的:这些结点之一所选择的时延充分小于其他碰撞结点的时延,并因此能够无碰撞地将它的帧在信道中发出。
时隙 ALOHA
在对时隙 ALOHA的描述中,我们做下列假设
- 所有帧由L比特组成。
- 时间被划分成长度为L/R秒的时隙(这就是说,一个时隙等于传输一帧的时间)。
- 结点只在时隙起点开始传输帧。
- 结点是同步的,每个结点都知道时隙何时开始。
- 如果在一个时隙中有两个或者更多个帧碰撞,则所有结点在该时隙结束之前检测到该碰撞事件。
令P是一个概率,即一个在0和1之间的数。在每个结点中,时隙 ALOHA的操作是简单的。
当结点有一个新帧要发送时,它等到下一个时隙开始并在该时隙传输整个帧。如果没有碰撞,该结点成功地传输它的帧,从而不需要考虑重传该帧。(如果该结点有新帧,它能够为传输准备一个新帧。如果有碰撞,该结点在时隙结束之前检測到这次碰撞。该结点以概率P在后续的每个时隙中重传它的帧,直到该帧被无碰撞地传输出去。
时隙ALOHA看起来有很多优点。与信道划分不同,当某结点是唯一活跃的结点时(一个结点如果有帧要发送就认为它是活跃的),时隙 ALOHA允许该结点以全速R连续传输。时隙 ALOHA也是高度分散的,因为每个结点检测碰撞井独立地决定什么时候重传(然而,时隙 ALOHA的确需要在结点中对时隙同步;时隙 ALOHA也是个极为简单的协议。
ALOHA
时隙 ALOHA协议要求所有的结点同步它们的传输,以在每个时隙开始时开始传输。第一个 ALOHA协议实际上是一个非时隙、完全分散的协议。在纯 ALOHA中,当一帧首次到达(即一个网络层数据报在发送结点从网络层传递下来),结点立刻将该帧完整地传输进广播信道。如果一个传输的帧与一个或多个传输经历了碰撞,这个结点将立即(在完全传输完它的碰撞帧之后)以概率p重传该帧。否则,该结点等待一个帧传输时间。
在此等待之后,它则以概率P传输该帧,或者以概率1-p在另一个时间等待(保持空闲)。
载波侦听多路访问(CSMA)
在时隙和纯 ALOHA中,一个结点传输的决定独立于连接到这个广播信道上的其他结点的活动。特别是,一个结点不关心在它开始传输时是否有其他结点碰巧在传输,而且即使有另一个结点开始干扰它的传输也不会停止传输。,即当一个传输结点在传输时一直在侦听此信道。如果它检测到另
个结点正在传输干扰帧,它就停止传输,在重复“侦听-当空闲时传输”循环之前等待一段随机时间。
这两个规则包含在载波侦听多路访问( Carrier Sense Multiple Access,CSMA)和具有碰撞检测的CSMA( CSMA with Collision Detection, CSMA/CD)协议族中。
具有碰撞检测的载波侦听多路访问
在分析 CSMA/CD协议之前,从与广播信道相连的适配器(在结点中)的角
度总结它的运行:
- 适配器从网络层一条获得数据报,准备链路层帧,并将其放入帧适配器缓存中。
- 如果适配器侦听到信道空闲(即无信号能量从信道进入适配器),它开始传输帧,在另一方面,如果适配器侦听到信道正在忙,它将等待,直到侦听到没有信号能量时才开始传输帧。
- 在传输过程中,适配器监视来自其他使用该广播信道的适配器的信号能量的存在。
- 如果适配器传输整个帧而未检測到来自其他适配器的信号能量,该适配器就完成了该帧。在另一方面,如果适配器在传输时检测到来自其他适配器的信号能量,它中止传输(即它停止了传输帧)。
- 中止传输后,适配器等待一个随机时间量,然后返回步骤2。
等待一个随机(而不是固定)的时间量的需求是明确的一一如果两个结点同时传输帧,然后这两个结点等待相同固定的时间量,它们将持续碰撞下去。但选择随机回退时间的时间间隔多大为好呢?如果时间间隔大而碰撞结点数量小,在重复“侦听一当空闲时传输”的步骤前,结点很可能等待较长的时间(使信道保持空闲)。在另一方面,如果时间间隔小而碰撞结点数量大,很可能选择的随机值将几乎相同,传输结点将再次碰撞。我们希望时间间隔应该这样:当碰撞结点数量较少时,时间间隔较短;当碰撞结点数量较大时,时间间隔较长。
用于以太网以及 DOCSIS电缆网络多路访问协议中的二进制指数后退( binary exponential backoff)算法,简练地解决了这个问题。特别是,当传输一个给定帧时,在该帧经历了一连串的n次碰撞后,结点随机地从[0,1,2,…,2n-1]中选择一个K值。因此,一个帧经历的碰撞越多、,K选择的间隔越大。对于以太网,一个结点等待的实际时间量是K・512比特时间(即发送512比特进入以太网所需时间量的K倍),n能够取的最大值在10以内。
CSMA/CD效率
CSMA/CD效率( efficiency of CSMA/CD)定义为:当有大量的活跃结点且每个结点有大量的帧要发送时,帧在信道中无碰撞地传输的那部分时间在长期运行时间中所占的份额。为了给出效率的一个闭式的近似表示,令dprop表示信号能量在任意两个适配器之间传播所需的最大时间。令dtrans表示传输一个最大长度的以太网帧的时间(对于10Mbps的以太网,该时间近似为1.2毫秒)。
效率=1/(1+5dprop/dtrans)
轮流协议
多路访问协议的两个理想特性是:①当只有一个结点活跃时,该活跃结点具有Rbps的吞吐量;②当有M个结点活跃时,每个活跃结点的吞吐量接近R/Mbps。 ALOHA和CSMA协议具备第一个特性,但不具备第二个特性。这激发研究人员创造另一类协议,也就是 轮流协议( taking- turns protoeol)。和随机接入协议一样,有几十种轮流协议,其中每个协议又都有很多变种。这里我们要讨论两种比较重要的协议。
第一种是 轮询协议( polling protocol)。轮询协议要求这些结点之一要被指定为主结点。主结点以循环的方式轮询(pl)每个结点。特别是,主结点首先向结点1发送一个报文,告诉它(结点1)能够传输的帧的最多数量。在结点1传输了某些帧后,主结点告诉结点2它(结点2)能够传输的帧的最多数量。上述过程以这种方式继续进行,主结点以循环的方式轮询了每个结点轮询协议消除了困扰随机接入协议的碰撞和空时隙,这使得轮询取得高得多的效率。
但是它也有一些缺点。第一个缺点是该协议引入了轮询时延,即通知一个结点“它可以传输”所需的时间。例如,如果只有一个结点是活跃的,那么这个结点将以小于Rbps的速率传输,因为每次活跃结点发送了它最多数量的帧时,主结点必须依次轮询每一个非活跃的结点。第二个缺点可能更为严重,就是如果主结点有故障,整个信道都变得不可操作。
第二种轮流协议是 令牌传递协议(oken- passing protocol)。在这种协议中没有主结点。一个称为 令牌( token)的小的特殊帧在结点之间以某种固定的次序进行交换。例如,结点1可能总是把令牌发送给结点2,结点2可能总是把今牌发送给结点3,而结点N可能总是把令牌发送给结点1。当一个结点收到令牌时,仅当它有一些帧要发送时,它才持有这个令牌;否则,它立即向下一个结点转发该令牌。当一个结点收到令牌时,如果它确实有顿要传输,它发送最大数目的帧数,然后把令牌转发给下一个结点。令牌传递是分散的,并有很高的效率。但是它也有自己的一些问题。例如,一个结点的故障可能会使整个信道崩溃。或者如果一个结点偶然忘记了释放令牌,则必须调用某些恢复步骤使令牌返回到循环中来。
DOCSIS:用于电缆因特网接入的链路层协议
一个电缆接入网通常在电缆网头端将几千个住宅电缆调制解调器与一个 电缆调制解调器端接系统( Cable Modem Termination System,CMTS)连接。数据经电缆服务接口(Data-Over- Cable Service Interface,CMTS)规范( DOCSIS) DOCSIS2012]定义了电缆数据网络体系结构及其协议。 DOCSIS使用FDM将下行(CMTS到调制解调器)和上行(调制解调器到CMTS)网络段划分为多个频率信道。每个下行信道宽6MHz,每个信道具有大约40Mhps吞吐量;每个上行信道具有6.4MHz的最大信道带宽,并且最大的上行吞吐量约为30Mbps。每个上行和下行信道均为广播信道。CMTS在下行信道中传输的帧被所有在信道上做接收的电缆调制解调器接收到;然而因为仅有单一的CMTS在下行信道上传输,不存在多路访问问题。但在上行方向,存在着多个有趣的技术挑战,因为多个电缆调制解调器共享到CMTS的相同上行信道(频率),因此能够潜在地出现碰撞。
每条上行信道被划分为时间间隔(类似于TDM),每个时间间隔包含序列微时隙,电缆调制解调器可在该微时隙中向CMTS传输。CMTS显式地准许各个电缆调制解调器在特定的微时隙中进行传输。CMIS在下行信道上通过发送称为MAP报文的控制报文,指定哪个电缆调制解调器(带有要发送的数据)能够在微时隙中传输由控制报文指定的时间间隔。由于微时隙明确分配给电缆调制解调器,故CMTS能够确保在微时隙中没有碰撞传输。
但是CMTS一开始是如何知道哪个电缆调制解调器有数据要发送呢?通过让电缆调制解调器在专用于此目的的一组特殊的微时隙间隔内向CMIS发送微时隙请求帧来完成该任务。这些微时隙请求帧以随机接入方式传输,故可能相互碰撞。电缆调制解调器既不能侦听上行信道是否忙,也不能检测碰撞。相反,该电缆调制解调器如果没有在下一个下行控制报文中收到对请求分配的响应的话,就推断出它的微时隙请求帧经历了一次碰撞。当推断出一次碰撞,电缆调制解调器使用二进制指数回退将其微时隙请求帧延缓到以后的时隙重新发送。当在上行信道上有很少的流量,电缆调制解调器可能在名义上分配给微时隙请求帧的时隙内实际传输数据帧(因此避免不得不等待微时隙分配)因此,电缆接人网可作为应用多路访问协议(即FDM、TDM、随机接入和集中分配时隙都用于一个网络中)的一个极好例子。
交换局域网
链路层寻址和ARP
- MAC地址
事实上,并不是主机或路由器具有链路层地址,而是它们的适配器(即网络接口)具有链路层地址。因此,具有多个网络接口的主机或路由器将具有与之相关联的多个链路层地址,就像它也具有与之相关联的多个IP地址一样。然而,重要的是注意到链路层交换机并不具有与它们的接口(这些接口是与主机和路由器相连的)相关联的链路层地址。这是因为链路层交换机的任务是在主机与路由器之间承载数据报;交换机透明地执行该项任务,这就是说,主机或路由器不必明确地将帧寻址到其间的交换机。链路层地址有各种不同的称呼:LAN地址( LAN address))、物理地址( physicaldres)或MAC地址( MAC address)。因为MAC地址似乎是最为流行的术语,所以我们此后就将链路层地址称为MAC地址。对于大多数局域网(包括以太网和802.11无线局域网)而言,MAC地址长度为6字节,共有248个可能的MAC地址。这些6个字节地址通常用十六进制表示法,地址的每个字节被表示为一对十六进制数。尽管MAC地址被设计为水久的,但用软件改变一块适配器的MAC地址现在是可能的。
MAC地址的一个有趣性质是没有两块适配器具有相同的地址。考虑到适配器是由许多不同国家和地区的不同公司生产的,这看起来似乎是件神奇之事。中国台湾生产适配器的公司如何能够保证与比利时生产适配器的公司使用不同的地址呢?答案是IEEE在管理着该MAC地址空间。特别是,当个公司要生产适配器时,它支付象征性的费用购买组成248个地址的一块地址空间。IEEE分配这块248个地址的方式是:固定一个MAC地址的前24比特,让公司自己为每个适配器生成后24比特的唯一组合。
适配器的MAC地址具有扁平结构(这与层次结构相反),而且不论适配器到哪里用都不会变化。带有以太网接口的便携机总具有同样的MAC地址,无论该计算机位于何方。具有802.11接口的一台智能手机总是具有相同的MAC地址,无论该智能手机到哪里。与之形成对照的是,前面说过的IP地址具有层次结构(即一个网络部分和一个主机部分),而且当主机移动时,主机的IP地址需要改变,即改变它所连接到的网络。适配器的MAC地址与人的社会保险号相似,后者也具有扁平寻址结构,而且无论人到哪里该号码都不会变化。IP地址则与一个人的邮政地址相似,它是有层次的,无论何时当人搬家时,该地址都必须改变。就像一个人可能发现邮政地址和社会保险号都有用那样,一台主机具有一个网络层地址和一个MAC地址是有用的。
当某适配器要向某些目的适配器发送一个帧时,发送适配器将目的适配器的MAC地址插入到该帧中,并将该帧发送到局域网上。如我们马上要看到的那样,一台交换机偶尔将一个人帧广播到它的所有接口。我们将在第6章中看到802.11也广播帧。因此一块适配器可以接收一个并非向它寻址的帧。这样,当适配器接收到一个帧时,将检查该帧中的目的MAC地址是否与它自己的MAC地址匹配。如果匹配,该适配器提取出封装的数据报,并将该数据报沿协议栈向上传递。如果不匹配,该适配器丢弃该帧,而不会向上传递该网络层数据报。所以,仅当收到该帧时,才会中断目的地。
然而,有时某发送适配器的确要让局域网上所有其他适配器来接收并处理它打算发送的帧。在这种情况下,发送适配器在该帧的目的地址字段中插入一个特殊的MAC广播地址( broadcast address)。对于使用6字节地址的局域网(例如以太网和802.11)来说,广播地址是48个连续的1组成的字符串(即以十六进制表示法表示的F-FF-FF-FF-FF-FF)。 - 地址解析协议
因为存在网络层地址(例如,因特网的IP地址)和链路层地址(即MAC地址),所以需要在它们之间进行转换。对于因特网而言,这是地址解析协议( Address ResolutionProtocol,ARP)RFC 826的任务。
每台主机或路由器在其内存中具有一个ARP表( ARP table),这张表包含IP地址到MAC地址的映射关系。
关于ARP协议有两件有趣的事情需要注意。首先,查询ARP报文是在广播帧中发送的,而响应ARP报文在一个标准帧中发送。在继续阅读之前,你应该思考一下为什么这样。其次,ARP是即插即用的,这就是说,一个ARP表是自动建立的,即它不需要系统管理员来配置。并且如果某主机与子网断开连接,它的表项最终会从留在子网中的结点的表中删除掉。
一个ARP分组封装在链路层帧中,因而在体系结构上位于链路层之上。然而,一个ARP分组具有包含链路层地址的字段,因而可认为是链路层协议,但它也包含网络层地址,因而也可认为是为网络层协议。所以,可能最好把ARP看成是跨越链路层和网络层边界两边的协议。 - 发送数据报到子网以外
一旦发送适配器有了这个MAC地址,它创建一个帧,并把该帧发送到子网中。在子网上的路由器适配器看到该链路层帧是向它寻址的,因此把这个顿传递给路由器的网络层。该IP数据报终于被成功地从源主机移动到这台路由器了!要将该数据报从路由器移动到目的地。路由器现在必须决定该数据报要被转发的正确接口。这是通过查询路由器中的转发表来完成的。转发表告诉这台路由器该数据报要通过路由器接口转发。然后该接口把这个数据报传递给它的适配器,适配器把该数据报封装到一个新的帧中,并且将帧发送进子网中。这时,该帧的目的MAC地址确实是最终目的地MAC地址。路由器又是怎样获得这个目的地MAC地址的呢?当然是用ARP获得的。
以太网
首先,以太网是第一个广泛部署的高速局域网。因为它部署得早,网络管理员非常熟悉以太网(它的奇迹和它的奇思妙想),并当其他局域网技术问世时,他们不愿意转而用之。其次,令牌环、FDDI和ATM比以太网更加复杂、更加昂贵,这就进一步阻碍了网络管理员改用其他技术。第三,改用其他局域网技术(例如FDDI和ATM)的最引人注目的原因通常是这些新技术具有更高数据速率;然而以太网总是奋起抗争,产生了运行在相同或更高数据速率下的版本。20世纪90年代初期还引入了交换以太网,这就进一步増加了它的有效数据速率。最后,由于以太网已经很流行了,所以以太网硬件(尤其是适配器和交换机)成为了一个普通商品,而且极为便宜。
初始的以太局域网使用同轴电缆总线来互联结点。以太网的总线拓扑实际上从20世纪80年代到90年代中期一直保持不变。使用总线拓扑的以太网是一种广播局域网,即所有传输的顿传送到与该总线连接的所有适配器并被其处理。
到了20世纪90年代后期,大多数公司和大学使用一种基于集线器的星形拓扑以太网安装替代了它们的局域网。在这种安装中,主机(和路由器)直接用双绞对铜线与一台集线器相连。 集线器(hub)是一种物理层设备,它作用于各个比特而不是作用于顿。当表示一个0或一个1的比特到达一个接口时,集线器只是重新生成这个比特,将其能量强度放大,并将该比特向其他所有接口传输出去。因此,采用基于集线器的星形拓扑的以太网也是一个广播局域网,即无论何时集线器从它的一个接口接收到一个比特,它向其所有其他接口发送该比特的副本。特别是,如果某集线器同时从两个不同的接口接收到帧,将出现一次碰撞,生成该帧的结点必须重新传输该帧。
在21世纪早期,以太网又经历了一次重要的革命性変化。以太网安装继续使用星形拓扑,但是位于中心的集线器被 交换机( switch)所替代。仅知道交换机不仅是“无碰撞的”,而且也是名副其实的存储转发分组交换机就可以了;但是与运行在高至第3层的路由器不同,交换机仅运行在第2层。
- 以太网帧结构
为了将对以太网帧的讨论放到切实的环境中,考虑从一台主机向另一台主机发送一个IP数据报,且这两台主机在相同的以太局域网上 (尽管以太网帧的负载是一个P数据报,但我们注意到以太网帧也能够承载其他网络层分组。)设发送适配器(即适配器A)的MAC地址是A-AA-AA-AA-AA-AA,接收适配器(即适配器B)的MAC地址是BB-BB-B-BB-BB-B。发送适配器在一个以太网顿中封装了一个P数据报,并把该帧传递到物理层。接收适配器从物理层收到这个顿,提取出IP数据报,并将该P数据报传递给网络层。我们现在在这种情况下考察如表所示的以太网帧的6个字段:
前同步码 | 目的地址 | 源地址 | 类型 | 数据 | CRC |
---|
- 数据字段(46~1500字节)。这个字段承载了P数据报。以太网的最大 **传输单元(MTU)**是1500字节。这意味着如果P数据报超过了1500字节,则主机必须将该数据报分片。数据字段的最小长度是46字节。这意味如果IP数据报小于46字节,数据报必须被填充到46字节。当采用填充时,传递到网络层的数据包括P数据报和填充部分。网络层使用IP数据报首部中的长度字段来去除填充部分。
- 目的地址(6字节)。这个字段包含目的适配器的MAC地址,即BB-BB-BB-BB-BB-BB。当适配器B收到一个以太网帧,帧的目的地址无论是BB-BB-BB-BB-BB-BB,还是MAC广播地址,它都将该帧的数据字段的内容传递给网络层;如果它收到了具有任何其他MAC地址的帧,则丢弃之.
- 源地址(6字节)。这个字段包含了传输该帧到局域网上的适配器的MAC地址.
- 类型字段(2字节)。类型字段允许以太网复用多种网络层协议。主机能够使用除了IP以外的其他网络层协议。事实上,一台给定的主机可以支持多种网络层协议,以对不同的应用采用不同的协议。因此,当以太网帧到达适配器,适配器需要知道它应该将数据字段的内容传递给哪个网络层协议(即分解)。IP和其他链路层协议(例如, Novell IPX或 Apple Talk)都有它们各自的、标准化的类型编号。此外,ARP协议(在上一节讨论过)有自己的类型编号,并且如果到达的帧包含ARP分组(即类型字段的值为十六进制的0806),则该ARP分组将被多路分解给ARP协议。注意到该类型字段和网络层数据报中的协议字段、运输层报文段的端口号字段相类似;所有这些字段都是为了把一层中的某协议与上一层的某协议结合起来。
- CRC(4字节)。CRC(循环冗余检测)字段的目的是使得接收适配器(适配器B)检测測帧中是否引入了差错。
- 前同步码(8字节)。以太网顿以一个8字节的前同步码( Preamble)字段开始。该前同步码的前7字节的值都是10101010;最后一个字节是10101011。前同步码字段的前7字节用于“唤醒”接收适配器,并且将它们的时钟和发送方的时钟同步。记住适配器的目的是根据以太局域网类型的不同,分别以10Mbps、100Mbps或者1Cbps的速率传输帧。然而,没有什么是完美无缺的,因此适配器A不会以精确的额定速率传输帧;相对于额定速率总有些漂移,局域网上的其他适配器不会预先知道这种漂移的。接收适配器只需通过锁定前同步码的前7字节的比特,就能够锁定适配器A的时钟。前同步码的第8个字节的最后两个比特(第一个出现的两个连续的1)警告其他适配器,“重要的内容”就要到来了。
所有的以太网技术都向网络层提供无连接服务。这就是说,当适配器A要向适配器B发送一个数据报时,适配器A在一个以太网帧中封装该数据报,并且把该帧发送到局域网上,没有先与适配器B握手。这种第二层的无连接服务类似于P的第三层数据报服务和UDP的第4层无连接服务。
以太网技术都向网络层提供不可靠服务( unreliable service)。特别是,当适配器B收到一个来自适配器A的帧,它对该帧执行CRC校验,但是当该帧通过CRC校验时它既不发送确认帧;而当该帧没有通过CRC校验时它也不发送否定确认帧。当某帧没有通过CRC校验,适配器B只是丢弃该帧。因此,适配器A根本不知道它传输的帧是否到达了B并通过了CRC校验。(在链路层)缺乏可靠的传输有助于使得以太网简单和便宜。但是它也意味着传递到网络层的数据报流能够有间隙。
如果由于丢弃了以太网帧而存在间隙,主机B上的应用也会看见这个间隙吗?这只取决于该应用是使用UDP还是使用TCP。如果应用使用的是UDP,则主机B中的应用的确会看到数据中的间隙。另一方面,如果应用使用的是TCP,则主机B中的TCP将不会确认包含在丢弃帧中的数据,从而引起主机A的TCP重传。注意到当TCP重传数据时,数据最终将回到曾经丢弃它的以太网适配器。因此,从这种意义上来说,以太网的确重传了数据,尽管以太网并不知道它是正在传输一个具有全新数据的全新数据报,还是一个包含已经被传输过至少一次的数据的数据报。
- 以太网技术
从历史上讲,以太网最初被构想为一段同轴电缆。早期的10BASE-2和10BASE-5标准规定了在两种类型的同轴电缆之上的10Mbps以太网,每种标准都限制在500米长度之内。通过使用 转发器( repeater)能够得到更长的运行距离,而转发器是一种物理层设备它能在输入端接收信号并在输出端再生该信号。同轴电缆很好地对应于我们将作为一种广播媒体的以太网视图,即由一个接口传输的所有帧可在其他接口收到,并且以太网的CSMA/CD协议很好地解决了多路访问问题。结点直接附着在电缆上。多年来以太网已经经历了一系列演化步骤,今天的以太网非常不同于使用同轴电缆的初始总线拓扑的设计。在今天大多数的安装中,结点经点对点的由双绞铜线或光纤线缆构
成的线段与一台交换机相连。
在20世纪90年代中期,以太网被标准化为100Mbps,比10Mbps以太网快10倍。初始的以太网MAC协议和帧格式保留了下来,但更高速率的物理层被定义为用铜线(100BASE-T)和用光纤(100BASE-FX、100BASE-SX、100BASE-BX)。100Mbps以太网用双绞线距离限制为100米,用光纤距离限制为几千米,允许把不同建筑物中的以太网交换机连接起来。初始总线拓扑的设计。在今天大多数的安装中,结点经点对点的由双绞铜线或光纤线缆构成的线段与一台交换机相连。
吉比特以太网是对极为成功的10Mbps和100Mbps以太网标准的扩展。吉比特以太网提供1000Mbps的总数据速率,与大量已经安装的以太网设备基础保持完全兼容。吉比特以太网的标准称为IEE802.3z,它完成以下工作:
使用标准以太网帧格式,并且后向兼容10BASE-T与100BASE-T技术。这使得吉比特以太网和现已安装的以太网设备基础很容易集成。允许点对点链路以及共享的广播信道。如前所述,点对点链路使用交换机,而广播信道使用集线器。在吉比特以太网术语中,集线器被称为“带缓存的分配器”。使用 CSMA/CD来共享广播信道。为了得到可接受的效率,结点之间的最大距离必须严格限制。
对于点对点信道,允许在两个方向上都以1000bps全双工操作。吉比特以太网最初工作于光纤之上,现在能够工作在5类UTP线缆上。10Cbps以太网(10 CBASE-T)于2007年已被标准化了,可提供更高的以太局域网能力。
在总线拓扑和基于集线器的星形拓扑技术时代,以太网很显然是一种广播链路,其中多个结点同时传输时会出现帧碰撞。为了处理这些碰撞,以太网标准包括了 CSMA/CD协议,该协议对于跨越一个小的地理半径的有线广播局域网特别有效。但是对于今天广为使用的以太网是基于交换机的星形拓扑,采用的是存储转发分组交换,是否还真正需要一种以太网MAC协议呢?如我们很快所见,交换机协调其传输,在任何时候决不会向相同的接口转发超过一个帧。此外,现代交换机是全双工的,这使得一台交换机和一个结点能够在同时向对方发送帧而没有干扰。换句话说,在基于交换机的以太局域网中,不会有碰撞,因此没有必要使用MAC协议了。
今天的以太网与 Metcalfe和Bogs在30多年前构想的初始以太网有非常大的不同,即速度已经增加了3个数量级,以太网帧承载在各种各样的媒体之上,交换以太网已经成为主流,此时甚至连MAC协议也经常是不必要的了!所有这些还真正是以太网吗?答案当然是:“是的,根据定义如此。”然而,注意到下列事实是有趣的:通过所有这些改变,的确还有一个历经30年保持未变的持久不变量,即以太网帧格式。也许这オ是以太网标准的一个真正重要的特征。
链路层交机
交换机的任务是接收入链路层帧并将它们转发到出链路。交换机自身对子网中的主机和路由器是 透明的(transparent);这就是说,某主机/路由器向另一个主机/路由器寻址一个帧(而不是向交换机寻址该帧),顺利地将该帧发送进局域网,并不知道某交换机将会接收该帧并将它转发到另一个结点。这些帧到达该交换机的任何输出接口之一的速率可能暂时会超过该接口的链路容量。为了解决这个问题,交换机输出接口设有缓存,这非常类似于路由器接口为数据报设有缓存。
- 交换机转发和过滤
过滤( filtering)是决定一个帧应该转发到某个接口还是应当将其丢弃的交换机功能。
转发( forwarding)是决定一个帧应该被导向哪个接口,并把该帧移动到那些接口的交换机功能。
交换机的过滤和转发借助于 交换机表( switch table)完成。该交换机表包含某局域网上某些主机和路由器的但不必是全部的表项。交换机表中的一个表项包含:①一个MAC地址;②通向该MAC地址的交换机接口;③表项放置在表中的时间。 - 自学习
交换机具有令人惊奇的特性(特别是对于早已超负荷工作的网络管理员),那就是它的表是自动、动态和自治地建立的,即没有来自网络管理员或来自配置协议的任何于预。换句话说,交换机是 自学习( self-leaming)的。这种能力是以如下方式实现的:- 交换机表初始为空。
- 对于在每个接口接收到的每个入帧,该交换机在其表中存储:①在该帧源地址字段中的MAC地址;②该幀到达的接口;③当前时间。交换机以这种方式在它的表中记录了发送结点所在的局域网网段。如果在局域网上的每个结点最终都发送了一个帧,则每个结点最终将在这张表中留有记录。
- 如果在一段时间(称为老化期( aging time)后,交换机没有接收到以该地址作为源地址的帧,就在表中删除这个地址。以这种方式,如果一台PC被另一台PC(具有不同的适配器)代替,原来PC的MAC地址将最终从该交换机表中被清除掉。
交换机是 即插即用设备(plug-and- play device),因为它们不需要网络管理员或用户的干预。要安装交换机的网络管理员除了将局域网网段与交换机的接口相连外,不需要做其他任何事。管理员在安装交换机或者当某主机从局域网网段之一被去除时,他没有必要配置交换机表。交换机也是双工的,这意味着任何交换机接口能够同时发送和接收。
-
链路层交换机的性质
指出使用交换机的几个优点,它们不同于如总线或基于集线器的星形拓扑那样的广播链路:- 消除碰撞。在使用交换机(不使用集线器)构建的局域网中,没有因碰撞而浪费的带宽!交换机缓存帧并且决不会在网段上同时传输多于一个帧。就像使用路由器一样,交换机的最大聚合带宽是该交换机所有接口速率之和。因此,交换机提供了比使用广播链路的局域网高得多的性能改善。
- 异质的链路。交换机将链路彼此隔离,因此局域网中的不同链路能够以不同的速率运行并且能够在不同的媒体上运行。因此,对于原有的设备与新设备混用,交换机是理想的管理。除了提供强化的安全性(参见插入材料“关注安全性”),交换机也易于进行网络管理。交换机也收集带宽使用的统计数据、碰撞率和流量类型,并使这些信息为网络管理者使用。这些信息能够用于调试和解决问题,并规划该局域网在未来应当演化的方式。
-
路由器与交换机的比较
路由器是使用网络层地址转发分组的存储转发分组交换机。尽管交换机也是一个存储转发分组交换机,但它和路由器是根本不同的,因为它用MAC地址转发分组。交换机是第二层的分组交换机,而路由器是第三层的分组交换机。即使交换机和路由器从根本上是不同的,网络管理员在安装互联设备时也经常必须在它们之间进行选择。路由器的确使得各系之间通信而不产生碰撞。既然交换机和路由器都是候选的互联设备,那么这两种方式
的优点和缺点各是什么呢?
首先考虑交换机的优点和缺点。如上面提到的那样,交换机是即插即用的,这是世界上所有超负荷工作的网络管理员都喜爱的特性。交换机还能够具有相对高的分组过滤和转发速率,交换机必须处理高至第二层的帧,而路由器必须处理高至第三层的数据报。在另一方面,为了防止广播帧的循环,交换网络的活跃拓扑限制为一棵生成树。另外,一个大型交换网络将要求在主机和路由器中有大的ARP表,这将生成可观的ARP流量和处理量。而且,交换机对于广播风暴并不提供任何保护措施,即如果某主机出了故障并传输出没完没了的以太网广播帧流,该交换机将转发所有这些帧,使得整个以太网的崩溃。
现在考虑路由器的优点和缺点。因为网络寻址通常是分层次的(不像MAC寻址那样是扁平的),即使当网络中存在冗余路径时,分组通常也不会通过路由器循环。(然而,当路由器表被误配置时,分组可能循环,IP用一个特殊的报文首部字段来限制循环。)所以,分组就不会被限制到一棵生成树上,并可以使用源和目的地之间的最佳路径。因为路由器没有生成树限制,所以它们允许以丰富的拓扑结构构建因特网。路由器的另一个特色是它们对第二层的广播风暴提供了防火墙保护。尽管也许路由器最重要的缺点就是它们不是即插即用的,即路由器和连接到它们的主机都需要人为地配置IP地址。而且路由器对每个分组的处理时间通常比交换机更长,因为它们必须处理高达第三层的字段。
通常,由几百台主机组成的小网络通常有几个局域网网段。对于这些小网络,交换机就足够了,因为它们不要求IP地址的任何配置就能使流量局部化并增加总计吞吐量。但是在由几千台主机组成的更大网络中,通常在网络中(除了交换机之外)还包括路由器。路由器提供了更健壮的流量隔离方式和对广播风暴的控制,并在网络的主机之间使用更“智能的”路由。
流行的互联网设备的典型特色比较
集线器 | 路由器 | 交换机 | |
---|---|---|---|
流量隔离 | 无 | 有 | 有 |
即插即用 | 有 | 无 | 有 |
优化路由 | 无 | 有 | 无 |
虚拟局域网
现代机构的局域网常常是配置为等级结构的,每个工作组(部门)有自己的交换局域网,经过一个交换机等级结构与其他工作组的交换局城网互联。虽然这样的配置在理想世界中能够很好地工作,但在现实世界常常不尽如人意。发现3个缺点:
- 缺乏流量隔离。尽管该等级结构把组流量局域化到一个单一交换机中,但广播流量(例如携带ARP和DHCP报文或那些目的地还没有被自学习交换机学习到的帧)仍然必须跨越整个机构网络。限制这些广播流量的范围将改善局城网的性能。也许更为重要的是,为了安全/隐私的目的也可能希望限制局域网广播流量。
- 交換机的无效使用。如果该机构不止有3个组,而是有10个组,则将要求有10个第一级交换机。如果每个组都较小、比如说少于10个人,则单台96端口的交换机将足以容纳每个人,但这台单一的交换机将不能提供流量隔离。
- 管理用户。如果一个雇员在不同组间移动,必须改变物理布线,以将该雇员连接到不同的交换机上。
幸运的是,这些难题中的每个都能够通过 支持虚拟局域网( Virtua Local Network VLAN)的交换机来处理。顾名思义,支持VLAN的交换机允许经一个单一的物理局域网基础设施定义多个虚拟局域网。在一个VLAN内的主机彼此通信,仿佛它们(并且没有其他主机)与交换机连接。在一个基于端口的VLAN中,交换机的端口(接口)由网络管理员划分为组。每个组构成一个VLAN,在每个VLAN中的端口形成一个广播域(即来自一个端口的广播流量仅能到达该组中的其他端口)。这个VLAN解决了上面提到的所有困难即 EE VLAN帧和 CS VLAN帧彼此隔离。人们容易想象到VLAN交换机配置和操作的方法,即网络管理员使用交换机管理软件声明一个端口属于某个给定的VLAN(其中未声明的端口属于一个默认的VLAN),在交换机中维护一张端口到VLAN的映射表;交换机软件仅在属于相同VLAN的端口之间交付帧。
一种更具扩展性互联VLAN交换机的方法称为 VLAN干线连接( VLAN trunking)。每台交换机上的一个特殊端口被配置为干线端口,以互联这两台VLAN交换机。该干线端口属于所有VLAN,发送到任何VLAN的帧经过干线链路转发到其他交换机。但这会引起另外的问题:一个交换机怎样知道到达干线端口的帧属于某个特定的VLAN呢?IEE定义了一种扩展的以太网帧格式802.1Q,用于跨越VLAN干线的帧。802.1Q帧由标准以太网帧与加进首部的4字节 VLAN标签( VLAN tag)组成,而VLAN标签承载着该帧所属的VLAN标识符。VLAN标签由在VLAN干线发送侧的交换机加进帧中,解析后并由在VLAN干线接收侧的交换机删除。VLAN标签自身由一个2字节的 标签协议标识符( Tag Protocol Identifier,TPID)字段(具有固定的十六进制81-00)、一个2字节的标签控制信息字段(包含一个12比特的VLAN标识符字段)和一个3比特优先权字段(具有类似于IP数据报T0S字段的目的)组成。
链路虚拟化:网络作为链路层
将链路视为连接两台通信主机的物理线路。在学习多路访问协议时,我们看到了多台主机能够通过一条共享的线路连接起来,并且连接主机的这种“线路”能够是无线电频谱或其他媒体。这使我们将该链路更多地抽象为一条信道,而不是作为一条线路。互联媒体实际上能够是一种相当复杂的交换基础设施。然而,经过这种演化,主机本身维持着这样的视图,即互联媒体只是连接两台或多台主机的链路层信道。
在两台主机之间由拨号调制解调器连接的场合,连接这两台主机的锥路实际上是电话网,这是一个逻辑上分离的、全球性的电信网络,它有自己的用于数据传输和信令的交换机、链路和协议栈。
以上是关于计算机基础(笔记)——计算机网络(链路层)的主要内容,如果未能解决你的问题,请参考以下文章
计算机网络湖科大微课堂笔记 p21-23 数据链路层概述封装成帧差错检测
计算机网络学习笔记——数据链路层功能和服务帧定位差错海明距离检错码和纠错码