前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算机网络学习8:封装成帧、差错检测

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

作者头像
程序员洲洲
发布2024-06-07 09:17:31
800
发布2024-06-07 09:17:31
举报
文章被收录于专栏:项目文章

封装成帧

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

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

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

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

如MAC帧就没有这个格式。

接收方是怎么接受的呢?

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

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

透明传输

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

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

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

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

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

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

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

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

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

差错检测

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

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

循环冗余检验 CRC

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 封装成帧
  • 透明传输
  • 差错检测
  • 循环冗余检验 CRC
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档