链路层基本问题 : 封装成帧、差错检测、流量控制

一、封装成帧

1、MAC帧

MAC

类型字段 (2个字节):
用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。

数据字段 (46-1500):
正式名称是MAC客户数据字段最小长度64 字节-18字节的首部和尾部 = 数据字段的最小长度。

FCS字段 (4 字节):
当数据字段的长度小于 46 字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的MAC帧长不小于64 字节。
在帧的前面插入的 8 字节中的第一个字段共 7 个字节,是前同步码,用来迅速实现 MAC帧的比特同步。第二个字段是帧开始定界符,表示后面的信息就是MAC帧

2、封装成帧

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

2)、接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。

3)、分组交换的一个重要概念:就是所有在因特网上传送的数据都是以分组(即IP数据报)为传送单位。

4)、网络层的IP数据报传送到数据链路层就成为帧的数据部分。在帧的数据部分的前面和后面分别添加上首部和尾部,就构成了一个完整的帧。
帧长等于数据部分长度加上帧首部和帧尾部的长度,而首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。

5)、首部和尾部还包含许多必要的控制信息,在发送帧时,是从帧首部开始发送。各种数据链路层协议都要对帧首部和帧尾部的格式有明确的规定。为了提高帧的传输效率,应当使帧的数据部分长度尽可能大于首部和尾部的长度。但是,每一种链路层协议都规定了帧的数据部分的长度上限——最大传送单元MTU(Maximum Transfer Unit)。

封装成帧
注:
 当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。
 控制字符SOH(Start Of Header)放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT(End Of Transmission)表示帧的结束。他们的十六进制编码分别是01(二进制是00000001)和04(二进制是00000100)。
 
帧界定
发送错误:
 当数据在传输中出现差错时,帧定界符的作用更加明显。假定发送端在尚未发完一个帧时突然出现故障,中断了发送。但随后很快又恢复正常,于是重新从头开始发送刚才未发送完的帧。由于使用了帧定界符,在接收端就知道前面收到的数据时个不完整的帧(只有首部SOH,没有传输结束符EOT),必须丢弃。而后面收到的数据有明显的帧定界符(SOH和EOT),因此这是一个完整的帧,应当收下。

二、透明传输

透明:某一个实际存在的事物看起来却好像不存在一样。对于数据链路层传输数据,表示无论什么样的比特组合都能通过这个数据链路层,因此数据链路层相对于这些数据来说就是透明的。

1、界定差错

  由于帧的开始和结束的标记是专门指明的控制字符,因此,所传输的数据中的任何8比特的组合一定不允许和用作帧界定符的控制字符的比特编码一样,否则就会出现帧界定错误。
  当传送的帧是用文本文件组成的帧时,其数据部分显然不会出现像SOH和EOT这样的帧界定符,可见不管从键盘上输入什么字符都可以放在这样的帧中传输,这样的传输就叫做透明传输。
  但当数据部分是非ASCII码的文本文件时,情况就不同了。如果某个数据的某个字节的二进制代码出现和SOH、EOT这种控制字符,数据链路层就会误认为“找到帧的边界”,收下部分帧,丢弃剩下的部分数据。
  
透明传输

2、解决办法

  为了解决透明传输问题,就必须使数据中的SOH和EOT不被解释为界定符。
  发送端的数据链路层在数据中出现控制符”SOH”和”EOT”的前面插入一个转义字符”ESC”(其十六进制编码是1B)。而在接收端的数据链路层在将数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充(byte stuffing)或字符填充(character stuffing)。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。
  
填充

三、差错检测

  现实的通信链路不会是理想的。这就是说,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1.这就是比特差错。
  在一段时间内,传输错误的比特占所传输比特总数的比率为误码率BER。为了保证传输的可靠性,目前在数据链路层广泛使用了循环冗余检验CRC,详情见我的另一篇博客。

CRC循环冗余检验

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 数据链路层的三个基本问题必须解决是因为它们是网络通信的基础。这三个问题分别是: 1. 帧的错误检测: 保证数据在传输过程中不会被破坏或丢失。 2. 帧的流量控制: 避免接收方接收能力不足导致网络拥塞。 3. 帧的差错纠正: 保证数据在传输过程中可靠性。 ### 回答2: 数据链路层作为计算机网络中的一层,承担着连接网络上各个节点的任务,保证数据的可靠传输。在实现这一目标的过程中,数据链路层需要解决三个基本问题,原因如下: 1. 封装数据链路层需要将上层传递下来的数据进行封装,将数据分割成适合在物理链路上传输的数据帧。这是必要的,因为物理链路所能容纳的数据大小通常有限,而且不同的物理链路的尺寸也可能不同。封装的过程需要加入头部和尾部的控制信息,以便接收端能够正确地解析并还原数据。 2. 帧同步:帧同步是为了保证传输过程中数据的时序一致性。数据链路层需要确保帧的开始和结束能够被准确地定位,以便接收端能够正确地接收数据。为了实现帧同步,数据链路层通常采用特殊的控制字符作为帧的起始和结束标志。 3. 错误检测与纠正:在数据传输过程中,由于噪声、干扰或其他原因,数据可能会发生错误。为了保证数据的可靠性,数据链路层需要进行错误检测与纠正。常用的错误检测方法包括循环冗余检验(CRC)等。如果检测到数据错误,数据链路层可以通过重传或使用纠错码等技术进行错误纠正,以确保接收端收到的数据是正确的。 综上所述,封装、帧同步和错误检测与纠正是数据链路层必须解决的三个基本问题。这些问题的解决能够保证数据在物理链路上的可靠传输,从而提高网络性能和数据传输的可靠性。 ### 回答3: 数据链路层是OSI模型中的第二层,负责实现数据的可靠传输和错误检测。它解决的三个基本问题是帧封装、访问控制和流量控制。 首先,帧封装是指在数据链路层中将传输的数据划分为若干个帧进行传输。这是必须要解决的问题,因为在实际传输中,数据可能会被分割成多个帧进行传送,帧的封装能够确保每个帧的数据完整,而且能够准确地将不同的帧区分开。 其次,访问控制是指如何让多个设备在共享的传输介质上进行有效的访问和利用。这是必须要解决的问题,因为在局域网中,多个设备可能会共享同一根传输介质,如果没有访问控制机制,多个设备同时发送数据可能会导致冲突和混乱,降低传输效率。 最后,流量控制是指控制源节点向目的节点发送数据的速度,使得目的节点能够接收和处理数据的能力。这是必须要解决的问题,因为在数据链路层中,源节点发送数据的速度可能会快于目的节点的接收和处理能力,导致数据丢失或溢出。流量控制能够确保数据的平稳传输,避免数据拥塞问题的发生。 综上所述,数据链路层解决的三个基本问题都是为了确保数据的可靠传输和高效利用。帧封装保证数据的完整性,访问控制确保共享传输介质的有效利用,流量控制保障数据平稳传输,这些问题的解决对于网络通信的正常进行非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值