0
点赞
收藏
分享

微信扫一扫

docker&docker-copose_限制容器cpu和内存

目录

一.数据链路层的基本概念

二.数据链路层的功能概述

功能一:为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。

功能二:链路管理,即连接的建立、维持、释放(用于面向连接的服务)。

功能三:组帧

透明传输:

1.字符计数法

2.字符(节)填充法

3.零比特填充法

4.违规编码法

功能四:差错控制(帧错/位错)

差错从何而来?

差错种类有哪些?

接收方如何检测发送方发来的帧是否错误,甚至纠正这一错误呢?

检错编码:

纠错编码:

功能五:流量控制。


一.数据链路层的基本概念

结点 :主机、路由器

链路 :网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路

数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。

二.数据链路层的功能概述

数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。

数据链路的功能如下:

功能一:为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。

无确认无连接服务:通常用于实时通信或者是误码率比较低的通信信道,也就是源主机在发送数据时,不需要事先与目的主机建立好链路连接(逻辑上的连接),而且目的主机收到数据也不需要返回确认,如果帧丢失了,数据链路层不负责重发,而是直接交给上一层处理(网络层)

有确认无连接服务:与无确认无连接的服务相同,事先不需要建立连接,但是目的主机在收到数据后需要发回确认,若源主机在规定时间(超时计时器计算是否超时)内没有收到确认帧,那么就把没有收到确认的帧重新发送一次(超时重传),若收到确认帧,则可以继续发送下一个数据帧。这样可以提高数据链路的可靠性。这种服务比较适合于误码率比较高的通信信道,例如无线通信

有确认面向连接服务:针对这种服务,需要事先建立好连接,同时接收端接收到数据后,需要返回确认帧,发送端收到确认帧,才可以继续发送下一个数据帧。

功能二:链路管理,即连接的建立、维持、释放(用于面向连接的服务)。
功能三:组帧

封装成帧就是将网络层传输过来的IP数据报的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。

首部和尾部含有许多的控制信息,包括差错控制,流量控制等相关信息,其中的帧定界符号:就是用来确定帧的界限的

如下图所示,帧的发送就是从帧首部开始到帧尾部结束发送

而接收方应当能从接收到的二进制比特流中区分出的起始和终止,也就是帧同步

帧的数据部分能取的最大值称为最大传送单元MTU,不同的协议MTU长度不同

透明传输:

可以采用以下四种方法实现透明传输:

总结:

由于字节计数法中Count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充实现上的复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充违规编码法

功能四:差错控制(帧错/位错)
差错从何而来?
差错种类有哪些?

所以,对通信质量好且有线的传输链路,采用无确认无连接服务,对通信质量差的无线传输链路,采用有确认无连接服务和有确认面向连接服务,即:

发送方发现有以上帧错误,则不会返回确认帧,接收端在一段时间没有收到确认帧,就会重新发送没有收到确认的帧(确认重传机制)

接收方如何检测发送方发来的帧是否错误,甚至纠正这一错误呢?

这就要提到数据链路层的差错控制(位错):

首先需要先学习一个概念:冗余码

检错编码:

•奇偶校验码

对于奇偶校验而言,有n-1位信息元以及1位校验元(冗余码)

奇校验码:"1"的个数为奇数,偶校验码:"1"的个数为偶数,1的个数是奇数还是偶数就是发送方与接收方共识的规则,接收方收到数据后,就可以检验数据是否符合这一规则,如果符合,就接收

但是也存在一个问题,若采用偶校验码,发送方发送11101011(偶数个1),接收方接收10001011,同样是偶数个1,但是其实数据是不对的

例题:

奇偶校验码特点:只能检查出奇数个比特错误(自己举例子就知道,例如2个比特错误00,变成11,那么"1"的个数是偶是奇这一性质不会改变),检错能力为50%(奇数个比特检错得出来,偶数个比特检测不出来)。

•循环冗余码CRC

循环冗余码的运算过程如下:

具体而言,发送方的操作:

① 准备待传有效数据

每个组都加上冗余码构成帧再发送,继续往下看

② 双方商定一个除数(生成多项式),位数为r+1(冗余位+1),题目会给:

③ FCS帧检验序列计算式:将数据后面添加r个0(阶数个0),上面的多项式就是添加3个0,接着除多项式(1101),得到r位的FCS,即3位的FCS

④ 将得到的r位FCS,补到实际要发的数的后面,就能得到真正要发的数

接收方的操作:

① 接收方检验:

将发送方发来的数据除以生成多项式,如果余数为0,则认为正确接收,如果余数不为0则丢弃

在数据链路层仅仅使用循环冗余检验CRC差错检测技术,只能做到对帧的无差错接收,即“凡是接收端数据链路层接受的帧,我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错”(即"凡是接收端数据链路层接收的帧均无差错")。接收端丢弃的帧虽然曾收到了,但是最终还是因为有差错被丢弃。

而没有做到"可靠传输"(数据链路层发送端发送什么,接收端就收到什么),因为某些错误的帧会被接收端直接丢弃,而没有进一步处理。

纠错编码:

•海明码

对于奇偶校验码而言,只能检测奇位出错,检查不出偶数位出错,并且检错后,不能纠错。但是对于海明码而言,他能够发现错误,并且能够找到错误的位置进行纠错。

如何纠错呢?海明码的工作流程如下:

总结:海明码能发现2个bit位错,但是只能纠正1个bit位错

注:

功能五:流量控制。

对于流量控制的讲解,在之前的这篇博客已经总结:http://t.csdnimg.cn/DuA0c

举报

相关推荐

0 条评论