链路:连接两个相邻节点的物理线路(有线/无线)
数据链路:物理的链路加上必要的通信协议。
数据链路层的三个基本问题
数据链路层有许多种协议,有三个基本问题是这些协议都要解决的:封装成帧,透明传输,差错检测
1. 封装成帧
封装成帧是指:为数据部分加上首部和尾部。首部和尾部一般是用于帧定界的。
MTU:帧的数据部分最大长度
2. 透明传输
透明传输是指:用于标记帧开始和结束的字符应该不同于数据所用的字符
考虑以下两种情形:
- 如果传送的内容是字符,那么可以考虑使用字符编码不会用到的二进制串作为帧定界符号;
- 如果传送的内容是二进制数据(图像数据),那么只能通过编码的方式来实现透明传输。
解决方法是:
- 字符填充(字节填充):在数据中使用转义字符。发送端的数据链路层往数据中添加转义字符;接收端的数据链路层删除转义字符,再将结果交给网络层。
3. 差错检测
数据链路层的差错检测仅处理比特差错。
无差错:在发生比特差错的情况下,差错检测仍然通过的概率是很小的。因此,差错检测通过就意味着:收到的帧在传输过程中很大概率没有发生比特差错。
帧检验序列FCS:为了进行差错检测,而在帧后面添加的二进制串。
可靠传输:是指没有发生任何传输插座——既没有发生比特差错,也没有发生帧差错 帧的差错有:帧丢失,重复,失序
可靠传输服务:数据链路层可以提供可靠的传输服务,也可以提供不可靠的传输服务。一般来说:
- 当通信质量较好时,选择无确认,不重传的传输服务,可靠的服务由上层来保证。这样做可以有效地提高通信效率。
- 当通信质量不好时,选择有确认,需要重传的机制,此时数据链路层对上层提供的是可靠的服务。
同步传输与异步传输
同步传输
传输的单位是帧,收发双方的时钟是同步的
异步传输
传输的单位是字符,不要求收发双方时钟同步
字符的前后有启动位和停止位,用来告知接收方