1.数据链路层:封装成帧
笔记来源:
湖科大教书匠:封装成帧
声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考
封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧
帧头和帧尾中包含重要的控制信息
接收方的数据链路层如何从物理层交付的比特流中提取出一个个的帧?
帧头和帧尾的作用之一就是帧定界
不是数据链路层中的每个协议都包含帧定界标志,例如以太网V2的MAC帧就没有帧定界标志,而存在于物理层前导码中。
帧开始定界符+帧间间隔可以确定比特流中帧的范围
透明传输
透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样
面向字节的物理链路使用字节填充(或字符填充)的方法实现透明传输
如果数据部分恰好也存在和帧定界标志一样的特定数值,则接收方在接收到该数据的中间部分时误判是帧定界符。
发送帧之前,对帧的数据部分扫描,若遇到和帧定界标志一样的特定数值就要在前面加入ESC(转义字符)
面向比特的物理链路使用比特填充的方法实现透明传输
每5个连续1后填充0,使得数据部分与帧定界标志一样的特定值变得不同,确保了帧定界标志在帧中的唯一性。
接收方在接收到帧数据部分中连续5个1后将比特0剔除,以还原数据
为了提高帧的传输效率,应当使得帧的数据部分长度尽可能大。但考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU