第三章new

第三章 数据链路层 数据链路层于物理层之上,属于低层。 物理层传输的是比特流,单位是比特。 数据链路层传输单位是帧,一帧一帧地处理。 其工作是从物理层获取比特流,进行封装成 帧、并对帧进行一系列,如透明传输、差错控制 等处理,从而递交给上一层(网络层),同 时也对网络层下传的数据进行处理,进而传 给物理层。 数据链路层的信道 数据链路层使用的信道主要有以下两种类型: 点对点信道:这种信道使用一对一的点对点通信方式。 广播信道:这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送 。 数据链路层的简单模型 数据链路层的简单模型 数据链路和帧 链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。 一条链路只是一条通路的一个组成部分。 数据链路(data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。 现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。 一般的适配器都包括了数据链路层和物理层这两层的功能。 数据链路层像个数字管道 常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。 早期的数据通信协议曾叫作通信规程(procedure)。因此在数据链路层,规程和协议是同义语。 数据链路层具体工作过程 (1) 封装成帧 (2) 透明传输 (3) 差错控制 1. 封装成帧 封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。 首部和尾部的一个重要作用就是进行帧定界。 用控制字符进行帧定界的方法 2.透明传输 解决方法 发送端的数据链路层在数据中出现控制字符 “SOH”或“EOT”,在前面插入一个转义字符 “ESC”(其十六进制编码是 1B)。 字节填充(byte stuffing)或字符填充 (character stuffing)——接收端的数据链路 层在将数据送往网络层之前删除插入的转义 字符。如果转义字符也出现数据当中,那么 应在转义字符前面插入一个转义字符。当接 收端收到连续的两个转义字符时,就删除其 中前面的一个。 字节填充法解决透明传输问题 3.差错检测 在传输过程中可能会产生比特差错:1 可 能会变成 0 而 0 也可能变成 1。 在一段时间内,传输错误的比特占所传输 比特总数的比率称为误码率 BER (Bit Error Rate)。 误码率与信噪比有很大的关系。 为了保证数据传输的可靠性,在计算机网 络传输数据时,必须采用各种差错检测措 施。 差错控制 有奇偶检验码、循环冗余码、海明码等 要求:加冗余码少,检错率高。 分类: 纠错型:对数据进行检验并纠正其中错误部 分,用于实时控制系统。 检错型:对数据进行检验,发现错误要求对方 进行重发,用于现在大部分网络系统中。 循环冗余检验 在数据链路层传送的帧中,广泛使用了循环 冗余检验 CRC 的检错技术。 用二进制的模 2 运算进行 2n 乘 M 的运算,这 相当于在 M 后面添加 n 个 0。 得到的 (k + n) bit 的数除以事先选定好的长 度为 (n + 1) bit 的数 P,得出商是 Q 而余数 是 R,余数 R 比除数 P 至少要少1 个比特。 冗余码的计算举例 现在 k = 6, M = 101001。 设 n = 3, 除数 P = 1101, 被除数是 2nM = 101001000。 模 2 运算的结果是:商 Q = 110101, 余数 R = 001。 把余数 R 作为冗余码添加在数据 M 的后面发送出去。发送的数据是:2nM + R 即:101001001,共 (k + n) 位。 检测出差错 只要得出的余数 R 不为 0,就表示检测到 了差错。 但这种检测方法并不能确定究竟是哪一个或 哪几个比特出现了差错。 一旦检测出差错,就丢弃这个出现差错的 帧。需要经过严格的挑选,并使用位数足够多 的除数,那么出现检测不到的差错的概率就很 小很小。 循环冗余检验算式 收到后的检验运算 CRC要求掌握 给予需传送数据M与P,列算式,在发送码后加正确的检验码 给予收到数据M与P,列算式,得出收到码是否正确 实用的 CRC 检验器都是用硬件完成的。而且生成多项式较长,P69 CRC 检验器能够自动丢弃检测到的出错帧。因此所谓的“丢弃出错帧”,对上层软件或用户来说都是感觉不到的。 发送端对出错的数据帧

文档评论(0)

1亿VIP精品文档

相关文档