0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

数据链路层的三个基本问题

工程师 来源:未知 作者:姚远香 2019-02-27 15:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、封装成帧

封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从比特流中识别帧的开始和结束。

数据链路层的三个基本问题

首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。此外,首部和尾部还包括许多必要的控制信息。 为了提高帧的传输效率,应当使帧的数据部分长度尽量大于首部和尾部的长度。最大传输单元MTU:帧数据部分长度上限。

当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。ASCII码是7位编码,一共可以组合成128个不同的ASCII码,其中可打印的有95个,而不可打印的控制字符有33个。(可打印的字符就是可以在键盘上输入的字符,我们使用的标准键盘有47个键可输入94个字符,包括使用shift键,加上空格键,一共可以输入95个可打印字符)

控制字符SOH放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT表示帧的结束。注意:SOH和EOT都只是控制字符的名称,他们的十六进制编码分别是01(二进制是00000001)和04(二进制是00000100)。SOH,EOT 并不是S O H E O T这几个字符,只是名字而已。当传输中出现差错,帧定界符的作用更加明显。假设未发送完一个帧而发生故障,接收端就知道收到的数据是不完整的帧(只有首部),必须丢弃。

二、透明传输

当传送的帧是用文本文件组成的帧时(文本文件中的字都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。

数据链路层的三个基本问题

但当数据部分是非ASCII码的文本文件时(如二进制代码的计算机程序或者图像等),情况就不同了。如果数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样,数据链路层就好错误地“找到帧的边界”,把部分帧收下(误以为是个完整的帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符SOH)。这种情况就不是透明传输,因为当遇到书中碰巧出现字符“EOT”时就传不过去了,而其后面的数据因找不到“SOH”被接收端当做无效帧而丢弃。但实际上数据中出现的字符“EOT”并非控制字符而仅仅是二进制数据00000100 。

为了解决透明传输问题,字节填充法或字符填充:在控制字符SOH、EOT的前面插入一个转义字符ESC(其十六进制编码是1B,二进制是00011011)。而接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。

三、差错检测

现实的通信链路都不会是理想的。传输过程中,1可能变成0, 0 可能变成1 。这就叫比特差错——误码率。 误码率和信噪比有很大的关系。因此,在计算机网络传输数据时,必须采用各种差错控制技术。目前在数据链路层广泛使用了循环冗余检验(CRC)的检错技术。

在数据链路层的CRC检验都是用硬件完成的,处理很迅速,因此不会延误数据的传输。为什么数据链路层要以帧为单位来传送数据呢?因为如果不以帧为单位,就无法加入冗余码来进行差错检验。传输差错分为两类:一类就是前面所说的最基本的比特差错。第二类:收到的帧出现了帧丢失、帧重复和帧失序。(停止等待协议,ARQ)。数据链路层并不需要给网络层提供“可靠传输”的服务。过去OSI的观点是:必须让数据链路层向上提供可靠传输。因此在CRC的基础上,增加了帧编号、确认和重传机制。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据链路层
    +关注

    关注

    0

    文章

    63

    浏览量

    12351
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    IO-Link规范解读(五):数据链路层解析

    前言 本篇就来讲讲IO-Link的数据链路层。 01 链路层总览 数据链路层(Data Link Layers)在整个IO-Link协议栈起到承上启下的作用,通过物理链路在主从站之间传递 消息,其
    的头像 发表于 10-20 18:08 3891次阅读
    IO-Link规范解读(五):<b class='flag-5'>数据链路层</b>解析

    nvme IP开发之PCIe上

    ,获取其它设备的响应。 PCIe层次结构 PCIe 总线是一种分层协议总线,采用数据包进行数据传输。数据包在收发过程中需要经过事务层、数据链路层和物理层
    发表于 05-17 14:54

    半导体制造过程中的三个主要阶段

    前段工艺(Front-End)、中段工艺(Middle-End)和后段工艺(Back-End)是半导体制造过程中的三个主要阶段,它们在制造过程中扮演着不同的角色。
    的头像 发表于 03-28 09:47 5671次阅读
    半导体制造过程中的<b class='flag-5'>三个</b>主要阶段

    如何使用ZPS-CANFD观察CAN数据链路层的工作过程

    CAN总线在数据链路层中的应用是其通信协议中的关键部分、它负责在物理层之上实现数据的可靠传输。致远第二代CAN总线分析仪ZPS-CANFD,除了可以完成CAN、CANFD总线物理层的一致性测试,同时
    的头像 发表于 03-18 11:38 752次阅读
    如何使用ZPS-CANFD观察CAN<b class='flag-5'>数据链路层</b>的工作过程

    如何检测极管的三个

    可以用万用表来初步确定极管的好坏及类型 (NPN 型还是 PNP 型 ),并辨别出e(发射极)、b(基极)、c(集电极)三个电极。
    发表于 03-08 16:40

    如何区分场效应管mos管三个引脚

    场效应管mos管三个引脚怎么区分
    发表于 03-07 09:20 0次下载

    如何在三个三个或更多现场可编程门阵列* (FPGA) 设备上同时运行OpenVINO™?

    无法同时使用三个FPGA卡在同一模型上进行推理
    发表于 03-06 07:15

    Linux系统中最重要的三个命令

    Linux剑客是Linux系统中最重要的三个命令,它们以其强大的功能和广泛的应用场景而闻名。这三个工具的组合使用几乎可以完美应对Shell中的数据分析场景,因此被统称为Linux
    的头像 发表于 03-03 10:37 797次阅读

    使用DDS生成三个信号并在Vivado中实现低通滤波器

    本文使用 DDS 生成三个信号,并在 Vivado 中实现低通滤波器。低通滤波器将滤除相关信号。
    的头像 发表于 03-01 14:31 2442次阅读
    使用DDS生成<b class='flag-5'>三个</b>信号并在Vivado中实现低通滤波器

    工业以太网中的数据链路层与工业交换机的关键作用

    工业以太网成为了支撑工业控制和通信系统的重要组成部分。数据链路层是工业以太网中的关键层,它为网络中的数据传输提供了基本保障,而数据链路层不仅关乎设备间的通信质量,还直接影响到网络的整体性能。
    的头像 发表于 02-28 16:01 980次阅读
    工业以太网中的<b class='flag-5'>数据链路层</b>与工业交换机的关键作用

    接收方数据解封装解析

    和终止会话 传输层----建立、维护和取消一次端到端的数据传输过程。控制传输节奏的快慢,调整数据的排序等等 网络层----定义逻辑地址;实现数据从源到目的地的转发 --Packet(包) 数据
    的头像 发表于 02-14 17:51 810次阅读
    接收方<b class='flag-5'>数据</b>解封装解析

    ADS828的GND引脚有三个,这三个引脚的接地是哪个接数字地,哪个接模拟地?

    在贵公司的这款AD转换芯片ADS828的GND引脚有三个(1、16、26)想咨询一下这三个引脚的接地是哪个接数字地,哪个接模拟地,还是不用考虑这方面;还有就是在输出偏置电压的时候,在为2.5V的时候,是用CM输出端好,还是用REFT和REFB电阻分压好?
    发表于 02-14 08:27

    请问ads8556使用三个串口通讯时DSP模块怎么配置?

    你好,我在使用ads8556时,要使用三个通道的数据线来传递数据,使用的是28335DSP,使用其中两SPI和一McBSP模拟的SPI
    发表于 02-11 07:53

    STM32读取ADS1274的数据,为什么只能读到三个通道的?

    我用的是STM32读取ADS1274的数据, CLK=5MHz,周期200ns SCLK脉冲周期大概是800ns 将SYNC接到了3.3V, 目前可以读到数据,只是只能读到三个通道的,第四
    发表于 01-08 07:51

    什么是ptp协议及其应用

    点对点协议(Point-to-Point Protocol,简称PPP)是一种数据链路层通信协议,用于在两网络实体之间建立、配置和测试数据链路连接。PPP协议广泛应用于各种场景,包括拨号上网、宽带
    的头像 发表于 12-29 09:32 1478次阅读