数据链路层简述

数据链路层

概述

链路(Link)就是从一个结点到相邻结点的一段物理线路,中间没有任何其他的交换结点

数据链路(Data Link)是指把实现通信协议的硬件和软件加到链路上,就构成数据链路

数据链路层以帧为单位传输和处理数据

使用点对点信道的数据链路层

几个重要问题

封装成帧

数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。

  • 帧头和帧尾中包含有重要的控制信息。

以太网V2的MAC帧

6字节 6字节 2字节 46-1500字节 4字节
目的地址 源地址 类型 数据载荷 FCS

PPP帧的格式

1字节 1字节 1字节 2字节 <=1500字节 2字节 1字节
标志 地址 控制 协议 数据载荷 FCS 标志
  • 帧头和帧尾可以进行帧定界
透明传输

透明传输指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。

  • 面向字节的物理链路使用字节填充的方法实现透明传输。
  • 面向比特的物理链路使用比特填充的方法实现透明传输。

当物理链路提供的是面向字符的传输服务时(物理链路以字符为单位传输数据),帧定界可以使用某个特殊的不可打印的控制字符作为帧定界符。ASCⅡ码是7位编码,一共可以组成128个不同的ASCⅡ码,其中可以打印的95个,不可打印的控制字符33个。由于帧定界符使用专门的控制字符,因此传输的数据不能出现这些控制字符,否则会出现帧定界错误。在传输文本文件时没有问题,但涉及图片媒体等文件可能会出现这类字符。帧开始符SOH,帧结束符EOT。

解决透明传输:

  1. 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是 1B)。
  2. 字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
  3. 如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。

为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大。考虑到差错控制等因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU

差错检测

实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能会变成0,0也可能会变成1。称为比特差错

在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER

误码率与信噪比有很大的关系。高信噪比对应低误码率。

使用差错检测码来检测数据在传输过程中是否产生了比特差错。

奇偶校验

  • 在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中“1”的个数为奇数或偶数。
  • 如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码;
  • 如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检);

循环冗余校验CRC

  • 收发双方约定好一个生成多项式;

    常用生成多项式

    • CRC-16
    • CRC-CCITT
    • CRC-32
  • 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;

  • 接收方通过生成多项式来计算收到的数据是否产生了误码。余数为0,判断无误码;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值