数据链路层
数据链路层:
数据链路层对于物理层主要作用:加强物理层传输原始比特流,将物理层提供可能出错的物理连接改造为逻辑上无差错的数据链路
数据链路层对于网络层主要作用:
(1)无确认的无连接服务:发送帧时不需要先建立链路连接,目的机器收到帧时不需要发回确认 以太网
(2)有确认的无连接服务:不需要先建立链路连接,目的机器收到数据帧时必须发回确认,源机器规定时间内未收到确认信息就重传丢失的帧 无线通信
(3)有确认的面向连接服务:建立数据链路,传输帧,释放数据链路,目的机器对收到的每一帧都要给出确认,源机器收到确认后才能发送下一帧
链路管理:数据链路层连接时的 建立,维持,释放 过程称为链路管理,它主要用于面向连接的服务
帧定界,帧同步与透明传输:两台主机之间传输信息时,必须将网络层的分组封装成帧,以帧的格式进行传送。将一段数据的前后分别添加首部和尾部,就构成了帧。HDLC协议中,用标识位F(01111110)来标识帧的开始和结束,为了提高帧的传输效率,应当使帧的数据部分的长度尽可能的大于首部和尾部的长度。但每种数据链路层协议都规定了帧的数据部分的长度上线——最大传送单元(MTU)
如果在数据中恰好出现与帧定界符相同的比特组合,那么就采取透明传输。透明传输不管所传数据是什么样的比特组合,都应当能在链路上传送
流量控制:当发送能力大于接受能力,流量控制就限制发送方的数据流量,使其发送速率不超过接收方的接受能力。
差错控制:由于信道噪声等各种原因,帧在传输过程中可能会出现错误。用以使发送方确定接收方是否正确收到由其发送的数据的方法称为差错控制。这些错误可分为位错和帧错
位错:帧中某些位出现了差错。通常采用循环冗余校验方式(CRC)发现位错,通过自动重传请求(ARQ)重传出错的帧。让发送方将要发送的数据帧附加一定的CRC一并发送,接收方则根据检错码对数据帧进行错误检测,发现错误则丢弃,发送方超时重传该数据帧。
帧错:指帧的丢失,重复或失序等错误。在数据链路层引入定时器和编号机制,能保证每一帧最终都能有且仅有一次正确的交付给目的结点
组帧:数据链路层之所以要把比特组合组合成帧单位传输,是为了出错时只重发出错的帧,而不必重发全部数据,从而提高效率。发送方必须依据一定的规则把网络层递交的分组封装成帧(组帧)。组帧主要解决帧定界,帧同步,透明传输等问题。
字符计数法:
字符计数法是指在帧头部使用一个计数字段来标明帧内字符。
512345678980123456
这个方法最大的问题在于如果计数字段出错,即失去了帧边界划分的依据,就无法判断结束位和下一帧的开始位,将失去同步
字符填充法:
字符填充法使用特定字符来定界一帧的开始与结束。控制字符SOH放在帧的最前面,表示帧的首部开始,控制字符EOT表示帧的结束。为了使信息位中出现的特殊字符不被误判为帧的首尾定界符,可在特殊字符前面填充一个转义字符(ESC)加以区分,以实现数据的透明传输。接收方在信息位中会自动将特殊字符前面的转义字符(ESC)删掉。如果ESC也出现在数据中,那么仍是在转义字符前面插入一个转义字符
零比特填充的首位标志法:
零比特填充法允许数据帧包含任意个数的比特,也允许每个字符的编码包含任意个数的比特。它以01111110来标志一帧的开始和结束。为了不使信息位中出现的比特流01111110被误判位帧的首位标志,发送方在信息位每遇到5个连续的“1”时,就自动在其后插入一个“0”;接收方就做该过程的逆操作。遇5个“1”,删掉后面的“0”恢复原数据。零比特填充法很容易用硬件来实现,性能优于字符填充法。
违规编码法:
在物理层进行比特编码时,通常采用违规编码法。例如曼彻斯特编码方法将比特“1”编码成“高-低”电平对,将“0”编码成“低-高”电平对,而“高-高”“低-低”在数据比特中时违规的,可以借助这些违规编码序列来定界帧的起始和终止。
由于其不需要采用任何填充技术,便能实现数据传输的透明性,但他只适用于采用冗余编码的特殊编码环境。
差错控制:
比特在传输过程中可能会出现差错,1可能变成0,0可能变成1,这就是比特差错。
利用编码技术进行差错控制,主要有两类:自动重传请求ARQ和前向纠错FEC,ARQ中,接收端检测出差错就是设法通知发送端重发,直到接收到正确的码字为止,FEC中,接收端不但能发现差错,而且能确定比特串的错误位置,从而加以纠正。因此,差错控制又可分为检错编码和纠错编码。
检错编码:检错编码都采用冗余编码技术。常见的检错编码有奇偶校验码和循环冗余码
奇偶校验码:
奇偶校验码是是由n-1位信息元和1位校验元组成,如果是奇校验码,那么在附加一个校验码后,码长为n的码字中“1”的个数为奇数,如果是偶校验码,那么在附加一个校验码后,码长为n的码字中“1”的个数为偶数。它只能检测奇数位的出错情况,并不知道哪些位错了,也不能发现偶数位的出错情况。
循环冗余码:
书上p81
海明码:
发送的信息是(2~4位),用3位校验位
发送的信息是(5~11位),用4位校验位
海明码“纠错”d位,需要码距为2d+1编码方案,“检错”d位,只需d+1位码距
海明码的检验在ipad笔记上p10~p11
流量控制,可靠传输与滑动窗口机制:
流量控制涉及对链路上的帧的发送速率的控制,以使接收方有足够的缓冲空间来接受每个帧。当待确认的帧的数量增加时,有可能超出缓冲存储空间造成挂在。流量控制的基本方法是由接收方控制发送方发送数据的速率,常见的方式有两种:停止-等待协议和滑动窗口协议
停止-等待流量控制基本原理:
发送方每发送一帧,都要等待接受方的应答信号,之后才能发送下一帧,如果接收方不反馈应答信号,那么发送方必须一直等待。每次只允许发送一帧,然后就陷入等待接收方确认信息的过程中。因而传输效率很低
滑动窗口流量控制基本原理:
任意时刻,发送方都维持一组连续的允许发送的帧的序号,成为发送窗口,同时接收方也维持一组连续的允许接受帧的序号,称为接收窗口,发送窗口用来对发送方进行流量控制,接受方只有收到的数据帧落入接收窗口内时,才允许将该数据帧手下。若接收到的数据帧落在接受窗口之外,则一律将其丢弃。
发送端每收到一个确认帧,发送窗口就向前滑动一个帧的位置,当窗口没有可以发送的帧,就停止发送,直到收到接收方发送的确认帧使窗口移动,窗口内有可以发送的帧后,才开始发送
接收端收到数据帧后,将窗口向前移一个位置,并发回确认帧,若收到的数据帧落到接收窗口之外,一律丢弃
滑动窗口有一下重要特性:
1,只有接受窗口向前滑动(同时接收方发送了确认帧)时,发送窗口才有可能向前滑动
2,接收窗口的大小为1时,可保证帧的有序接受
3,数据链路层的滑动窗口协议中,窗口的大小在传输过程中是固定的
可靠传输机制
数据链路层的可靠传输通常使用确认和超时重传两种机制完成
确认:一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接受。有些情况下为了提高传输效率,将确认捎带在一个回复帧钟,称为捎带确认
超时重传:发送方发送某个数据帧后就开启一个计时器,如果一定时间内没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,直到发送成功为止
自动重传请求ARQ:通过接收方请求发送方重传出错的数据帧来恢复出错的帧。
传统自动重传请求有三种:1,停止-等待ARQ 2,后退N帧ARQ 3,选择性重传ARQ
注意,在数据链路层钟流量 控制机制和可靠传输机制是交织在一起的
单帧滑动窗口与停止-等待协议
在停止-等待协议中,源站发送单个帧后必须等待确认,在目的站的回答到达源站之前,源站不能发送其他的数据帧,停止-等待协议相当于发送窗口和接受窗口大小均为1的滑动窗口协议。
到达目的站的帧可能已遭破坏,对此,在一个镇发送后,源站等待确认,如果在计时器计满时仍未收到确认,那么再次发送 相同的帧。如此重复,直到该数据帧无错误的到达为止。
另一种差错是数据帧正确而确认帧被破坏,此时接收方已收到正确的数据帧,但发送方收不到确认帧,因此发送方会重传已被接受的数据帧。接收方收到同样的数据帧会丢弃该帧,并重传一个该帧对应的确认帧。
为了超时重发和判定重复帧的需要,发送方和接收方都必须设置一个帧缓冲区,发送方在发送完数据帧时,必须在其发送缓冲中保留此数据帧的副本,这样才能在出差错时进行重传。只有在收到对方发来的确认帧ACK时,方可清除此副本。所以停止-等待协议通信信道的利用率很低
多帧滑动窗口与后退N帧协议
在后退N帧ARQ中,发送方无需在收到上一个帧的ACK后才能开始发送下一帧,而是可以连续发送帧。
当发送方发送N个帧后,若发现该N个帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重传该出错帧及其随后的N个帧。换句话说,接收方只允许按顺序接受帧。
这种做法传送效率低,若信道的传输质量很差导致误码率较大时,后退N帧协议不一定优于停止-等待协议
__EOF__

本文链接:https://www.cnblogs.com/AzathothLXL/p/16313633.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!