【计算机网络笔记】数据链路层(封装成帧,差错检测,可靠传输)

链路:从一个结点到相邻结点的一段物理线路,中间没有任何其他的交换结点。

数据链路:把实现通信协议的硬件和软件加到链路上

数据链路层以帧为单位传输和处理数据。

三个过程:封装成帧,差错检测,可靠传输

封装成帧:

发送方的数据链路层将上层交付下来的数据单元封装成帧后,还要通过物理层,将构成帧的各比特转换成电信号发送到传输媒体。

 补充:并不是每一种数据链路层协议的帧都包含有帧定界标志。

MAC帧就 没有帧定界标志。

MAC帧传输过程: 

透明传输问题:

面向字节的物理链路使用字节填充(字符填充)的方法实现透明传输

 面向比特的物理链路使用比特填充的方法实现透明传输

差错检测:

比特差错:比特在传输过程中可能会产生差错:1可能变成0,0可能变成1。

误码率:在一段时间内,传输错误的比特占所传输比特总数的比率 

可以通过差错检错码发现帧在传输过程中出现误码。

检错码在帧尾的FCS字段中: 

 过程:

在发送帧之前,会基于待发送的数据和检错算法计算出检错码,并将其封装在帧尾。接收方接收到帧之后,通过检错码和检错算法,就可以判读出帧在传输过程中是否出现了误码。

常见的检错方法:

 奇偶校验:

在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中1的个数为奇数(奇校验)或偶数(偶校验)

 所以,如果有奇数个数发生误码,则奇偶性发生变化,可以检查出误码;

如果有偶数个数发生误码,则奇偶性不发生变化,不能检查出误码,又称漏检。

由于奇偶校验的漏检率比较高,因此计算机网络的数据链路层不会采用这种检错方法。

循环冗余校验CRC:

使用CRC检错,漏检率比较低,易于用硬件实现,因此被广泛应用于数据链路层。

●收发双方约定好一个生成多项式G(x)

●发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面

●接收方通过生成多项式来计算收到的数据是否产生了误码

 检错码只能检测出传输过程中出现了差错,但不能定位错误,因此无法纠正错误。

要想纠正传输中的差错,可以使用冗余信息更多的纠错码前向纠错,但纠错码的开销比较大,在计算机网络中较少使用。

对于传输中的差错处理:检错重传或直接丢弃。取决于数据链路层向上层提供的服务。

可靠传输:

接收方接收到有误码的帧后,不会接收该帧,将其丢弃。

如果数据链路层向上层提供的是不可靠服务,丢弃就丢弃了;

如果数据链路层向上层提供的是可靠服务,那么就 需要其他措施,确保接收方还可以重新收到这个被丢弃这个帧的正确副本。

一般情况下,有线链路的误码率比较低,为了减小开销并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。

无线链路易受干扰,误码率较高,因此要求数据链路层必须向上层提供可靠传输服务。

计算机网络中差错的分类:

比特差错:0变成1或1变成0,差错检测有奇偶校验和CRC校验。

分组丢失,分组失序,分组重复

 

 分组丢失,分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层

比特差错出现在数据链路层

可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输。

可靠传输实现比较复杂,开销比较大,是否使用可靠传输取决于应用需求。

实现可靠传输的三种机制:停止-等待协议SW,回退N帧协议GBN,选择重传协议

这三种可靠传输实现机制的基本原理并不仅限于数据链路层,可以应用到计算机网络体系结构的各层协议中。

停止等待协议:

数组分组丢失:超时重传 

 

确认分组丢失,数据 分组重复:数据分组编号 

确认分组迟到导致确认重复的问题:给确认分组编号

停止-等待协议每发送一个分组,就停止发送并等待接收方的确认分组,当收到确认分组后,才能发送下一个分组。所以,每发一个分组,就需要至少等待收发双方之间的往返时间。

当往返时间较大,信道利用率很低。

为了提高信道利用率,可以使用流失线传输

回退N帧协议: 

无差错发送分组 

 使用回退N帧协议的接收方,可以采用累计确认的方式,即接收方不一定要对收到的数据分组逐个发送确认。

 有差错的情况:

 可见,当通信线路不好时,回退N帧协议的通道利用率并不比停止-等待协议高。

当发送窗口>2^n-1时,会出现接受方无法分辨新旧分组的问题

选择重传协议:

 

过程 :

猜你喜欢

转载自blog.csdn.net/m0_52043808/article/details/124250940