计算机网络学习8:封装成帧、差错检测

简介: 接收方的数据层如何从物理层交付的比特流中提取出一个个的帧呢?帧头和帧尾的作用之一就是 帧定界。

封装成帧


0f7acbc5a3714ffa62a5837433834f86_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_20,color_FFFFFF,t_70,g_se,x_16.png

接收方的数据层如何从物理层交付的比特流中提取出一个个的帧呢?

7251d827bec2ebdfb0becdf9419c2d55_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_20,color_FFFFFF,t_70,g_se,x_16.png

帧头和帧尾的作用之一就是 帧定界。

87fcea9db42f963f2d4a528cfa3f0487_38a3868da9064d1b9c84a6432e3a25dd.png

例如PPP帧的帧头帧尾中就含有标志了。这样就可以一个个提取了。


但是并不是每一种数据链路层协议的帧都包含有帧定界的标志。

4c63a736f131d871a6c74fa3d527160c_3cf7ea2d80db41fea3a3749f0bb13d98.png

如MAC帧就没有这个格式。


接收方是怎么接受的呢?


物理层会在MAC帧前加上一个前导码。

34da36ba6cc0c2b5ed96ed737c09be31_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_20,color_FFFFFF,t_70,g_se,x_16.png


同时mac帧还规定了 帧间间隔,所以不需要 帧尾的定界符。

e41961737657156dba5249c3c29412fd_4c4c6f5adf10499094619a75066d73b7.png



透明传输


如果在上层交付的协议数据单元中,恰好也包含了这个flag帧头帧尾的特定数值,那么接收方还能正确接受吗?答案是否定的。

642507561a710e8290f7e43ebbd30348_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_14,color_FFFFFF,t_70,g_se,x_16.png

接受方在接收到第一个flag帧定界标志时,认为是帧的开始。


当再次接收到时候,会误认帧结束接收了。如果数据链路层不采取措施来避免接收方对 帧 是否结束的 误判,就不能称为 透明传输。 也就是 数据链路层对上层交付的数据单元有 限制。其内容不能包含定界符。那么这样的数据链路层没有任何意义了。


解决方案:

在发送前,对数据进行扫描,如果有flag定界符,那么就会在前面插入一个esc转义字符。

e769717af4e2c37f4fce5c7c4c4191ed_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_13,color_FFFFFF,t_70,g_se,x_16.png

这样就可以避免问题了,遇到esc之后,就会知道后面是数据而不是定界符了。剔除转义字符后,就可以自动处理了。


那么如果上层交付给数据单元的过程中,本身就含有esc这个数据那么又该怎么办呢。

07adf604d934e6f92c40f1e2366436bb_0d5e657c3dc54aee9d98fb5114b1d029.png

方法仍然是进行扫描数据,然后加上一个esc。


esc长度为一个字节,而不是esc这三个字符。10进制值为27。

4f4bf308487ad57b75be4f0da0f34fed_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_20,color_FFFFFF,t_70,g_se,x_16.png

例如该方法是连续的五个1的比特后面加一个0即可,接收验证的时候直接剔除就可以了,

8876453414ef11263b55143a3db30272_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_20,color_FFFFFF,t_70,g_se,x_16.png

14eb1f95ea1e67047ff0a5a063153691_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_20,color_FFFFFF,t_70,g_se,x_16.png


差错检测


传输过程可能会出现错误,一段时间内,传输错误的比特占传输比特总数的比率称为误码率BER(bit error rate)。

8b9a790ccf1f6e7870b2cbed303f91d5_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_20,color_FFFFFF,t_70,g_se,x_16.png

使用差错检测码,可以检测是否出现了差错。

be83ac1cea0e10711c909a1115258e9c_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_20,color_FFFFFF,t_70,g_se,x_16.png

循环冗余检验 CRC


527cfa1df49829068c8f057289a99d0b_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_20,color_FFFFFF,t_70,g_se,x_16.png

25d4c8f296952ab67edf9c183ffc1683_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_20,color_FFFFFF,t_70,g_se,x_16.png

需要注意的是:算法要求生成多项式必须包含最低次项,也就是每一项的最后都是1。

c227329a691be69872b3c684fe4b25fd_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_20,color_FFFFFF,t_70,g_se,x_16.png

05567f78184ddbbbc70a6a2c1df4dae3_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_20,color_FFFFFF,t_70,g_se,x_16.png


检错码只能检测出错,但是不能定位错误,不可以纠正错误。

dee58a605bf94cbf7a3e7d7c62ad22df_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rSy55qE5a2m5Lmg56yU6K6w,size_20,color_FFFFFF,t_70,g_se,x_16.png


相关文章
|
1月前
|
监控 网络协议 Linux
网络学习
网络学习
132 68
|
4天前
|
网络协议 网络架构
网络协议介绍与学习
网络协议介绍与学习
14 4
|
6天前
|
机器学习/深度学习 数据采集 网络安全
使用Python实现深度学习模型:智能网络安全威胁检测
使用Python实现深度学习模型:智能网络安全威胁检测
26 5
|
4天前
|
网络协议 网络安全 数据安全/隐私保护
网络基础知识学习
如果你打算深入学习网络技术,建议从上述基础知识入手,并逐渐扩展到更高级的主题,如网络编程、网络安全、网络管理等。同时,实践是学习网络技术的关键,可以通过搭建自己的小型网络环境来进行实验和探索。
9 2
|
13天前
|
机器学习/深度学习 安全 网络安全
利用机器学习优化网络安全威胁检测
【9月更文挑战第20天】在数字时代,网络安全成为企业和个人面临的重大挑战。传统的安全措施往往无法有效应对日益复杂的网络攻击手段。本文将探讨如何通过机器学习技术来提升威胁检测的效率和准确性,旨在为读者提供一种创新的视角,以理解和实施机器学习在网络安全中的应用,从而更好地保护数据和系统免受侵害。
|
1月前
|
网络协议 安全 网络安全
网络基础知识学习
【9月更文挑战第1天】
47 0
|
2月前
|
小程序 数据安全/隐私保护
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
在 `src/http` 目录下创建 `request.ts` 文件,并配置 Taro 的网络请求方法 `Taro.request`,支持多种 HTTP 方法并处理数据加密。
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
|
2月前
|
计算机视觉
在yolov5项目中如何使用自带摄像机不用网络摄像机进行实时检测?
这篇文章讨论了在yolov5项目中,如何避免使用网络摄像机而改用自带的本地摄像机进行实时目标检测,并提供了解决摄像头打开错误的具体步骤和代码示例。
在yolov5项目中如何使用自带摄像机不用网络摄像机进行实时检测?
|
1月前
|
安全 Linux 网络安全
网络安全学习
【9月更文挑战第1天】
52 0
|
2月前
|
机器学习/深度学习 运维 监控
下一篇
无影云桌面