【计算机网络】链路层

来源:互联网 发布:江津加工中心编程招聘 编辑:程序博客网 时间:2024/04/28 19:29

计算机网络之链路层协议


运行链路层协议的任何设备称为结点。包括主机,路由器,交换机和Wifi接入点。

沿着通信路径连接相邻结点的通信信道称为链路


链路层与网络层的关系:

考虑一个交通运输类的例子,一个旅行社为游客计划了一个旅游方案:从城市A坐高铁去到城市B,又从B搭飞机去到一个新的城市C游玩。这两段运输过程是由不同的公司管理的,完全不同的运输方式,但都提供了运输的基本服务。在这里,我们就好比是数据报,A到B的路径以及B到C的路径就是链路,每种运输方式就是一种链路层协议,而旅行社好比一个路由选择协议


链路层提供的服务:

成帧。将网络层数据报用帧封装起来。帧的结构链路层协议规定。

链路接入媒体访问控制(MAC)协议规定了帧在链路上传输的规则。MAC协议用于协调多个结点的帧传输。

可靠交付。链路层的可靠交付服务通常是通过确认和重传取得的。通常用于易于产生高差错率的链路,如无线链路。对于低比特差错的链路,如许多有线链路并不提供可靠交付服务。

差错检测和纠正。比特差错的出现是由于信号衰弱和电磁噪声导致的。链路层的差错检验比运输层和网络层更为复杂,一般使用硬件实现。并且链路层不但可以检测比特差错,还可以对比特差错进行纠正。


链路层的主体部分在网络适配器(有时也称为网络接口卡)中实现。

网络适配器的核心是链路层控制器,是一个实现了许多链路层服务的专用芯片。

越来越多的网络适配器被综合进主机的主板,即所谓的局域网在主机配置。主机总线与网络适配器相连,CPU像控制IO设备一样控制网络适配器。


链路层硬件与软件的结合体。

大部分链路层是在硬件中实现的,但链路层一部分功能由CPU上的软件实现,如组装链路层寻址信息和激活控制器硬件。接收端,链路层软件响应控制器中断,处理差错条件并上传给网络层。


传输数据中检测差错的3种技术

①   奇偶校验

差错检验额最简单的方式就是用单个奇偶校验位。假设数据有d比特,在偶校验方案中,发送方只需要包含一个附加比特,使得d+1比特中1的总数是偶数。奇校验方案则相反。从而接收方只需要数一数接收的d+1比特数目即可,如果偶校验方案中发现了奇数个1,则至少出现一个(奇数个)比特差错。但如果出现了偶数个比特差错则检测不出来。这个概率能够达到50%。

另一种方案是二维奇偶校验方案,即把d个比特看成是一个二维数组,对二维数组的每一行,每一列都进行奇偶校验。这时任意一个比特发生出错都可以被检验并纠正。但它可以检验两个比特差错的任何组合,虽然不能纠正。

由接收方来检测和纠正差错的能力被称为前向纠错(Forward Error Correction,FEC),它减少了发送方重发的次数,避免了不得不等待的往返时延。

②   检验和方法

参考TCP的因特网检验和。然而链路层一般不用检验和,它需要简单而快速的差错检测方案。链路层的差错检验在适配器中专用的硬件实现,它能够快速执行更为复杂的CRC操作。

③   循环冗余检测(Cyclic Redundancy Check,CRC)

现如今计算机网络中广泛应用的差错检测技术基于循环冗余检测编码,也被称为多项式编码。发送方和接收方首先协商一个r+1比特模式,称为生成多项式,将其表示为G,要求G的最高有效位的比特是1。考虑d比特的发送数据D,发送方要选择r个附加比特R,并将它们附加到D上,得到d+r比特,用模2算术恰好能够被G整除。接收方用G去除接收到的d+r比特,如果余数为0则接收方知道正确接收,否则出现差错。

 

多路访问链路和协议

两种类型的网络链路:点对点链路广播链路

点对点链路:

由链路一端的单个发送方和链路另一端的单个接收方组成。点对点协议(Point-to-point protocol,PPP)和高级数据链路控制(High-level data linkcontrol,HDLC)就是为点对点链路设计的。

广播链路:

让多个发送方和接收结点都连接到相同的,单一的,共享的广播信道上。当任意一个节点传输一个帧时,信道广播该帧,其他节点都收到一个副本。广播信道通常用于局域网中,一个地理上集中在一座建筑物中的无网络。

多路访问问题:

协调多个发送和接收结点对一个共享广播信道的访问。因为所有结点都能传输帧,所以多个结点可能会同时传输帧,此时所有结点同时接收到多个帧,此时发生碰撞,没有一个接收结点能够有效地获得任何传输的帧,广播信道的大量带宽将被浪费掉。

多路访问协议:

结点通过这些协议来规范它们在共享的广播信道上的传输行为。大量的链路层技术已经实现了几十种多路访问协议,但可以划分为3种类型,即信道划分协议,随机接入协议,轮流协议。


信道划分协议

①   时分多路复用(TDM)技术,将时间划分为时间帧,并进一步划分每个时间帧为N个时隙,每个时隙分配给N个结点中的一个,结点有分组要发送时,在循环的TDM帧中指派给它的时隙内传输分组比特。时隙长度应该使得一个时隙内能够传输单个分组。它消除了碰撞并且十分公平,然而结点被限制为R/N的最高速率,即使他是唯一有分组要发送的结点时。

②   频分多路复用(FDM)技术。将R bps信道划分为不同的频段,并把每个频率分配给N个结点中的一个。FDM的优缺点跟TDM一样。

③   码分多址(Code Division Multiple Access,CMDA)。CDMA每个结点分配一种不同的编码。每个结点用它唯一的编码发对它发送的数据进行编码,如果精心选择这些编码,则不同的结点能够同时传输,并且相应的接收方仍能正确接收发送方编码的数据比特(接收方必须知道发送方的编码),而不在乎其他结点的干扰。


随机接入协议

       在此类协议中,一个传输节点以全速进行发送。当有碰撞时,涉及碰撞的每个结点反复地重发它的帧,直到无碰撞通过为止。发生碰撞后,在重发该帧之前会等待一个随机时延。每个结点独立地选择自己的随机时延。

(一) 时隙ALOHA

该协议操作如下:

①   当有一个新帧要发送时,等到下一个时隙开始并在该时隙传输整个帧。

②   如果没有碰撞则结点成功传输它的帧,不需要考虑重传。如果该结点还有新帧要传输,则进行准备。

③   如有有碰撞,在时隙结束之前检测到这次碰撞。以概率p在后续的每个时隙中重传它的帧,知道该帧被无碰撞地传输出去。

该协议允许该结点以全速传输,并且每个结点需要对时隙同步。该协议的一个结论是,当有大量结点有很多帧要传输时,最多仅有37%的时隙做有用工作,37%的时隙是空闲的,26%的时隙有碰撞。

(二)ALOHA

       第一个ALOHA实际上是一个非时隙,完全分散的协议。当一个帧首次到达时,结点立刻将该帧完整地传输进广播信道,如果经历碰撞,则立刻以概率p重传该帧,否则等待一个帧传输时间。其最大效率为时隙ALOHA的一半。

(三)载波侦听多路访问(CSMA)

       载波侦听:一个结点在传输前先听信道,如果来自另外一个结点的帧正在传送,则等待直到检测一小段时间内没有传输再开始传输。

       碰撞检测:一个传输结点在传输时一直在侦听信道,如果检测到另一个结点正在传输干扰帧,就停止传输,并等待一段随机时间后再次进入“侦听-当空闲时传输”循环。具有碰撞检测的CSMA被称为CSMA/CD(CSMAwith cCollision Detection).

所有结点都监听信道,为什么还会发生碰撞呢?这是因为,比特沿着广播媒体传播锁实际需要的时间不是零(虽然以光的速度),端到端之间存在信道传播时延。

在CSMA/CD中,如果在传输过程中检测到其他结点也再传输,则停止自身传输并等待一段时间,这个时间的确定我们使用用于以太网以及DOCSIS电缆网络多路访问协议中的二进制指数后退算法来解决。当一个给定的帧经历第n次碰撞时,它从0到2^n-1中等概率地选择一个数。随着碰撞次数的增大,选择的集合长度呈指数式增长。这是合理的,因为一个帧碰撞的次数越多,说明它应该降低自己传输的频率来让给其他帧更多时间传输完它的数据。

 

轮流协议

有几十种轮流协议,比较重要的两种协议为轮询协议令牌传递协议

轮询协议:

对于N个结点,轮询协议要求这些结点之一要被指定为主节点。主节点以循环的方式轮询每个结点。主节点向结点1发送报文告诉它能够传输的帧的最大数量,结点1传输了某些帧后,主节点告诉结点2它可以传输的帧的最大数量……它有几个缺点,第一个缺点是引入了轮询时延(即通知结点的时间),如果只有一个活跃结点,那么每次发送了他能够发送的最多数量的帧时,主结点必须依次轮询每一个非活跃结点。第二个缺点是,如果主节点故障,整个信道将变得不可操作。

令牌传递协议:

没有轮询协议中所谓的主节点,该协议有一个称为令牌的小的特殊帧在结点之间以某种固定顺序进行交换。一个结点收到令牌,如果它有帧要发送,则发送最大数目的帧数并继续持有该令牌,否则立刻向下一个结点转发该令牌。同样的缺点是,一个结点的故障可能崩溃整个信道,或者结点忘记释放令牌时如何让令牌再次进入循环。

 

 

DOCSIS:用于电缆因特网接入的链路层协议

我们将在DOCSIS中看到信道划分协议, 随机接入协议和轮流协议这三类的每一种协议。

一个电缆接入网将电缆网头端将几千个住宅电缆调制解调器与一个电缆调制解调器端系统(CMTS)连接。DOCSIS使用FDM将下行(CMTS到调制解调器)和上行(调制解调器到CMTS)网络断划分为多个频率信道。每个上行和下行均为广播信道,仅有单一的CMTS在下行信道上传输,不存在多路访问问题。而对于上行则存在。每个上行被划分为时间间隔(类似TDM),每个时间间隔也包括一序列微时隙,调制解调器可以在微时隙中向CMT传输。CMTS在下行信道上通过发送被称为MAP报文的控制报文指定哪个电缆调制解调器能在微时隙中传输控制报文指定的时间间隔。因此能够保证在微时隙中没有碰撞。调制解调器通过向CMTS发送微时隙请求帧来请求传输,这些请求帧可能相互碰撞,如果没有在下一个下行控制报文中收到对请求分配的响应,则推断出请求帧碰撞,使用二进制指数回退将其请求帧延后发送。电缆接入网是FDM,TDM,随机接入和集中分配时隙等协议应用的一个很好的例子。

 

链路层寻址和ARP

适配器具有链路层地址,具有多个网络接口的主机或者路由器具有多个链路层地址。需要注意的是,链路层交换机并不具有链路层地址,它只负责在主机与路由器之间承载数据报,它透明地执行该项任务。链路层地址有其专属的名字,LAN地址,物理地址,或者MAC地址。

MAC地址长度为6字节,有2^48个可能的MAC地址,通常每个字节表示为一对十六进制数,如49-BD-D2-C7-56-2A是一个MAC地址。

MAC地址是唯一的,就像人的身份证号码一样,走到哪里都不会改变。IEEEE分配2^48的地址的方式是:固定一个MAC地址的前24比特,让公司自己为每个适配器生成后24比特的唯一组合。


ARP协议

当适配器要向某个目的适配器发送帧时,将目的适配器的MAC地址插入帧中,发到局域网上。然而如何进行IP地址与MAC地址的转换呢?ARP协议,即地址解析协议实现了这个功能。

先考虑在子网以内的情况。三台子网内的主机之间通过一个链路层交换机相连。假设主机A、B、C的IP分别为222.222.222.1,,222.222.222.2,222.222.222.3,A要向B发送数据报,则A不仅要提供B的IP地址,还要提供B的MAC地址,然后发送适配器将构造一个包含目的MAC地址的链路层帧并发送到局域网。发送主机A使用ARP协议获取B的MAC地址。每台主机或者路由器中具有一个ARP表,包含了IP地址到MAC地址的映射关系。如果在主机上的ARP表存在222.222.222.2→88-AB-CD-EF-AA-BB(假设),则ARP模块将返回88-AB-CD-EF-AA-BB给主机A写入帧中。然而如果ARP表中没有该项呢?发送方A将构造一个ARP分组,指示支配器应该用MAC广播地址(FF-FF-FF-FF-FF-FF)作为目的地址,该帧将被子网中所有其他适配器接收到,所有主机的ARP模块都检测自身的IP地址是否与ARP查询分组中的目的IP地址相符合,匹配到的主机B则构造一个ARP响应分组返回给主机A,其中含有对应的MAC地址。A则更新自身的ARP表。从这个过程我们也可以发现,ARP表是可以自动建立的,它不需要系统管理员来配置。

广播地址只针对子网内所有主机,如果目的适配器在子网以外呢?我们知道,每台主机仅有一个IP地址和一个MAC地址,路由器上有n个接口,所以有n个IP地址,n个ARP模块和n个适配器,每个适配器有自己的MAC地址。还是刚刚那个例子。假如主机A要像另外一个子网下的111.111.111.1/24主机D发送数据。IP地址我们根据DNS协议可以知道,那么MAC地址呢?为了发送数据到子网外,我们首先要将数据发送到网关路由器,因此最初的MAC地址应该是网关路由器接口的MAC地址。路由器通过查询转发表来向111.111.111.1/24子网的网关路由器转发,网关路由器得到数据报,因为已经跟D在同一个子网下,所以通过ARP协议得到目的地D的MAC地址并向其转发帧。这便是发送目的在子网外的情况。

 

以太网:以太网是目前最流行的有线局域网技术

以太网帧结构:

数据字段(46~1500字节)。承载了IP数据报。

目的地址(6字节) 目的适配器的MAC地址。

源地址(6字节)源适配器的MAC地址。

类型字段(2字节)适配器需要知道它应该将数据字段传递给哪个网络层协议,便是通过类型字段。类型字段标识了网络层协议。

CRC(4字节):循环冗余检测字段,检测是否引入了差错。

前同步码(8字节)。前7个字节都是10101010,最后一字节是10101011,该字段的作用是同步发送方与接收方的时钟,通常适配器不会以精确的额定速率传输帧,这时接收适配器只需要通过锁定前同步码的前7字节比特就能锁定时钟,第8个字节的最后两个比特都为1,警示接收方重要的内容即将到来。

今天广为使用的以太网是基于交换机的星型拓扑,采用的是存储转发分组交换,交换机协调其传输,在任何时候绝不会向相同接口转发超过一个帧。此外,现代交换机是全双工的,使得一台交换机和一个结点能在同时向对方发送帧而没有干扰。

 

链路层交换机

       交换机的任务是接收入链路层帧并转发到出链路。交换机具有两个功能,过滤和转发。过滤决定一个帧应该转发到某个接口还是将其丢弃。转发决定一个帧该被导向哪个接口。这两个功能借助于交换机表来完成。交换机表的表项包含一个MAC地址,通向该MAC地址的接口 以及放置时间。

假定目的地址为11-11-11-11-11-11(简写为x)的一个链路层帧从接口A到达,此时有几种情况。第一种情况下,表中没有关于x的表项,交换机广播该帧。第二种情况,表中有一个表项将x和A联系起来,这种情况下丢弃该帧执行过滤功能。因为从接口A过来的表项,不可能再从A出口回去,可能是经过了某种循环。第三种情况,表中有一个表项将x和除了A之外其他接口B联系起来,则将该帧转发到接口B完成转发功能。

交换机是自学习的,它通过将接收到的每个入帧的源地址和该帧到达的接口以及当前时间存为表项,那么以后发往该MAC地址的帧都通过该接口。因此交换机是即插即用设备,不需要网络管理员配置,同时,任何交换机接口是全双工的,它能够同时发送和接收。

 

虚拟局域网:

现代机构的局域网通常是配置为等级结构的,也就是说,某些政府网站可能希望自己的流量可以隔离出来,不被其他网络所访问。这可以通过一个支持虚拟局域网(Virtual Local Network,VPN)的链路层交换机来实现。它允许单一的物理局域网基础设施定义多个虚拟局域网,在一个VLAN中的主机彼此通信,仿佛它们与交换机连接。假如有16个端口,我将2到8划分给计算机系,9到15划分为电子工程系,那么从2发出的广播只转发到3到8端口,不会发到9到15。这时又有新的问题,电子工程系与计算机系之间如何进行通信呢?我们可以通过将一个端口配置为属于两者,并将其与一个外部路由器连接。由路由器负责转发。交换机厂商已经通过将VLAN交换机和路由器合并为单一设备方便网络管理员的配置。

 

多协议标签转换(MPLS):

虚电路网络领域的一个关键概念,固定长度标签。对于基于固定长度标签和虚电路的技术,在不放弃基于目的IP数据报转发的基础设施的前提下,当可能时通过选择性地标识数据报并允许路由器基于固定长度的标签而不是目的IP地址来转发数据报。MPLS首部增加到网络层与链路层之间,然而这种加强版的帧只能在两个均为MPLS使能的路由器之间发送。一个MPLS使能的路由器常被称为标签交换路由器,它通过在转发表中查找MPLS标签,然后立即将数据报传递给适当的输出接口来转发。我们知道IP路由选择协议指定单一最小费用路径,然而MPLS提供了沿着多条路由转发分组的能力,这是使用MPLS的一种简单形式的流量工程。MPLS能够被用于实现所谓虚拟专用网(Virtual Private Network,VPN),ISP使用它的MPLS使能网络将用户的各种网络连接在一起,MPLS能被用于将资源和用户的VPN使用的寻址方式相隔离,其他用户利用该VPN跨越该ISP网络。

VPN属于远程访问技术,简单地说就是利用公用网络架设专用网络。例如某公司员工出差到外地,他想访问企业内网的服务器资源,这种访问就属于远程访问。

让外地员工访问到内网资源,利用VPN的解决方法就是在内网中架设一台VPN服务器。外地员工在当地连上互联网后,通过互联网连接VPN服务器,然后通过VPN服务器进入企业内网。为了保证数据安全,VPN服务器和客户机之间的通讯数据都进行了加密处理。有了数据加密,就可以认为数据是在一条专用的数据链路上进行安全传输,就如同专门架设了一个专用网络一样,但实际上VPN使用的是互联网上的公用链路,因此VPN称为虚拟专用网络,其实质上就是利用加密技术在公网上封装出一个数据通讯隧道。有了VPN技术,用户无论是在外地出差还是在家中办公,只要能上互联网就能利用VPN访问内网资源,这就是VPN在企业中应用得如此广泛的原因。

 

0 0
原创粉丝点击