数据链路层--差错控制、流量控制

在数据通信过程中可能会因物理链路性能和网路通信环境等因素,出现一些传送错误,在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率。实际通讯链路并非理想的,它不可能使误码率下降到0,但是为了确保数据通信的准确,又必须使得这些错误发生的几率尽可能低。这一功能也是在数据链路层实现的,就是“差错控制”功能。

1.检错编码

通过一定的编码和解码,能够在接收端解码时检查出传输的错误,但不能纠正错误,常见的检错编码有奇偶校验码和循环冗余码(CRC)

1.奇偶校验码

奇偶校验码就是在信息码后面加以为校验码,分奇校验和偶校验

奇校验:添加一位校验码后,使得整个码字里面1的个数是奇数。接收端收到数据后检验校验码里1的个数,如果检测到奇数个1,则认为传输没有出错;如果检测到偶数个1,则说明传输过程中,数据发生了改变,要求重发。

偶校验:添加一位校验码后,使得整个码字里面1的个数是偶数,接收端收到数据后检验校验码里1的个数,如果检测到偶数个1,则认为传输没有出错,如果检测到奇数个1,这说明传输过程中,数据发生了改变,要求重发。

奇偶校验码能够检测出数据发生改变,但是不知道是哪一位出错了;如果数据中间有偶数位数据发生了改变,此时奇偶校验码是检测不到数据出错的,所以奇偶校验码的差错能力有限。

·以上是水平垂直奇偶校验码,同时还有垂直奇偶检验。

2.循环冗余码(CRC)

在计算机网络中和数据通信中,用得最为广泛的是循环冗余码。循环冗余码是检错率极高,开销小,易实现。

循环冗余码的校验原理:

其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用二进制除法,而是采用一种称之为“模2除法”)。到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。如果有余数,则表明该帧在传输过程中出现了差错。

在数据链路层若仅仅使用循环冗余码差错检验技术,则只能做到对帧的无差错接受,即:“凡是接收端数据链路层接受的帧,我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错”。

2.流量控制                                

流量控制并不是数据链路层所特有的功能。数据链路层控制的是相邻节点之间数据链路上的流量,而对于传输层来说,控制的则是从源到最终目的之间端的流量。

1.停止-等待流量控制

它是流量控制中最简单的形式。停止-等待流量控制的工作原理就是发送方发出一帧,然后等待应答信号到达再发送下一帧;接收方每收到一帧,返回一个应答信号,表示可以接收下一帧,如果接收方不返回应答,则发送方必须一直等待。

2.滑动窗口流量控制

停止-等待流量控制中每次只允许发送一帧,然后就会陷入等待接收方确认信息的过程,传输效率极低。而滑动窗口流量控制允许一次发送多个帧。

发送窗口控制发送端的发送速率

在发送端,每收到一个确认帧,发送窗口就向前滑动一个帧的位置,当发送窗口内没有可以发送的帧 (即窗口内的帧全部是己发送但未收到确认的帧) ,发送方就会停止发送 ,直到收到接收方发送的确认帧使窗口移动 ,窗口内有可以发送的帧,之后才开始继续发送 。

在接收端 ,当收到数据帧后 ,就会将窗口向前移动一个位置,并且会发回确认帧 ,如果收到的数据帧落在接收窗口之外则一律丢弃 。

你可能感兴趣的:(数据链路层--差错控制、流量控制)