首页 > 其他分享 >三、数据链路层

三、数据链路层

时间:2022-08-15 22:13:38浏览次数:88  
标签:传输 转义字符 差错 MAC 数据 以太网 链路层

三、数据链路层

三个基本问题:封装成帧、透明传输、差错控制

封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。

透明传输:首部和尾部的一个重要作用就是进行帧定界。此外还包括必要的控制信息。

当数据部分是非 ASCII 码的文本文件时,如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”

 

差错检测:为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。

 

透明传输的解决方式:字节填充 (byte stuffing) 或字符填充 (character stuffing)。

发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是 1B)。

接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。

如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。

 

差错控制在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC 的检错技术。

(1) 若得出的余数 R = 0,则判定这个帧没有差错,就接受 (accept)。

(2) 若余数 R ≠ 0,则判定这个帧有差错,就丢弃。

循环冗余校验码的计算:https://blog.csdn.net/DTRblank/article/details/123526216

仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受 (accept)。

单纯使用 CRC 差错检测技术不能实现“无差错传输”或“可靠传输”。

PS:“无比特差错”与“无传输差错”是不同的概念。

比特差错:帧内部比特位出现错误,可以通过帧的FCS(方法:CRC检验)序列保证无比特差错

传输差错:帧丢失、帧重复、帧失序

 

无差错传输:要做到“无差错传输”(即发送什么就收到什么)就必须再加上帧编号、确认和重传机制。

无差错接受:凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错。

本章介绍的数据链路层协议都不是可靠传输的协议。

 

3.1 以太网帧

最常用的 MAC 帧是以太网 V2 的格式。

⑴.以太网 V2 的 MAC 帧格式

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

⑴无效的 MAC 帧

数据字段的长度与长度字段的值不一致;

帧的长度不是整数个字节;

用收到的帧检验序列 FCS 查出有差错;

数据字段的长度不在 46 ~ 1500 字节之间。

有效的 MAC 帧长度为 64 ~ 1518 字节之间。

对于检查出的无效 MAC 帧就简单地丢弃。以太网不负责重传丢弃的帧。

⑵IEEE 802.3 MAC 帧格式

与以太网 V2 MAC 帧格式相似,区别在于:

IEEE 802.3 规定的 MAC 帧的第三个字段是“长度 / 类型”。

①当这个字段值大于 0x0600 时(相当于十进制的 1536),就表示“类型”。这样的帧和以太网 V2 MAC 帧完全一样。

②当这个字段值小于 0x0600 时才表示“长度”。

当“长度/类型”字段值小于 0x0600 时,数据字段必须装入上面的逻辑链路控制 LLC 子层的 LLC 帧。

现在市场上流行的都是以太网 V2 的 MAC 帧,但大家也常常把它称为 IEEE 802.3 标准的 MAC 帧。

⑶.帧间最小间隔

帧间最小间隔为 9.6 ms,相当于 96 bit 的发送时间。

一个站在检测到总线开始空闲后,还要等待 9.6 ms 才能再次发送数据。

这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。

标签:传输,转义字符,差错,MAC,数据,以太网,链路层
From: https://www.cnblogs.com/tenyuan/p/16589826.html

相关文章