上一篇介绍了物理层的相关知识,今天讲一下数据链路层。
一、数据链路层的简单模型
数据链路层研究的是两个相邻结点之间的数据传输
- 数据链路层的信道类型
- 点对点信道。这种信道使用一对一的点对点通信方式,多用于广域网(远距离)的通信
- 广播信道。这种信道使用一对多的广播通信方式,多用于局域网(短距离)的通信
二、数据链路层的三个基本功能
(一)数据链路和帧
- 链路(link)是从一个结点到另一个结点的物理线路,中间没有任何的交换节点。
一条链路只是一条通路的一个组成部分
- 数据链路(data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
一般来说,实现数据链路层和物理层这两层功能的是网络适配器
- 数据链路层传送的协议数据单元是帧
(二)三个基本问题
封装成帧、透明传输、差错控制
1. 封装成帧
封装成帧就是在一段数据的前后分别添加帧首部和帧尾部,使其构成了一个帧。
思考:为什么在数据链路层上要封装帧尾部?
- 首部和尾部的一个重要作用就是进行帧定界
- 通常使用特殊的编码作为帧定界符
- 当传输的数据是可打印的ASCII码组成的文本文件时,可以使用特殊的控制字符作为帧定界符。如下:
- 当帧的数据部分是二进制文件,文件中正好出现和SOH、EOT一样的编码,这样的数据就无法正确传输给接收结点。
2. 透明传输
如果要求上层交下来的数据不能包含SOH、EOT等编码数据,这样的传输就不是“透明传输”。
透明传输:不管上层交下来的是什么数据,都可以封装在帧中传输给接收结点
- 实现方法:字节填充(字符填充)
- 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(十六进制编码是 1B)。
- 如果转义字符也出现数据当中,