《数据通信与网络》笔记--数据链路层的成帧
数据链路层需要将位组合成帧,并使帧之间是可识别的。
在数据链路层中,通过添加发送放地址和接收方地址,成帧将一条从源端到目的端的报文分离开来,或者将到不同目的端的报文分离开来。目的方地址定义了分组要去的地方,而发送方地址帮助接收方确认接收。
帧可以分为固定长度成帧和可变长度成帧。
1.固定长度成帧
不需要定义帧的边界,长度本身可以用作分隔符,这种成帧类型的一个例子就是ATM广域网,它使用称为信元的固定长度帧。
2.可变长度成帧
可变长度成帧通过在帧的开头和结尾添加标记来一个帧与下一个帧分离开来,主要有面向字符的方式和面向位的方式。
2.1面向字符协议
面向字符协议通过在帧的开头和结尾增加8位(1个字节)的标记,编辑由与协议相关的特殊字符组合而成,标明一个帧的开始和结束。下面说明了在面向字符协议中帧的格式。
那如果数据内容中包含了和标记一样的字节,怎么办呢?那就要使用转移字符(ESC character),这个转移字符可以自己定义。下图就是一个包含了ESC字符的帧的处理过程。
那如果数据内容里本身要包含ESC字符,怎么办呢?请看下图:
应该很清楚,不用解释了吧。
2.2面向位协议
面向位的协议其实和面向字符协议原理差不多,只是标记可能不再是8位(1个字符)。而在数据中不再使用ESC字符,如果数据中出现和标记一样的位,则修改数据的内容,使其和标记不一致,请看下图,图中假设帧的开始和结尾标记为01111110
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)