数据链路层的定义
对数据链路层有对上的网络层接口. 对下提供物理层的接口.
定义合适的传输差错率
对传输流进行管理, 以免快速的传输的数据被淹没. 比如发送端发送信号太快, 接受方接受速度较慢, 此时数据链路层就需要提供一定的功能解决这个问题
物理层上传输的基本单元是比特, 将其变成一个连续的信号或者信号传输. 在链路层将数据转换为一块一块的进行传输, 每一块叫做一个数据帧, 传输的基本单元叫做数据帧
数据链路层功能
将网络层数据 加上一定的校验, 使得数据成为一个可靠的数据
相连
两台计算机之间有物理介质连接
物理链路
两个节点之间有一个真正的物理节点, 这边有一个物理层, 那边有一个物理层, 这边的二进制比特串可以传到那边的物理层.
数据链路
通过数据链路协议实现数据的可靠传输, 两个数据链路层之间就形成了一个数据链路, 并且数据的传输有正确性保证.
数据链路层服务
1. 无确认无连接
在数据传输前不用建立数据链路收到数据帧不需要给对方一个确认消息
2. 有确认无连接
在数据发送前不需要建立连接, 即不需要建立数据链路, 但是对方收到一个数据时必须给发送方发送一个确认消息. 适用于信号传输速度延时较长的
3. 有确认有连接
在数据发送之前必须向对方主机打招呼, 必须建立一条完整的数据链路, 当对方接收到数据后, 也必须向发送方发送一个确认消息, 例如电话
数据的可靠传递
1. 将传输信息合成一个帧
(1)字符计数法
每一个帧的首部为帧的长度, 后面为帧的内容. 比如在发送一个帧为 1 2 3 4 时, 此时在帧的首部加上一个 5, 此时接收方接受到这个帧是 5 1 2 3 4, 此时接受方就认为收到的帧的长度是5, 它就再往后接受四个字节的数据帧
这种方法数据帧的长度一旦被误读, 则会产生不可收拾的错误
(2)带字符填充的首尾界填充
在发送一个数据帧的时候, 给数据帧的首部和尾部加上一个特殊的字符 7E 表示帧的结束和开始, 数据帧的内容用是 ASCII 可显示字符, 但是当数据帧中本来就有一个数据对应的字符是 7E 的时候, 此时传输数据帧的时候就在数据 7E 前加上一个 1B, 当接受方接受数据的时候发现数据帧中有一个 1B 的字符, 此时再向后检测, 此时发现后面是一个 7E, 这是就将 1B 去除, 这样就达到了数据的准确收发.
(3)带位填充的首尾标志法
用 01111110 作为帧头和帧为的标志, 在发送的时候如果帧的内容是中有 6 个连续的 1 的时候, 此时当传输到第 6 个 1 的时候就在第五个1后面插入一个 0, 此时就不会出现数据帧的错误,接收端在接受的时候对整个帧进行检测, 如果发现了 5 个 1 后面的第六个二进制数是一个 0, 此时就说明它是在发送端发送的时候加上去的, 此时接受方就将这个 0 去掉, 如果对帧的二进制在进行从头到尾的扫描时, 发现了有 6 个连续的 1 , 此时就说明这是真的结束标识, 这样就完成了一个帧的准且发送和接受.
(4)物理层编码违例法
用连续的高电平或者连续的低电平表示真的开始和结束