链路层和局域网
两台主机之间,数据报跨越一系列通信链路传输,一些是有线链路一些是无线链路,从源主机起,通过一些了分组交换机在目的主机结束。在链路层中有两种不同的链路层信道,
-
第一种是广播信道,这种信道用于有线局域网、卫星网、和混合光纤同轴电缆接入网中的主机。因为许多主机与相同的广播信道连接,所以需要所谓的媒体访问协议来协调帧传输。在一些情况下可以使用中心控制器来协调传输。
-
第二种是链路层信道是点对点通信链路,在长距离链路连接的两台路由器之间,或用户办公室计算机与他们所连接的邻近以太网交换机之间等场合。适用范围从经电话线拨号服务到经光纤链路的高速点到点帧传输。
通过学习链路层,我们将知道链路层的基本服务是将网络层的数据报从一个节点(主机、交换机、路由器、WiFi接入点)移动到另一个节点。在通过链路向相邻节点传输之前,所有链路层写都是通过将网络层数据报封装成帧。然而,除了这个共同的成帧功能之外,我们知道不同的链路层协议提供截然不同的链路接入、交付 和传输服务。造成这些差异的部分原因是因为链路层协议必须工作在很多种链路类型上。一个简单的点对点链路具有单个发送方和接收方,并通过单一的链路通信。一个多路访问链路在许多发送方和接收方之间共享。因此,对对多路访问信道的链路层协议有一个协调链路接入的协议(多路访问协议)。在MPLS情况下,连接两个相邻节点的链路,其本身就是一个网络。
一、链路层概述
节点:运行链路层协议的任何设备称为节点,包括:主机、路由器、交换机、WiFi接入点。
链路:沿着通信路径连接相邻节点的通信信道称为链路。
1.链路层提供的服务
-
成帧:在网络层数据报经链路传输之前,几乎所有的链路层协议都要将其用链路层封装成帧。一个帧由一个数据字段和若干首部字段组成,网络层数据报就在数据字段中。
-
链路接入:媒体访问控制(MAC)协议规定了帧在链路上传输规则,对于链路的一端仅有一个发送方和链路的另一端仅有一个接收方的点对点链路,MAC协议比较简单,即只要链路空闲,发送方都可以发送帧。MAC也可以协调广播中的多个节点的帧传输。
-
可靠交付:当链路层协议提供可靠交付服务时,它保证无差错地经链路层移动每个网络层数据报。与运输层协议(TCP)可靠交付相比,链路层的可靠交付服务通常是通过却和重传取得的。通常用于易于产生高差错率的链路(无线),其目的是纠正一个差错而不是重传数据。对于低比特差错的链路,包括光纤、同轴电缆等链路层的可靠交付会被认为是一种不必的开销。因此许多链路层协议不提供可靠交付服务。
-
差错检测和纠正:当帧中一个比特作为1发送时,接收方节点中可能因为链路层硬件不正确地将其判断为0,这种比特差错是由信号衰减和电磁噪声导致的。通过发送节点在帧中包括差错检测比特,让接收节点进行差错检查。链路层差错检查通常由硬件实现。接收方不仅可以检测出比特差错,还可以检测出出错的位置
2.链路层在何处实现
下图显示了一个典型的主机体系结构。链路层主体部分是在网络层适配器中实现的,网络适配器有时也称为网络接口卡。位于网络适配器核心的是链路层控制器。该控制器一般是实现许多链路层服务的专用芯片。
在发送端,控制器取的了由协议栈较高层生成并存储在主机存储中的数据报,在链路层帧中封装该数据报,然后遵循链路接入协议将该帧传进通信链路中,在接收端,控制器接收了整个镇,抽取出网络层数据报没如果链路层执行差错检测,需要发送控制器在该帧的首部设置差错检测比特,由控制器执行差错检测。
图中显示了主机总线和连接的网络适配器,尽管大部分链路层是在硬件中实现的,但是部分链路层是运行于主机CPU上软件实现的。如组装链路层寻址信息和激活控制器硬件。在接收端,链路层软件响应控制器中断。处理差错条件和将数据报上报给网络层。
二、 差错检测和技术纠正
比特级差错检测和纠正:从一个节点发送到另一个物理上连接的邻近节点的链路层帧中的比特损伤进行检测和纠正。要保护的数据不仅包括从网络层传输下来的数据报,而且包括链路帧首部中的链路级的寻址信息、序号和其他字段。差错检测和纠正技术使接收方有时但并不总是检测出已经出现的比特差错,即总有未检测出的比特差错。因此我们需要一个差错检测方案来减小这种事件的概率。
1. 奇偶校验:最简单的差错检测,在偶校验方案中,假设要发送多个比特数据,发送方只需要包含一个附加的比特,选择他的值,是的d+1比特中的1总数是偶数,对于奇校验方案,选择校验比特值有奇数个1。但是如果分组中多个比特同时出错的话简单的奇偶校验就会有50%的概率未检测出。那么需要将奇偶校验升级一下:二维奇偶校验。
二维奇偶校验:将d个比特分为i行j列,如果出现单个比特比特差错,这时候包含比特的行和列都会出现差错,这时候接收方不仅可以检测出比特差错,还可以利用行和列来找到实际位置并纠正。
2.检验和方法:在检验和技术中,d比特数据被作为一个康比特整数的序列处理。一个简单检验和方法就是将这k比特整数加起来,并且用得到的和作为差错检测比特。因特网检验和就