为什么需要数据链路层
结点:主机、路由器
物理层解决了相邻结点透明传输比特
的问题
物理层没有解决比特传输出现错误的问题:
- 发送端发送比特1,而接收端收到比特0,接收端无法知道接收的是否正确?
- 多个设备连接问题:谁能发送数据?数据发送给谁?谁负责接收和处理?
- 如何知道一组数据即将到来?这组数据何时结束?
比特错误一般为连续比特错误
(外界干扰影响i连续比特传输)离散比特错误不易检测
数据链路层的基本概念
链路:结点间的物理通道
是一条无源的点到点的物理线路段,中间没有任何其他交换结点。一条链路只是一条通路的一个组成部分。
数据链路:是结点间的逻辑通道
除了物理线路以外,还必须有通信协议来控制这些数据的传输。
数据链路=链路+协议
链路中通信双方的信道使用形式不同,会相应有不同的控制协议。
帧:链路层协议数据单元,封装网络层的数据报
数据链路层:负责通过一条链路从一个结点向物理链路直接相连的相邻结点传数据报
数据链路层的三个功能
- 封装成帧
- 透明传输
- 差错检测
数据链路层信道类型
点对点信道
这种信道使用一对一的点对点通信方式,控制协议相对简单
广播信道
使用一对多的广播通信方式,通信过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享协议来协调这些主机的数据发送,控制协议相对复杂
数据链路层不必考虑物理层如何实现比特传输的细节。
封装成帧
封装成帧
就是在一段数据的前后分别添加首部和尾部然后构成了一个帧。确定帧的界限。首部和尾部的一个重要作用就是进行帧定界
当数据是由可打印的ASCLL码
组成的文本文件时,帧定届可以使用特殊的帧定界符
- 控制字符SOH:放在一帧的最前面,表示帧的首部开始
- 控制字符EOT:表示帧的结果
透明传输
有可能出现的问题:
解决方法:
字节填充或字符填充
发送端的数据链路层在数据中出现控制字符SOH
或EOT
的前面插入一个转义字符ESC
接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符ESC
.当接收端收到连续的两个转义字符时,就会删除其中前面的一个。
差错检测
在传输过程中可能会产生比特差错:1可能变成0,0也可能变成1.
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率
循环冗余检验
在数据链路层传送的帧中,广泛使用了循环冗余检验CRC
接收端除以除数P,如果得出的余数为0,接收,余数不为0,丢弃
多项式表示CRC方法