文章目录
前言
上篇文章中,对于计算机网络的物理层相关内容进行了整理和总结,今天开始数据链路层的学习,还请多多支持!
一、概述
1. 基本概念
链路(Link):从一个节点到相邻节点的一段物理线路,中间没有任何其他的交换节点
数据链路(Data Link):把实现通信协议的硬件和软件加到链路上,就构成了数据链路
数据链路层以帧为单位传输和处理数据
2. 数据链路层的三个主要问题
封装成帧:数据链路层给网络层交付的协议数据单元添加帧头和帧尾
差错检测:接收方主机收到帧后通过检错码和检错算法判断帧在传输过程中是否产生误码
可靠传输:可以简单理解为发送方发送什么,接收方就接收到什么
二、封装成帧
1. 概念
数据链路层对上层交付的协议数据单元添加帧头和帧尾使之成为一个帧
2. 帧头、帧尾的作用
1. 包含重要的控制信息
2. 帧定界
PPP帧:帧头、帧尾各有一字节的标志字段
接收方主机的数据链路层依据帧定界标志,从物理层交付的比特流中提取出一个个帧
BUT!并不是每一个数据链路层协议的帧中都有帧定界标志!
例如:以太网V2的MAC帧中:帧头和帧尾中并没有帧定界标志
接收方如何提取出以太网帧呢???
发送方数据链路层封装好以太网帧后交付给物理层,物理层收到后,会在以太网帧前添加8字节的前导码
前导码:
前7个字节为前同步码 —— 作用:是接受方的时钟同步
最后一个字节为帧开始定界符 —— 表名其后面紧跟的为以太网MAC帧
以太网还规定了帧间间隔为96比特时间 ——> MAC帧不需要帧结束定界符
3. 透明传输
数据链路层对上层交付的传输数据没有限制,就好像数据链路层不存在一样
帧定界标志也是一个特殊的数值
如果上层交付的协议数据单元中,也包括这个数值
接收方还能正确接收这个帧么?答案明显是错误的,接收方会对帧是否结束产生误判,这种情况下就不能称为透明传输!
数据链路层的处理办法:
在发送帧之前,对帧的数据部分进行扫描,每发现一个帧定界符,就在前面插入一个转义字符
接收方识别到转义字符时,就可以识别之后的一个字符为数据,从而剔除转义字符后提取数据
转义字符ESC:特殊的控制字符,长度为一字节,十进制数值为27
同样!!转义字符也是特殊的数值,如果数据中也存在转义字符的数值呢???
处理方法同上,在发送帧之前,对帧的数据部分进行扫描,每发现一个帧定界符和转义字符,就在前面插入一个转义字符
对于面向比特的物理链路 ——> 比特填充法
——> 零比特填充法:在发送帧之前,对帧的数据部分进行扫描,每5个连续的1后插入一个0
——> 接收方接收时剔除0即可
4. 提高效率
为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大一些
最大传输单元MTU(Maximum Transfer Unit):考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧数据部分的长度上限
三、差错检测
1. 概念
- 比特差错:比特在传输过程中可能产生产错(0变为1,1变为0)
- 误码率BER(Bit Error Rate):在一段时间内,传输错误的比特占传输的比特总数的比率,BER = 错误的比特 / 总的比特
- 差错检测:使用差错检测码来检测数据在传输过程中是否产生了比特差错
- 差错检测码:
其中FCS字段就是帧检验序列,让接收方的数据链路层检查帧在传输过程中是否产生了差错