版权声明:转载请附上博客地址 https://blog.csdn.net/weixin_38134491/article/details/84648569
数据链路层的两个主要功能是数据链路控制和介质访问控制,数据链路控制是处理两个临近节点之间通信,
data link control 的功能包括成帧、流量控制、差错控制,以及能提供帧在节点之间流畅且可靠传输的软件实现协议。
数据链路控制是用协议来控制的,每个协议由一组软件实现,并由在数据链路层进行数据交换涉及的两个节点来运行
其中5个重要协议如下:
- 两个用于无噪声通道
- 三个用于有噪声通道
- 再讲一个面向字节的协议,点对点协议PPP
成帧:
- 物理层的数据传递是以信号的形式从源端传输到目的端,物理层提供位同步以保证发送方和接收方能使用相同的位周期和时序
- 数据链路层将位组合成帧,使帧与帧之间可识别
数据链路层中通过添加发送方和接收方地址,成帧framing 将一条从源端到目的端的报文分离开来,或者将到不同目的端的报文分离开,目的地址定义了分组要去的地方,而发送地址帮助接收方确认接收
成帧种类
- 固定长度成帧 Fixed-size Framing :不需要定义帧的边界,长度本身可以用作分隔符,例子:ATM广域网
- 可变长度成帧 Variable-size Framing :需要规定一个帧的结束和下一个帧的开始
这里我们讲可变长度成帧的两种方法
- 面向字符的方式 character-oriented protocol
- 面向位的方式 bit-oriented protocol
面向字符协议
头部通常携带源端地址和目的端地址以及其他控制信息,而尾部携带检错和纠错冗余位,也是8位的倍数,
为了将每个帧区别开,我们又在每个帧的头部之前和尾部之后又加了标记flag,长度为一个字节,也就是8位,表示一个帧的开始与结束,
下图是面向字符协议中的帧结构图:
flag | header | data.... | data.... | 尾部 | flag |
data部分就是可变数量的字符内容
面向位协议
此种情况,帧的数据段是一个位的序列,将由上层翻译成文本、图片、音频、视频等等,为了将头部和尾部分开我们要用
01111110标记的0位分隔符放在帧的前后,如下图就是面向位协议中的帧结构:
01111110 | header | 011101010......0010101010101 | tailer | 011111110 |
中间的数据部分就是 可变数量的位
Reference:《Encryptography and Networking Security》6th William Stalling