【计算机网络】第三章 数据链路层
3.1 数据链路层的基本概念数据链路层使用的两种信道类型点对点信道这种信道使用一对一的点对点通信方式。广播信道这种信道使用一对多的广播通信方式因此过程比较复杂。 广播信道上连接的主机很多 因此必须使用专用的共享信道协议来协调这些主机的数据发送。3.1.1 数据链路和帧链路(link)就是从一个节点到相邻节点的一段物理线路而中间没有任何其他的交换节点。一条链路只是一条通路的一个组成部分。数据链路(data link)除了物理线路还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上就构成了数据链路。现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。3.1.2 三个基本问题⑴封装成帧封装成帧(framing)就是在一段数据的前后分别添加首部和尾部然后就构成了一个帧。首部和尾部的一个重要作用就是进行帧定界。接收方必须正确识别每个帧的开始和结束。每一种链路层协议都规定了帧的数据部分长度的上限即最大传送单元MTU(Maximum Transfer Unit, MTU).⑵透明传输我们希望数据链路层提供的是一种“透明传输” 的服务即对上层交给的传输数据没有任何限制 就好像数据链路层不存在一样。字节填充法对于面向字符的物理链路使用字节填充(byte stuffing)或字符填充(character stuffing)方法。发送端的数据链路层在数据中出现的标记字符前面插入一个转义字符(例如也用一种特殊的控制字符“ESC)。在接收端的数据链路层对转义字符后面出现的标记字符不再被解释为帧定界符并且在将数据送往网络层之前删除这个插入的转义字符。如果转义字符也出现在数据当中那么解决方法仍然是在转义字符的前面插入一个转义字符。当接收端收到连续的两个转义字符时就删除前面的一个。零比特填充法当物理链路提供的是面向比特的传输服务时(物理链路传送连续的比特流) 帧定界标志可以使用某个特殊的比特组合例如后面将要介绍的PPP协议所使用的01111110”。由于帧的长度不再要求必须是整数个字节可以采用开销更小的比特填充(Bit Stuffing)来实现透明传输。在发送端只要发现有5个连续1则立即填入一个0。接收端对帧中的比特流进行扫描。每当发现5个连续1时就把这5个连续1后的一个O删除。⑶差错控制在传输过程中可能会产生比特差错:1可能会变成0而0也可能变成1。在一段时间内传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。误码率与信噪比有很大的关系。为了保证数据传输的可靠性在计算机网络传输数据时必须采用各种差错检测措施。差错检测不是100%可靠 可能漏掉某些差错但是非常少较长的EDC字段通常有更好的检测性能循环冗余校验CRC在数据链路层传送的帧中广泛使用循环冗余校验CRC的检错技术。设原始数据D为d位二进制数如果要产生r位CRC校验码R事先选定一个r1位二进制位模式G(称为生成多项式收发双方提前商定)G的最高和最低位为1将原始数据D乘以2ʳ(相当于在D后面添加r个0),产生dr位二进制位模式用G对该位模式做模2除法得到余数R(r位不足r位前面用0补齐)即为CRC校验码。在接收端把接收到的数据除以同样的除数生成式G(模2运算)然后检查得到的余数即进行CRC检验。若得出的余数R0,则判定这个帧没有差错就接受。若余数R≠0,则判定这个帧有差错就丢弃。只要经过严格的挑选并使用位数足够多的除数G那么出现检测不到的差错的概率就很小很小。在数据后面添加上的冗余码称为帧检验序列FCS(Frame Check Sequence)。循环冗余校验CRC和帧检验序列FCS并不等同。CRC是一种常用的检错方法而FCS是添加在数据后面的冗余码。FCS可以用CRC这种方法得出但CRC并非用来获得FCS的唯一方法。❶要发送的数据为1101011011。采用CRC的生成多项式P(X)X⁴X1。试求应添加在数据后面的余数。❷若要发送的数据在传输过程中最后一个1变成了0即变成了1101011010问接收端能否发现 ❸若要发送的数据在传输过程中最后两个1都变成了0即变成了1101011000问接收端能否发现 ❹采用CRC检验后数据链路层的传输是否就变成了可靠的传输4不是可靠传输。CRC仅能实现差错检测无法纠正错误同时CRC 无法检测出所有错误当错误位的组合恰好是生成多项式的倍数时无法检测概率极低此外 CRC不具备帧序号、确认重传等机制无法解决丢帧、重复帧的问题因此不能实现可靠传输。可靠传输需要结合差错纠正、确认重传、流量控制等机制共同实现。使用CRC这样的差错检测技术只能检测出帧在传输中出现了差错并不能纠正错误。虽然任何差错检测技术都无法做到检测出所有差错但通常我们认为:凡是接收端数据链路层通过差错检测并接受的帧我们都认为这些帧在传输过程中产生差错的概率几乎为零。要想纠正传输中的差错可以使用冗余信息更多的纠错码进行前向纠错。通过纠错码能检测数据中出现差错的具体位置从而纠正错误。这种方法开销非常大。通常采用接下来可靠传输的确认重传机制来纠正传输中的差错或者仅仅是丢弃检测到差错的帧由上层协议去解决数据丢失的问题。3.1.3 流量控制与可靠传输机制⑴停止等待协议普通流程(有差错检验)❶超时重传❷确认丢失❸确认迟到/提前超时比特交替协议发送方流程比特交替协议接收方流程停等协议的信道利用率可靠传输的机制⑵滑动窗口协议Go-back-N(回退N帧)协议选择重传协议3.2 点对点协议PPP在通信线路质量较差的年代能实现可靠传输的高级数据链路控制(High-level Data Link Control,HDLC)成为了当时比较流行的数据链路层协议。HDLC是一个比较复杂的协议实现了滑动窗口协议并可支持点对点和点对多点两种连接方式。对于现在误码率已非常低的点对点有线链路HDLC已很少使用了 而简单得多的点对点协议(Point-to-Point Protocol,PPP)则是目前使用最广泛的点对点数据链路层协议。3.2.1 PPP协议的特点3.2.2 PPP协议的帧格式⑴ 各字段意义PPP有一个2个字节的协议字段当协议字段为0×0021时PPP帧的信息字段就是IP数据报。若为0×C021,则信息字段是PPP链路控制协议(LCP)数据。若为0x8021,则表示这是网络控制协议(NCP)数据。⑵透明传输问题当PPP用在SDH等面向比特的同步传输链路时协议规定采用硬件来完成比特填充。当PPP用在面向字符的异步传输时使用一种特殊的字符填充法 其转义符定义为0×7D。3.2.3 PPP协议的工作状态3.3 使用广播信道的数据链路层广播信道可以进行一对多的通信能很方便且廉价地连接多个邻近的计算机因此曾经被广泛应用于局域网之中。由于用广播信道连接的计算机共享同一传输媒体因此使用广播信道的局域网被称为共享式局域网。虽然交换式局域网在有线领域已完全取代了共享式局域网但无线局域网仍然使用的是共享媒体技术。用广播信道连接多个站点(可以是主机或路由器) 一个站点可以方便地给任何其他站点发送数据但必须解决如果同时有两个以上的站点在发送数据时共享信道上信号冲突的问题。因此共享信道要着重考虑的一个问题就是如何协调多个发送站点对一个共享传输媒体的占用即媒体接入控制(Medium Access Control,MAC)或多址接入(Multiple Access)问题3.3.1 局域网的数据链路层网络为一个单位所拥有且地理范围和站点数目均有限。(局域网最主要特点)最初主要用来连接一个单位内部的计算机方便地共享所有连接在局域网上的各种硬件、软件和数据资源。现在局域网将各种企业、机构、校园中的大量用户接入到互联网中网络中大部分的信息资源都集中在这些局域网中。LLC子层可以为不同类型的网络层协议提供不同类型的数据传输服务例如无确认无连接服务、面向连接的可靠传输服务或带确认的无连接服务。由于以太网在有线局域网市场中已取得了垄断地位因此目前逻辑链路控制子层LLC(即802.2标准)在有线局域网中的作用并不大。很多厂商生产的适配器(网卡)上就仅装有MAC协议而没有LLC协议。适配器的一个重要功能就是要进行数据串行传输和并行传输的转换。在适配器中必须装有对数据进行缓存的存储芯片。在计算机的操作系统安装设备驱动程序。适配器实现局域网数据链路层和物理层的协议。适配器接收和发送各种帧时不使用计算机的CPU这时CPU可以处理其他任务。当适配器收到有差错的帧时就把这个帧丢弃而不必通知计算机。当适配器收到正确的帧时它就使用中断来通知该计算机并交付给协议栈中的网络层。发送IP数据报时由协议栈把IP数据报向下交给适配器组装成帧后发送到局域网。MAC地址当多个站点连接在同一个广播信道上要想实现两个站点的通信则每个站点都必须有一个唯一的标识即一个数据链路层地址。在每个发送的帧中必须携带标识接收站点和发送站点的地址。由于该地址用于媒体接入控制因此被称为MAC地址。MACMedia Access Control地址是网络设备的唯一硬件标识符通常由48位二进制数12位十六进制组成用于在局域网LAN中识别设备。它由IEEE分配固化在网卡或网络接口中分为前24位厂商代码和后24位设备序列号。802.3标准为局域网规定了一种48位的全球地址固化在适配器(网卡)的ROM中(因此又被称为硬件地址)。实际上这个地址仅仅是一个适配器的标识符它并不能告诉我们这个计算机所在的位置。MAC地址与IP地址的区别MAC是物理层标识IP是网络层逻辑地址MAC全局唯一IP可动态分配互联网中全球唯一。所有的适配器都至少应当能够识别单播和广播地址有的适配器可用编程方法识别组地址(多播地址)。当操作系统启动时它就把适配器初始化使适配器能够识别某些组地址(多播地址)。只有目的地址才能使用广播地址和组地址(多播地址)。3.3.2 共享式以太网以太网采用较为灵活的无连接的工作方式即不必先建立连接就可以直接发送数据。适配器对发送的数据帧不进行编号也不要求对方发回确认。这样做的理由是局域网信道的质量很好因通信质量不好产生差错的概率是很小的。当目的站收到有差错的数据帧时就把帧丢弃其他什么也不做。对有差错帧是否需要重传则由高层来决定。但以太网并不知道这是重传帧而是当作新的数据帧来发送。总线上只要有一个站点在发送数据总线的传输资源就被占用。因此在同一时间只能允许一个站点发送数据否则各站点之间就会互相干扰结果大家都无法正常发送数据。共享式以太网使用CSMA/CD媒体接入控制协议来协调总线上各站点的工作。3.3.3 CSMA/CD协议冲突(碰撞)检验退避重传3.3.4 以太网的信道利用率成功发送一个帧需要占用信道的时间是T₀τ,比这个帧的发送时间要多一个单程端到端时延τ。这是因为当一个站发送完最后一个比特时这个比特还要在以太网上传播。在最极端的情况下发送站在传输媒体的一端而比特在媒体上传输到另一端所需的时间就是τ。要提高以太网的信道利用率就必须减小τ与T₀之比。在以太网中定义了参数a它是以太网单程端到端时延τ与帧的发送时间T₀之比:aτ/T₀a越大表明争用期所占的比例增大每发生一次碰撞就浪费许多信道资源 使得信道利用率明显降低。参数a的值应当尽可能小些3.3.5 使用集线器的星形拓扑10BASE-T的通信距离稍短每个站到集线器的距离不超过100m。这种10Mb/s速率的无屏蔽双绞线星形网的出现既降低了成本又提高了可靠性。10BASE-T双绞线以太网的出现是局域网发展史上的一个非常重要的里程碑它为以太网在局域网中的统治地位奠定了牢固的基础。3.3.6 以太网的帧格式⑴以太网V2的MAC帧格式第四个字段是数据字段其长度在46~1500字节(46字节是这样得出的: 最小长度64字节减去18字节的首部和尾部就得出数据字段的最小长度)。当数据字段的长度小于46字节时MAC子层就会在数据字段的后面加入一个整数字节的填充字段以保证以太网的MAC帧长不小于64字节。⑵帧间最短字节帧间最小间隔为9.6 μs ,相当于96 bit 的发送时间。一个站在检测到总线开始空闲后还要等待9.6 μs 才能再次发送数据。以太网不需要使用帧结束定界符也不需要使用字节填充或比特填充技术来保证透明传输。帧间间隔用于接收方检测一个帧的结束同时也使得所有其它站点都能有机会平等竞争信道并发送数据。⑶IEEE 802.3标准规定的MAC帧格式3.4 扩展的以太网3.4.1 在物理层扩展以太网使用的是共享式集线器(工作在物理层)3.4.2 在数据链路层扩展以太网⑴网桥用网桥仍是n个碰撞域用集线器则变为一个⑵透明网桥⑶以太网交换机3.4.3 虚拟局域网VLAN3.5 以太网的演进
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2592448.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!