计算机网络复习(第三章):数据链路层
数据链路层成帧、差错控制、可靠传输与介质访问控制引言数据链路层在网络中的位置数据链路层位于物理层之上、网络层之下。物理层负责把比特转换成电信号、光信号或无线电波并在传输介质上传播而数据链路层要解决的问题更进一步如何把物理层传来的原始比特流组织成有边界、有意义、可检错、可控制的数据单位并尽可能可靠地交付给相邻结点。这一层关注的是“相邻结点之间”的通信而不是端到端通信。比如一台主机把数据发给远端服务器途中可能经过多个路由器。网络层看到的是从源主机到目的主机的路径选择而数据链路层只关心每一段链路上相邻设备之间的数据传输是否正确、有序、受控。本章可以按五条主线理解第一数据链路层的功能第二组帧也就是如何把比特流划分为帧第三差错控制包括检错编码和纠错编码第四流量控制与可靠传输机制包括停止-等待、后退 N 帧和选择重传第五介质访问控制也就是多个结点共享同一信道时如何决定谁可以发送数据。后面还会涉及局域网、以太网、无线局域网、广域网协议以及数据链路层设备。一、数据链路层的基本功能数据链路层的核心任务是在相邻结点之间实现数据帧的有效传输。它并不保证整个互联网端到端的可靠性而是尽力在一条链路范围内解决传输过程中可能出现的问题。数据链路层的主要功能包括为网络层提供服务、链路管理、组帧、流量控制、差错控制以及介质访问控制。1. 为网络层提供服务数据链路层向网络层屏蔽物理层的细节。网络层只需要把分组交给数据链路层不必关心底层到底是双绞线、光纤还是无线信道也不必直接处理比特同步、信号失真和帧边界识别等问题。数据链路层可以向网络层提供三类典型服务。第一类是无确认的无连接服务发送方直接发送帧不建立连接也不要求接收方确认适用于误码率低、实时性要求高或上层能处理差错的场景。第二类是有确认的无连接服务发送方不建立连接但每发送一帧都需要接收方确认适用于无线链路等误码率较高的场景。第三类是有确认的面向连接服务通信前建立连接通信中确认与控制通信后释放连接适用于对可靠性要求较高的链路。2. 链路管理链路管理主要出现在面向连接的服务中包括链路的建立、维持和释放。通信双方在正式传输数据之前需要协商参数、建立逻辑连接传输过程中需要维护链路状态通信结束后需要释放链路资源。虽然很多局域网链路在实际使用中不强调显式的链路建立过程但理解链路管理有助于区分“物理上连通”和“逻辑上可通信”这两个概念。3. 组帧物理层传输的是连续的比特流但接收方必须知道哪些比特属于同一个数据单位。因此数据链路层需要把网络层传来的分组封装成帧并在帧中加入首部和尾部信息使接收方能够识别帧的开始和结束。帧通常包含帧头、数据部分和帧尾。帧头中可能包含地址、控制字段等信息帧尾中常包含差错检测码如 CRC 校验序列。组帧是数据链路层最基础的功能之一因为没有清晰的帧边界后续的差错检测、确认重传和介质访问控制都无法进行。4. 流量控制流量控制解决的是发送方发送速度与接收方接收能力不匹配的问题。如果发送方发送过快而接收方缓存有限接收方就可能来不及处理而丢弃帧。流量控制的目标是限制发送方的发送速率使接收方能够及时接收和处理。流量控制与可靠传输常常结合在一起例如停止-等待协议和滑动窗口协议既可以控制发送窗口大小又可以配合确认机制实现可靠传输。5. 差错控制实际信道可能受到噪声、衰减、干扰等因素影响导致比特出错。数据链路层通过差错控制发现或纠正错误。差错控制可以分为检错和纠错。检错只判断数据是否出错发现错误后通常丢弃并请求重传纠错不仅发现错误还能确定错误位置并直接改正。常见检错方法包括奇偶校验和循环冗余校验 CRC常见纠错方法包括海明码。6. 介质访问控制在广播式链路中多个结点共享同一传输介质。如果多个结点同时发送数据信号会发生冲突导致帧损坏。介质访问控制要解决的问题就是当多个设备都想使用同一信道时如何协调发送顺序避免或减少冲突。常见介质访问控制方法包括信道划分介质访问控制、随机访问介质访问控制和轮询访问介质访问控制。信道划分方法包括频分复用、时分复用、波分复用和码分复用随机访问方法包括 ALOHA、CSMA、CSMA/CD 和 CSMA/CA。二、组帧给比特流划出边界组帧的核心问题是帧定界。发送方把一串数据封装成帧接收方必须从连续比特流中准确识别每一帧的起点和终点。如果帧边界识别错误后续所有数据解释都会出错。常见组帧方法包括字符计数法、字节填充法、零比特填充法和违规编码法。1. 字符计数法字符计数法在帧头中使用一个计数字段表示该帧的总字符数或字节数。接收方读到计数字段后就知道接下来多少个字符属于当前帧。这种方法实现简单但缺点很明显如果计数字段在传输中出错接收方就会错误判断帧长度导致当前帧和后续帧都无法正确识别。也就是说一个小错误可能造成连锁失步。2. 字节填充法字节填充法使用特殊字符作为帧的开始和结束标志。例如用一个标志字节 FLAG 表示帧边界。问题在于如果数据部分本身也出现与 FLAG 相同的字节接收方可能误以为帧结束。为了解决这个问题发送方在数据中出现 FLAG 或转义字符 ESC 时在其前面插入一个 ESC。接收方收到后如果看到 ESC就知道后面的字符是普通数据而不是控制字符。这种方法称为字节填充或字符填充。字节填充法适合以字节为单位处理的数据链路协议典型思想是通过“转义”来区分数据字符和控制字符。3. 零比特填充法零比特填充法常见于面向比特的协议如 HDLC。它使用特殊比特串01111110作为帧定界标志。为了避免数据部分中偶然出现相同的比特串发送方在数据部分每遇到连续 5 个 1就自动插入一个 0。接收方在接收数据时每遇到连续 5 个 1 后面的 0就把这个 0 删除。这样帧定界符01111110就不会在数据部分中自然出现。零比特填充法的优点是可以面向任意比特串不依赖字符编码适合二进制数据传输。4. 违规编码法违规编码法利用物理层编码中不会出现的非法信号模式来表示帧边界。比如某种编码规则规定正常数据中不可能出现某种电平变化那么就可以用这种“违规”模式作为帧开始或帧结束标志。这种方法依赖具体物理编码方式优点是不用额外插入大量控制字符但适用范围受编码机制限制。三、差错控制发现错误与纠正错误实际链路中比特可能发生差错。差错控制要解决两个问题第一如何发现数据在传输过程中是否出错第二如果出错能否直接纠正或者至少通知发送方重传。差错控制通常使用冗余编码。发送方在原始数据后附加一些冗余位接收方根据这些冗余位检查数据是否满足某种规则。如果不满足就说明数据可能出错。1. 奇偶校验奇偶校验是在数据后增加 1 位校验位使整个码字中 1 的个数满足奇数或偶数要求。若采用偶校验则数据位加校验位中 1 的个数应为偶数若采用奇校验则 1 的个数应为奇数。接收方收到数据后重新统计 1 的个数如果不符合约定就判断发生错误。奇偶校验实现简单开销小但能力有限。它只能检测奇数个比特错误无法检测偶数个比特错误也无法确定错误位置。因此它适合简单场景不适合高可靠性需求。2. 循环冗余校验 CRCCRC 是数据链路层中非常重要的检错方法。它把待发送数据看作一个二进制多项式用约定的生成多项式进行模 2 除法得到余数作为帧检验序列 FCS附加在数据后面发送。CRC 的基本步骤可以概括为首先发送方和接收方约定一个生成多项式 (G(x))它对应一个二进制比特串。若生成多项式阶数为 (r)则 CRC 校验码长度为 (r) 位。然后发送方在原始数据后补 (r) 个 0再用生成多项式对应的比特串做模 2 除法。这里的模 2 除法不涉及借位和进位本质上就是异或运算。最后把得到的 (r) 位余数替换原来补上的 0附加到数据后面发送。接收方收到后用同一个生成多项式对整个码字做模 2 除法如果余数为 0则认为没有检测到错误如果余数不为 0则判断传输出错。CRC 的特点是检错能力强、实现效率高广泛用于链路层协议。但要注意CRC 只能检错不能自动纠错。它判断的是“是否检测到错误”并不告诉接收方错误位在哪里。3. 海明码海明码是一种纠错编码能够发现并纠正一定范围内的错误。它的核心思想是在数据位中插入若干校验位通过多个校验关系共同定位错误位置。如果数据位数为 (m)校验位数为 (r)为了能够定位所有单比特错误并区分无错情况需要满足2^r m r 1海明码通常把校验位放在序号为 1、2、4、8 等 (2^k) 的位置上其余位置放数据位。每个校验位负责检查若干位使得任何一个位置出错时都会形成唯一的错误综合症从而确定错误位置。海明码的重点不只是公式还要理解“多个校验位共同定位错误”的思想。奇偶校验只能知道有错海明码通过多组校验关系可以知道哪一位出错并将其翻转纠正。四、流量控制与可靠传输机制流量控制和可靠传输经常一起出现。流量控制防止发送方过快发送导致接收方来不及处理可靠传输则通过确认、超时和重传等机制处理帧丢失、帧出错和确认丢失等情况。1. 停止-等待协议停止-等待协议是最简单的可靠传输协议。发送方每发送一帧就停下来等待接收方确认 ACK。只有收到确认后才发送下一帧。如果发送方在规定时间内没有收到确认就认为该帧或确认可能丢失于是重传该帧。为了防止重复帧造成混乱停止-等待协议通常给帧编号。由于同一时刻最多只有一个未确认帧所以只需要 1 bit 序号即 0 和 1 交替编号。停止-等待协议的优点是简单缺点是信道利用率低。尤其在长距离、高带宽链路中发送方发完一帧后要等待很长时间才能发送下一帧链路大部分时间处于空闲状态。停止-等待协议信道利用率常用下面思想计算利用率 发送一帧所需时间 / 从开始发送到收到确认前的总时间若数据帧发送时延为 (T_D)往返传播时延为 RTT确认帧发送时延为 (T_A)则利用率大致为U T_D / (T_D RTT T_A)如果确认帧很短(T_A) 常可忽略。这个公式体现了为什么传播时延越大、帧越短停止-等待协议效率越低。2. 滑动窗口机制滑动窗口协议允许发送方在未收到确认之前连续发送多个帧。发送方维护一个发送窗口窗口中的帧可以连续发送接收方维护一个接收窗口表示当前可以接收哪些序号的帧。当发送方收到确认后发送窗口向前滑动允许继续发送新的帧。滑动窗口机制可以显著提高信道利用率因为发送方不必每发一帧就停下来等待确认。滑动窗口协议中的序号空间非常重要。如果序号位数为 (n)则序号范围为0 ~ 2^n - 1窗口大小不能随意设置否则可能出现新旧帧序号混淆。不同协议对窗口大小有不同限制。3. 后退 N 帧协议 GBN后退 N 帧协议允许发送方连续发送多个帧但接收方通常只按序接收。如果某一帧出错或丢失接收方会丢弃该帧以及之后所有失序到达的帧并继续确认最后一个正确按序收到的帧。发送方超时后需要从出错或丢失的那一帧开始把后续已经发送但未被确认的帧全部重传。GBN 的特点是发送方窗口较大接收方窗口为 1。它比停止-等待协议效率高但如果链路误码率较高一旦某帧出错后续帧即使已经正确到达也会被丢弃重传开销较大。在 GBN 中若序号位数为 (n)发送窗口大小通常应满足W_T 2^n - 1这样可以避免新旧帧序号混淆。GBN 采用累积确认机制。接收方确认某个序号通常表示该序号之前的所有帧都已正确收到。例如 ACK 5 可以表示 0 到 5 或 5 之前的帧都已经正确接收具体含义取决于教材和协议约定但核心思想都是“按序累计确认”。4. 选择重传协议 SR选择重传协议允许接收方缓存失序到达的正确帧只要求发送方重传出错或丢失的帧而不是像 GBN 那样从错误帧开始全部重传。因此 SR 的重传开销比 GBN 小尤其适合误码率较高的链路。SR 的代价是实现更复杂。接收方需要有足够缓存保存失序帧并对每个正确接收的帧单独确认。发送方也需要为窗口内每个帧维护状态可能还要为每个未确认帧设置独立计时器。在 SR 中为避免新旧帧序号混淆若序号位数为 (n)发送窗口和接收窗口通常满足W_T 2^(n-1) W_R 2^(n-1)常见情况下SR 的发送窗口和接收窗口大小相等都不超过序号空间的一半。5. 三种可靠传输协议的比较停止-等待协议最简单窗口大小为 1信道利用率低适合低速或简单链路。GBN 允许连续发送多个帧发送效率较高但接收方不缓存失序帧出错后可能重传大量帧。SR 只重传出错帧信道利用率更高但实现复杂需要更大的缓存和更复杂的确认机制。可以这样理解三者的演进停止-等待协议是“发一个等一个”GBN 是“连续发但错了从错误处往后全重来”SR 是“连续发错哪个补哪个”。五、介质访问控制共享信道如何分配介质访问控制主要解决广播信道中的冲突问题。多个结点共享同一条信道时如果大家随意发送帧之间可能互相干扰导致接收方无法正确接收。因此需要某种规则决定谁在什么时候可以发送。介质访问控制方法大致可以分为三类信道划分介质访问控制、随机访问介质访问控制和轮询访问介质访问控制。六、信道划分介质访问控制信道划分方法的思想是把共享信道划分成多个互不干扰的子信道每个用户占用其中一部分资源。这样可以避免冲突但可能造成资源浪费。1. 频分复用 FDM频分复用把信道的总频带划分为多个互不重叠的频率子带每个用户占用一个频带同时传输数据。广播电台就是典型例子不同电台使用不同频率用户调到对应频率即可接收。FDM 的优点是各用户可以同时通信缺点是需要保护频带以避免相邻频带干扰并且当某个用户没有数据发送时其占用的频带可能被浪费。2. 时分复用 TDM时分复用把时间划分为周期性重复的时隙每个用户在固定时隙内发送数据。所有用户轮流使用同一频带。传统 TDM 的缺点是时隙固定分配即使某用户暂时没有数据其时隙也可能空闲浪费。统计时分复用 STDM 则根据用户实际需求动态分配时隙提高信道利用率。3. 波分复用 WDM波分复用主要用于光纤通信。它把不同波长的光信号合并在同一根光纤中传输到接收端再分离不同波长。由于光的频率极高光纤带宽巨大WDM 可以显著提高光纤传输容量。可以把 WDM 理解为光纤通信中的“频分复用”只是划分的是不同光波波长。4. 码分复用 CDM码分复用让多个用户在同一时间、同一频带上传输但每个用户使用不同的码片序列进行区分。只要码片序列之间相互正交接收方就可以通过相关运算从叠加信号中分离出目标用户的数据。码分多址 CDMA 是码分复用的典型应用。每个站点被分配一个唯一的码片序列。发送 1 时发送该码片序列发送 0 时发送该码片序列的反码。接收方用同一个码片序列与收到的叠加信号做内积就能判断该用户发送的是 1、0还是没有发送。CDMA 的计算题核心是正交码片和内积运算。若两个码片序列正交它们规格化内积为 0某码片序列与自身的内积为 1与自身反码的内积为 -1。利用这个性质就能从多个用户叠加发送的信号中分离出某个用户的信息。七、随机访问介质访问控制随机访问方法不预先把信道固定分给各用户而是让用户在有数据时尝试发送。如果发生冲突再通过某种机制处理。其优点是灵活适合突发数据缺点是可能发生冲突负载高时效率下降。1. ALOHA 协议纯 ALOHA 的思想非常简单站点有数据就立即发送。如果发送后发现冲突或没有收到确认就等待一个随机时间后重发。纯 ALOHA 简单但效率低因为任意时刻都可能有其他站点发送冲突概率较高。其最大信道利用率约为 18.4%。时隙 ALOHA 把时间划分为等长时隙站点只能在时隙开始时发送。这样冲突只会发生在同一时隙内减少了冲突可能性最大信道利用率约为 36.8%。时隙 ALOHA 的效率高于纯 ALOHA但需要全网时钟同步。2. CSMA 协议CSMA 是载波监听多路访问。它的思想是站点发送前先监听信道如果信道空闲再发送如果信道忙则按照某种策略等待。CSMA 的常见策略包括 1-坚持 CSMA、非坚持 CSMA 和 p-坚持 CSMA。1-坚持 CSMA 中站点监听到信道空闲就立即发送如果信道忙就持续监听一旦空闲马上发送。它的优点是信道空闲时利用及时缺点是多个等待站点可能同时发送导致冲突。非坚持 CSMA 中站点监听到信道忙时不持续监听而是等待一个随机时间后再监听。这样可以减少冲突但可能造成信道空闲后没有站点立即发送降低利用率。p-坚持 CSMA 常用于时隙信道。站点监听到信道空闲时以概率 p 发送以概率 1-p 推迟到下一个时隙继续判断。它在冲突概率和信道利用率之间折中。CSMA 相比 ALOHA 能减少冲突但不能完全避免冲突。原因是信号传播存在时延一个站点监听到信道空闲时可能另一个远端站点的信号还没有传播到它这里于是两个站点仍可能同时发送。3. CSMA/CD 协议CSMA/CD 是带冲突检测的载波监听多路访问典型用于传统总线型以太网。它的原则可以概括为先听后发边发边听冲突停止随机重发。站点发送前监听信道空闲则发送发送过程中继续监听信道检测是否发生冲突。一旦检测到冲突就立即停止发送并发送干扰信号强化冲突使所有站点都知道发生了冲突。随后使用二进制指数退避算法等待随机时间后重发。CSMA/CD 中有一个非常重要的最短帧长问题。由于冲突信号需要传播时间发送方必须在发送过程中仍有机会检测到最远端冲突。为了保证这一点帧的发送时间不能小于两倍的最大传播时延即最短帧发送时间 2τ若数据传输速率为 (R)最大传播时延为 (\tau)则最短帧长为L_min 2τR以太网规定最短帧长为 64 字节这与冲突检测机制密切相关。如果帧太短发送方可能已经发送完毕以为发送成功但冲突信号还没有返回导致无法检测冲突。CSMA/CD 适用于半双工共享介质环境。现代交换式以太网通常工作在全双工模式不再需要 CSMA/CD因为每个端口独享链路不会发生传统意义上的冲突。4. CSMA/CA 协议CSMA/CA 是带冲突避免的载波监听多路访问主要用于无线局域网。无线环境中站点很难像有线以太网那样边发送边检测冲突因为发送信号远强于接收信号而且还存在隐藏站问题。因此无线网络更强调避免冲突而不是检测冲突。CSMA/CA 的基本思想是发送前监听信道信道空闲一段时间后再等待随机退避时间退避计数到 0 才发送。接收方收到正确帧后发送 ACK。若发送方没有收到 ACK就认为发生冲突或传输失败需要重传。无线局域网还可以使用 RTS/CTS 机制缓解隐藏站问题。发送方先发送 RTS 请求发送接收方回复 CTS 允许发送。其他站点听到 RTS 或 CTS 后会在指定时间内保持静默从而减少冲突。隐藏站问题是指两个站点都能与同一个接收方通信但彼此听不到对方。如果它们同时向接收方发送就会在接收方处发生冲突。暴露站问题则是站点误以为不能发送实际上发送不会造成冲突从而降低了信道利用率。CSMA/CA 和 RTS/CTS 主要用于缓解这些无线环境中特有的问题。八、轮询访问介质访问控制轮询访问介质访问控制通过集中或有序方式分配发送机会典型方法包括轮询协议和令牌传递协议。轮询协议中有一个主站按顺序询问各从站是否有数据发送。被询问到的站点才可以发送。它避免了冲突但主站故障会影响全网轮询开销也会降低效率。令牌传递协议中网络中有一个特殊控制帧称为令牌。只有持有令牌的站点才能发送数据发送完后把令牌传给下一个站点。令牌环网就是典型例子。令牌机制可以避免冲突并保证每个站点都有发送机会但令牌丢失或损坏需要额外机制恢复。轮询和令牌传递适合负载较重且需要确定性访问的场景但实现复杂度高于随机访问方法。九、局域网与 IEEE 802 标准局域网覆盖范围较小通常属于一个单位、校园或家庭内部网络。它具有传输速率高、误码率低、延迟小、便于管理等特点。局域网通常采用广播信道因此介质访问控制是局域网的重要内容。IEEE 802 标准把局域网的数据链路层进一步划分为两个子层逻辑链路控制 LLC 子层和介质访问控制 MAC 子层。LLC 子层向网络层提供统一接口使网络层不必关心底层采用的是以太网、令牌环还是无线局域网。MAC 子层负责与具体介质访问控制相关的功能例如 MAC 地址、帧格式、介质访问规则和差错检测。在现代以太网中LLC 的存在感相对较弱MAC 子层更加重要。考试中常见的是 MAC 地址、以太网帧格式、CSMA/CD、交换机转发等内容。十、以太网以太网是最典型、使用最广泛的局域网技术。早期以太网采用总线型结构和 CSMA/CD 协议所有主机共享同一信道。现代以太网更多采用交换机组成星型拓扑每台主机独占交换机端口通常支持全双工通信。1. 以太网的特点以太网提供的是无连接、不可靠服务。发送方发送帧之前不建立连接接收方收到帧后通常不发送链路层确认。如果帧出错以太网直接丢弃可靠性由上层协议如 TCP 负责。以太网使用 MAC 地址标识网卡。MAC 地址通常为 48 bit全球唯一常用十六进制表示。以太网帧根据目的 MAC 地址决定接收对象。若目的地址是广播地址全网同一广播域内的主机都应接收该帧。2. 以太网帧格式以太网帧通常包括目的地址、源地址、类型字段、数据字段和帧检验序列 FCS。目的地址和源地址各 6 字节类型字段 2 字节用于标识上层协议FCS 通常为 4 字节用 CRC 进行差错检测。以太网帧的数据字段有最小长度要求。由于以太网最短帧长为 64 字节除去目的地址、源地址、类型字段和 FCS 等字段后数据字段不足时需要填充。这个最短帧长与 CSMA/CD 的冲突检测机制有关。3. 传统以太网与交换式以太网传统共享式以太网中所有主机共享同一冲突域任意两个主机同时发送都可能冲突因此需要 CSMA/CD。交换式以太网使用交换机连接各主机。每个交换机端口形成独立冲突域如果工作在全双工模式就不会发生冲突因此不再使用 CSMA/CD。交换式以太网提高了带宽利用率和网络性能是现代局域网的主流形式。十一、无线局域网 IEEE 802.11无线局域网使用无线电波作为传输介质典型标准是 IEEE 802.11也就是通常所说的 Wi-Fi。由于无线信道开放、干扰多、隐藏站问题明显无线局域网不能简单照搬有线以太网的 CSMA/CD而采用 CSMA/CA。无线局域网的基本组成包括无线站点、接入点 AP 和基本服务集 BSS。一个 AP 及其覆盖范围内的无线站点构成一个基本服务集。多个 BSS 可以通过分布式系统连接形成扩展服务集 ESS。802.11 帧比以太网帧更复杂可能包含多个地址字段因为无线帧在站点、接入点和分布式系统之间转发时需要同时标识发送端、接收端、源地址和目的地址。无线局域网的可靠性通常依赖链路层确认。由于无线误码率较高接收方正确收到单播帧后需要发送 ACK发送方未收到 ACK 则重传。这一点与以太网不同以太网通常不在链路层确认普通数据帧。十二、VLAN虚拟局域网VLAN 即虚拟局域网它可以在物理网络基础上划分多个逻辑广播域。不同 VLAN 之间即使连接在同一台交换机上也像处于不同局域网一样二层广播不会直接互通。VLAN 的主要作用是隔离广播域、提高网络安全性、方便管理和灵活划分用户组。传统按物理位置划分网络而 VLAN 可以按部门、功能或策略划分网络不受物理位置限制。IEEE 802.1Q 是常见 VLAN 标准它在以太网帧中插入 VLAN 标签用于标识该帧所属 VLAN。交换机根据 VLAN ID 判断帧的转发范围。十三、广域网与 PPP 协议广域网覆盖范围大常用于连接不同地区的局域网。与局域网相比广域网链路距离长、带宽成本高、涉及运营商网络数据链路层协议也有所不同。PPP 是点对点协议常用于点对点链路。它具有简单、通用、支持多种网络层协议等特点。PPP 帧通常包含标志字段、地址字段、控制字段、协议字段、信息字段和 FCS 字段。PPP 的功能包括成帧、差错检测、链路控制和网络层协议协商。链路控制协议 LCP 用于建立、配置、测试和终止数据链路网络控制协议 NCP 用于支持不同网络层协议例如 IP。PPP 不提供可靠传输不进行纠错也不使用序号和确认机制。它只进行差错检测发现错误帧后丢弃可靠性由上层协议负责。十四、HDLC 协议HDLC 是一种面向比特的数据链路层协议。它使用01111110作为帧标志并采用零比特填充法防止数据中出现伪标志。HDLC 帧通常包含标志字段、地址字段、控制字段、信息字段和 FCS 字段。HDLC 的控制字段可以区分信息帧、监督帧和无编号帧。信息帧用于传输数据监督帧用于流量控制和差错控制无编号帧用于链路管理等控制功能。HDLC 是理解面向比特协议、零比特填充和链路控制思想的重要例子。十五、数据链路层设备数据链路层设备主要包括网桥和交换机。它们与物理层设备中继器、集线器不同能够识别帧能够根据 MAC 地址转发数据。1. 网桥网桥工作在数据链路层用于连接多个局域网网段。它根据 MAC 地址决定是否转发帧可以隔离冲突域减少无关流量。网桥具有自学习能力。它会根据收到帧的源 MAC 地址和进入端口建立转发表。以后当收到目的地址已知的帧时就只向对应端口转发如果目的地址未知则向除入端口外的其他端口泛洪。2. 交换机交换机可以看作多端口网桥。它每个端口通常连接一台主机或另一个网络设备每个端口都是独立冲突域。交换机根据 MAC 地址表转发帧显著提高局域网性能。交换机的转发方式常见有存储转发和直通转发。存储转发会先接收完整帧并检查 FCS再决定是否转发可靠性较高但延迟稍大。直通转发在读取到目的地址后就开始转发延迟低但可能转发错误帧。交换机不会默认隔离广播域。普通二层交换机会转发广播帧到同一 VLAN 内所有端口因此一个 VLAN 通常就是一个广播域。要实现不同广播域之间通信需要三层设备或三层交换机。十六、本章高频计算与判断数据链路层的计算题主要集中在滑动窗口、信道利用率、最短帧长、CRC、海明码和 CDMA。滑动窗口题要先确定协议类型。停止-等待窗口为 1GBN 接收窗口为 1发送窗口最大通常为 (2^n - 1)SR 发送窗口和接收窗口通常不超过 (2^{n-1})。信道利用率题要分清发送时延、传播时延、RTT 和确认帧发送时延。停止-等待协议效率低的根本原因是每发送一帧后要等待确认而滑动窗口可以连续发送多个帧提高链路利用率。最短帧长题常和 CSMA/CD 结合。核心是发送方必须在发送完之前检测到最远端冲突因此帧发送时间至少为 (2\tau)最短帧长为 (2\tau R)。CRC 题要熟练模 2 除法。模 2 加减都等价于异或不借位也不进位。生成多项式阶数决定校验码位数。海明码题要先用 (2^r \ge mr1) 确定校验位个数再确定校验位位置。纠错时根据校验结果形成错误位置编号。CDMA 题要记住码片正交和规格化内积。目标站点的码片序列与收到的叠加序列做内积结果为 1 表示发送 1为 -1 表示发送 0为 0 表示未发送。十七、容易混淆的重点第一数据链路层的可靠传输不同于传输层的端到端可靠传输。数据链路层只负责相邻结点之间的一段链路传输层负责源主机到目的主机之间的端到端通信。第二流量控制和差错控制不是一回事。流量控制解决发送太快导致接收方来不及处理的问题差错控制解决帧丢失、出错和重复的问题。很多协议把二者结合实现但概念上要分开。第三GBN 和 SR 的接收策略不同。GBN 不接收失序帧错一帧可能导致后续多帧重传SR 接收并缓存失序帧只重传出错帧。第四CSMA/CD 和 CSMA/CA 的适用环境不同。CSMA/CD 用于有线共享以太网重点是冲突检测CSMA/CA 用于无线局域网重点是冲突避免。第五集线器和交换机不能混淆。集线器工作在物理层转发比特所有端口共享冲突域交换机工作在数据链路层转发帧能够隔离冲突域。第六以太网不提供链路层可靠传输。它可以通过 FCS 检测错误帧但发现错误后通常直接丢弃不在链路层重传。第七VLAN 隔离的是广播域而交换机普通端口隔离的是冲突域。没有 VLAN 时一台二层交换机上的多个端口通常仍属于同一个广播域。结语数据链路层是计算机网络中非常关键的一层。它把物理层提供的原始比特流组织成帧通过成帧机制确定边界通过差错控制发现或纠正传输错误通过流量控制和可靠传输机制协调发送与接收通过介质访问控制解决共享信道上的冲突问题又通过以太网、无线局域网、PPP、HDLC、交换机和 VLAN 等技术落到真实网络中。理解本章时不要把知识点当成孤立概念。组帧解决“数据边界在哪里”差错控制解决“数据有没有错”流量控制解决“发送会不会太快”可靠传输解决“出错或丢失怎么办”介质访问控制解决“共享信道谁先发”交换机和 VLAN 解决“局域网中帧如何转发和隔离”。这些问题连在一起就构成了数据链路层的完整逻辑。重点问题