数据链路层是网络模型的第二层。本章内容涉及到两台相邻计算机实现可靠、有效的完整信息单元通信的一些算法。不像物理层那样只关注单个比特的传输。
请读者思考,这里的“相邻”该如何理解?你可以用通信信道的概念来进行解释。值得注意的是,作者提到“信道”像一条线路的本质之处在于 信道上传递的比特顺序与发送顺序完全相同 ,而这个本质贯穿了整个数据链路层。相信读者在阅读后续内容,尤其是3.4小节的几个协议时,能够更加清晰地感受到这个本质所在。
本章按照下面四部分的内容进行叙述:
1. __________
2. __________
3. __________
4. __________
请读者阅读完章节全部内容后,进行总复盘时,根据自己对本章内容的把握,完成上述填空。
数据链路层使用其下的物理层提供的 _______ 在通信信道上 _______ 和 _______ 比特。第一个空的答案肯定是“服务”啦,服务与协议的概念贯穿计算机网络的始终。数据链路层主要实现了以下功能:
1. __________(向网络层提供)
2. __________(封装成帧)
3. __________(差错检测)
4. __________(流量控制)
Question1: 数据链路层工作的 核心 是什么?请读者思考 帧 和 数据包 的关系。
数据链路层的功能是 _______。数据链路层的最主要的服务就是将数据从 _______ 传输到 _______。数据链路层收到的数据包是由源主机的网络层中的 _______ (一种实体)来进行提供。
既然上面先提纲挈领讲了“服务”,接下来作者就提到了三个合理的可能性:
1. 无确认的无连接服务
2. 有确认的无连接服务
3. 有确认的面向连接服务
无确认的无连接服务:读者可以借助 以太网 与 语音实时流量(例如语音、视频) 来对该类服务进行理解。书中一句很通俗的话就是:在实时流量的情况下,数据迟到比数据受损更糟糕。所以这个服务不会检测丢不丢帧,也不会试图恢复丢失的帧。
有确认的无连接服务:虽没有逻辑链接,但是发送的每一帧都要单独进行 _______。如果一个帧在指定的时间间隔内还没有到达,则发送方将再次发送该帧。这类服务在 _______ (可靠/不可靠)的信道上非常有用。
有确认的面向连接服务: 这种服务相当于为网络层进程提供了一个可靠的数据流,每个帧都被编号、每个帧都能真正被收到、每个帧只能被接受一次。它适用于 _______ 的链路,比如卫星信道或长途电话电路。该类服务下的数据传输分为三个阶段,_______、传帧和 _______。
Question1: 请读者尝试画一下源主机与目标主机进行数据传输时的数据路径图。
Question2: 有这样一种策略,即可以使用重传计时器来对接收方是否收到消息进行辅助确认,如果计时器超时,说明还没有收到消息,那么发送方可以再次发送整条消息(数据包)。但如果不对每个帧单独进行确认和重传,该策略会非常低效。请读者思考一下低效的原因。
顾名思义,这一小节的内容,就是“成帧”,将比特流拆分成离散的帧。一个好的设计必须使接收方很容易发现新帧的开始,同时使用极小的信道带宽。下面可能会频繁提到“成帧”“拆分”“帧的边界”“帧的开始与结束”等等,这些词都是“成帧”的相关描述。请读者回忆一下书中提到的四种成帧方法:
1. __________
该方法在帧头的一个字段标识该帧的字符数。这样当目标方的数据链路层看到字节计数值时,就知道后面跟着多少字节。但是倘若字节计数值出错,例如从5变成7,就无法找到下一帧的正确位置。
2. __________
这种方法考虑了出错之后的重新同步问题。用同样的字节作为帧的开始和结束分界符,被称为标志字节。但是这个方法的一个问题,在于有时 _______ 恰好出现在了数据中,可能会干扰到帧的分界。那么,如何解决这个问题?请读者进行思考~
3. __________
前两个方法是在字节级上对帧进行划分。而第3种方法可以在比特级完成,因而帧可以包含由任意大小的单元组成的任意数量的比特。每个帧的开始和结束由一个特殊的比特模式——01111110来进行标记。通过这种方式,两帧的边界可以由标志模式进行毫无歧义地区分,即只要出现了上述比特标记,就意味着拆分出一帧。所以如果接收方失去了接收轨迹,只需要对输入比特流进行扫描,找出其中的标志序列。因为这些标记序列只可能出现在帧的边界,而不会出现在数据中。
4. __________
利用不会出现在常规数据中的冗余,来指示帧的开始和结束。即使用“编码例外”(无效字符)来区分帧的边界。
这一节讨论的内容,是如何确保所有的帧最终都被按照 正确的顺序 传递给了目的地的网络层。
对于可靠的面向连接的服务。一种很容易想到的方式就是“反馈”,_______ 要求接收方发回一些特殊的控制帧,来对它接收到的帧进行肯定和确认。如果发送方收到了肯定确认,则知道该帧已经安全到达。如果收到了否定确认,则这一帧出现了传输错误,必须 _______。
但如果由于硬件的问题导致一个帧完全的丢失,这样接收方就不会有任何反应。因为它并不知道那一帧的存在,因此也不需要做一些反馈。所以发送方可能会对这个期待的“反馈”进行永远的等待。
所以根据这种永远等待的可能性,可以引入_______ 来进行解决(这个方法在3.1.1也提到过~)。
Question1: 如何理解 错误 这个概念?可以参照(P164中间部分)。
Question2: 假设出现错误后,帧被重新传送,但是如何避免帧被多次传送,从而接收端多次将 重复帧传入网络层 的情况呢?
3.1.4 流量控制
接受方:“你现在可以给我发送n个帧,但是发完这n个帧之后就先别再发了,直到我告诉你可以继续发,你再发。”
发送方:“emmm,好的”
这就是基于_______ 的流量控制。另外一种流量控制的方法是基于_______ 的流量控制。