讨论/求职面试/面试题目丨计算机网络面试笔试基础知识总结 · 六/
面试题目丨计算机网络面试笔试基础知识总结 · 六

😺😺😺 这篇总结聚焦计算机网络中数据链路层的相关知识,内容比之前相对较多一点,适用于计算机方向岗位的笔试题和面试题的复习(预习),楼主平时妥妥手残党小白一枚,欢迎大家提出宝贵修正意见~~


1. 数据链路层基本概念

结点:主机、路由器
链路:两个节点之间的物理通道。链路传输介质主要有双绞线、光纤和微波,分为有线链路和无线链路。
数据链路:两个节点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。
:链路层的协议数据单元,封装网络层数据报。

2. 数据链路层功能概述

数据链路层是在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层可能出错的物理连接改造成逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
🤡 为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。
注意:有链接就一定要确认,不存在无确认的面向连接的服务。
🤡 链路管理。即连接的建立、维持、释放(用于面向连接的服务)
🤡 组帧。封装成帧。
🤡 流量控制。限制发送方。
🤡 差错控制(帧错/位错)

下面就是功能的详细内容,很好理解~~

3. 封装成帧和透明传输功能

在一段数据的前后部分添加首部和尾部,这样就构成一帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中试别帧的开始和结束。
首部和尾部包含很多控制信息,他们一个重要作用是:帧定界(确定帧的界限)。
帧同步是指,接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。
透明传输是指不管传输的数据是什么样的比特组合,都应当能在链路上传送,不会引起误会。当所传数据中的比特组合恰巧和某一个控制信息完全一样时,必须采取措施。

4. 组帧的四种方法:

🍓 字符计数法

在帧头部使用一个计数字段来标明帧内字符数。目的结点数据链路层收到字节计数值时就知道后面跟随的字节数(计数字段也占一个字节),从而确定帧结束的位置。
问题:如果计数字段出错,就失去帧边界划分的依据,收发双方失去同步,造成恶劣后果。
🍓 字符(节)填充法
使用特定字符来界定一帧的开始(SOH)和结束(EOT)。
当传送的帧是文本文件组成时(键盘上的字符都是ASCII码,与SOH和EOT不会冲突),不管键盘上什么字符都可以放在帧里传过去,即透明传输。当传送的帧由非ASCII码文本文件组成时(二进制代码执行文件或图像等),就要采用字符填充法实现透明传输,即在每个可能造成误会的字符前填充转义字符,接收端接受到时再删去转义字符回复原数据。
🍓 零比特填充法
该方法允许数据帧包含任意个数的比特。它使用01111110来标识一帧的开始与结束,为了不使比特流中的01111110被误判为首尾标识,发送方的数据链路层在数据位中遇到5个连续的1时,会自动在后插入一个0,接收方接收到时在进行恢复。该方法很容易有硬件实现,性能优于字符填充法。
🍓 违规编码法
只适用于采用冗余编码的环境。比如用1个比特位可以表示两种数据,即1和0,如果用2个比特位来表示,则有两个冗余编码,可用来表示开始和结束位。
由于字节计数法中计数字段的脆弱性和字符填充法实现上的复杂性和不兼容性,目前常用的是零比特填充法和违规编码法。

5. 差错控制功能

🤡 差错来源
主要由噪声引起。其中由线路本身电气特征所产生的随机噪声,是信道固有的,随机存在的全局性噪声;可以通过提高信噪比来减少干扰(从传感器入手)。外界特定的短暂原因造成的冲击噪声,是局部性噪声,是产生差错的主要原因;可以通过编码技术来解决。
🤡 差错种类
产生的差错主要分为位错(1、0出错)帧错(帧丢失、重复、失序)。对于通信质量好或是有线传输线路,链路层为网络层提供无确认无连接服务,检错纠错交给高层来解决;对于通信质量差的无线传输链路,链路层提供有确认无连接服务和有确认面向连接服务

🤡 差错控制方法与技术
通常用编码技术进行差错控制主要有两类,自动重传请求ARQ前向纠错FEC。ARQ接收端检测出错时,通知发送端重发,直到接受到正确码字为止;FEC中接收端可以检查出错误并且能纠正。因此差错控制可分为检错编码和纠错编码。

  • 常见检错编码
    奇偶校验码:由n-1位信息元和1位校验元组成。如果是奇校验码,那么n位码字中共有奇数个1,偶校验码则有偶数个1;
    CRC循环冗余码
  • 常见纠错编码
    海明码:可以发现双比特错,纠正单比特错。

6. 数据链路层的流量控制功能

较高的发送速度和较低的接受能力不匹配,会造成传输出错,这时就需要流量控制
注意:数据链路层与传输层的流量控制不同点在于,

  • 数据链路层的流量控制是点对点的,而传输层的流量控制是端对端的。从源结点到目的结点中间可能会有很多中间结点,中间结点只有网络层以下的三层,只能进行相邻结点之间的流量控制,而源结点和目的结点可以进行首尾结点之间的流量控制。
  • 其次,数据链路层的流量控制手段是,接收方接收不下就不回复确认,而传输层的接收端会给发送端一个窗口公告

流量控制基本方法是由接收端控制发送方发送数据的速率,常见的方式有两种:停止-等待协议滑动窗口协议。

🍓 停止-等待流量控制基本原理

发送方每发送一帧,都要等待接收方的应答信号,再发送下一帧,如果不应答就一直等待,传输效率很低。

🍓 滑动窗口流量控制基本原理

在任意时刻,发送方都维持一组连续的允许发送的帧的序号,称为发送窗口;同时接收方也维持一组连续的允许接收帧的序号,成为接收窗口。发送窗口用来对发送方进行流量控制,其窗口大小 W 代表在还未收到对方确认信息的情况下发送方最多还可以发送多少个数据帧。滑动窗口协议主要分为后退N帧协议和选择重传协议。

🍓 滑动窗口重要特性

  • 只有接收窗口向前滑动时(同时接收方发送了确认帧),发送窗口才有可能(只有发送方接收到确认帧后才一定)向前滑动;
  • 停止-等待协议、后退N帧协议和选择重传协议只在发送窗口大小和接收窗口大小上有差别;
  • 接收窗口大小为1时,可保证帧的有序接收
  • 数据链路层的滑动窗口协议中,窗口的大小在传输过程中是固定的(要与传输层滑动窗口协议区分)。

🍓 停止-等待协议也可以看作特殊的滑动窗口流量控制。

协议 发送窗口大小 接收窗口大小
停止-等待协议 =1 =1
后退N帧协议(GBN) >1 =1
选择重传协议(SR) >1 >1

7. 停止-等待协议

除了比特出错,底层信道还会出现丢包问题(物理线路故障、设备故障、病毒攻击、路由信息错误等原因导致的数据包丢失),为实现流量控制,可用停止-等待协议。主要有三种出现差错的情况

  • 数据帧丢失或检测到帧出错。发送方有一个超时计时器,每次规定时间内没有收到确认ACK就重传数据帧,所以发完一个帧的时候,要保留它的副本,而且数据帧和确认帧必须编号,如ACK0和ACK1。
  • ACK丢失。数据帧到达了接收端,但是接收端的反馈确认ACK丢失,导致发送端进行了超时重传,接收端会丢弃重复的帧,重传确认帧。
  • ACK迟到。和前一种情况类似,也会导致发送方的超时重传,之后发送端收到迟到的ACK时会直接丢弃。

8. 后退N帧协议(GBN)

停等协议是一种流水线技术,必须增加数据帧确认帧序号的范围,发送方需要缓存多个分组,信道利用率太低,所以产生了后退N帧协议和选择重传协议。

后退N帧协议发送方维持一组连续的允许发送的帧的序号,接收方维持一组连续的允许接收的帧的序号。接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收帧之后所有未被确认的帧;或者当发送方发送了N个帧后,若发现该N个帧的前一个帧在计时器超时后仍未返回其确认信息,即该帧被判为出错或丢失,此时发送方就不得不重传该出错帧及随后的N个帧。换句话说,接收方只允许按顺序接收帧。对n号帧的确认采用累积确认的方式,即一个ACK帧表示接收方已经收到n号帧和它之前的全部帧。

后退N帧协议的缺陷在于,它一方面连续发送数据帧提高了信道利用率,而另一方面在重传时必须把原来已传送正确的数据帧进行重传(保证有序性),导致传送效率降低。所以,如果信道的传输质量很差,误码率较大时,后退N帧协议不一定优于停止-等待协议。

9. 选择重传协议(SR)

为进一步提高信道利用率,可设法只重传出现差错的数据帧或计时器超时的数据帧,但此时必须加大接收窗口,以便先收下发送序号不连续但仍处于接收窗口中的那些数据帧,等到所缺序号的数据帧收到后再一并交送主机,这就是选择重传协议

接收方接收到帧时不管其是否按序,失序的帧将先被缓存,并返回给发送方一个确认帧,直到所有序号更小的帧都被接收到,才可以将一批帧交付给上层,然后向前滑动窗口。


😺😺😺 后续总结会有一系列,欢迎大家点赞评论收藏,春招来啦一起加油鸭🦆!!!

18
共 1 个回复

放进收藏夹里吃灰

2