计算机网络学习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


相关文章
|
10月前
|
机器学习/深度学习 算法 数据挖掘
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
285 0
|
11月前
|
JSON 监控 API
在线网络PING接口检测服务器连通状态免费API教程
接口盒子提供免费PING检测API,可测试域名或IP的连通性与响应速度,支持指定地域节点,适用于服务器运维和网络监控。
1859 0
|
9月前
|
JavaScript Java 大数据
基于python的网络课程在线学习交流系统
本研究聚焦网络课程在线学习交流系统,从社会、技术、教育三方面探讨其发展背景与意义。系统借助Java、Spring Boot、MySQL、Vue等技术实现,融合云计算、大数据与人工智能,推动教育公平与教学模式创新,具有重要理论价值与实践意义。
|
11月前
|
监控 算法 安全
基于 C# 基数树算法的网络屏幕监控敏感词检测技术研究
随着数字化办公和网络交互迅猛发展,网络屏幕监控成为信息安全的关键。基数树(Trie Tree)凭借高效的字符串处理能力,在敏感词检测中表现出色。结合C#语言,可构建高时效、高准确率的敏感词识别模块,提升网络安全防护能力。
279 2
|
SQL 数据采集 人工智能
“服务器老被黑?那是你没上AI哨兵!”——聊聊基于AI的网络攻击检测那些事儿
“服务器老被黑?那是你没上AI哨兵!”——聊聊基于AI的网络攻击检测那些事儿
513 12
|
机器学习/深度学习 人工智能 运维
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
546 8
|
12月前
|
机器学习/深度学习 算法 5G
基于DNN深度神经网络的OFDM+QPSK信号检测与误码率matlab仿真
本内容展示了基于深度神经网络(DNN)的OFDM-QPSK信号检测算法在Matlab2022a中的仿真效果。通过构建包含多层全连接层和ReLU激活函数的DNN模型,结合信号预处理与特征提取,实现了复杂通信环境下的高效信号检测。仿真结果对比了传统LS、MMSE方法与DNN方法在不同信噪比(SNR)条件下的误码率(BER)和符号错误率(SER),验证了DNN方法的优越性能。核心程序涵盖了QPSK调制、导频插入、OFDM发射、信道传输及DNN预测等关键步骤,为现代通信系统提供了可靠的技术支持。
214 0
|
机器学习/深度学习 数据采集 算法
基于yolov2和googlenet网络的疲劳驾驶检测算法matlab仿真
本内容展示了基于深度学习的疲劳驾驶检测算法,包括算法运行效果预览(无水印)、Matlab 2022a 软件版本说明、部分核心程序(完整版含中文注释与操作视频)。理论部分详细阐述了疲劳检测原理,通过对比疲劳与正常状态下的特征差异,结合深度学习模型提取驾驶员面部特征变化。具体流程包括数据收集、预处理、模型训练与评估,使用数学公式描述损失函数和推理过程。课题基于 YOLOv2 和 GoogleNet,先用 YOLOv2 定位驾驶员面部区域,再由 GoogleNet 分析特征判断疲劳状态,提供高准确率与鲁棒性的检测方法。
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
627 11
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密

热门文章

最新文章