文章目录

  • 数据链路层的功能
    • 为什么要设置数据链路层
    • 数据链路的主要功能
      • 1. 封装成帧
      • 2. 透明传输
      • 3. 差错检测
    • MAC寻址

数据链路层的功能

为什么要设置数据链路层

  1. 物理层的线路有传输介质与通信设备组成,比特流在传输介质上传输时一定会存在误差,而设置数据链路层目的就是为了在存在差错的物理层的基础上,采用差错检测,差错控制和流量控制等方法,将有差错的物理线路改进为无差错的数据链路,向网络层提供高质量的数据传输服务。
  2. 对于网络层,由于数据链路层的存在,网络层不需要知道物理层具体采用了哪种传输介质与通信设备的,是采用模拟通信方法,还是采用数字通信方法。只要接口关系与功能不变,物理层所采用的传输介质与通信设备的变化对网络层不会产生影响。

数据链路的主要功能

数据链路层最基本的服务是将源计算机网络层来的数据可靠的传输到相邻节点的目标计算机的网络层。
为达到这一目的,数据链路层必须具备一系列相应的功能,主要有:

  1. 如何将数据组合成数据块(在数据链路层中将这种数据块称为帧,帧是数据链路层的传送单位);
  2. 在两个网路实体之间提供数据链路通路的建立、维持和释放管理;
  3. 如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使之与接收方相匹配。
    这些功能具体表现在以下几个方面。

1. 封装成帧

为了向网络层提供服务,数据链路层必须使用物理层提供的服务。而物理层我们知道,它是以比特流进行传输的,这种比特流并不保证在数据传输过程中没有错误,接收到的位数量可能少于、等于或者多于发送的位数量。而且它们还可能有不同的值,这时数据链路层为了能实现数据有效的差错控制,就采用了一种“帧”的数据块进行传输。而要采帧格式传输,就必须有相应的帧同步技术,这就是数据链路层的“封装成帧”(也称为“帧同步”)功能

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

网络层的IP数据报传送到数据链路层就成为帧的数据部分。在帧的数据部分的前面和后面分别添加上首部和尾部,就构成了一个完整的帧。帧长等于数据部分长度加上帧首部和帧尾部的长度,而首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。首部和尾部还包含许多必要的控制信息,在发送帧时,是从帧首部开始发送。各种数据链路层协议都要对帧首部和帧尾部的格式有明确的规定。

为了提高帧的传输效率,应当使帧的数据部分长度尽可能大于首部和尾部的长度。但是,每一种链路层协议都规定了帧的数据部分的长度上限——最大传送单元MTU(Maximum Transfer Unit)。

当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。控制字符SOH(Start Of Header)放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT(End Of Transmission)表示帧的结束。他们的十六进制编码分别是01(二进制是00000001)和04(二进制是00000100)。

采用帧传输方式的好处是:
在发现有数据传送错误时,只需将有差错的帧再次传送,而不需要将全部数据的比特流进行重传,这就在传送效率上将大大提高。但随后很快又恢复正常,于是重新从头开始发送刚才未发送完的帧。由于使用了帧定界符,在接收端就知道前面收到的数据时个不完整的帧(只有首部SOH,没有传输结束符EOT),必须丢弃。而后面收到的数据有明显的帧定界符(SOH和EOT),因此这是一个完整的帧,应当收下。

但同时也带来了两方面的问题:(1)如何识别帧的开始与结束;(2)在夹杂着重传的数据帧中,接收方在接收到重传的数据帧时是识别成新的数据帧,还是识别成已传帧的重传帧呢?这就要靠数据链路层的各种“帧同步”技术来识别了。“帧同步”技术既可使接收方能从以上并不是完全有序的比特流

2. 透明传输

透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使接收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。

在上面提到了在数据链路层实现透明传输和封装成帧时,使用到了转义字符。在假设没有使用转义字符的前提下我们来分析一下存在的问题:

  • 由于帧的开始和结束的标记是使用专门指明的控制字符,因此,所传输的数据中的任何8比特的组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误。
  • 当传送的帧使用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。

问题:当数据部分是非ASCII码的文本文件时(如二进制代码的计算机程序或图像等),情况就不同了,如果数据中的某个字符的二进制代码恰好和SOH或EOT这种控制字符一样,数据链路层就会错误地找到帧的边界,把部分帧收下(误认为是完整的帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符SOH)。这样的帧的传输显然就不是透明传输。

问题分析:为了解决透明传输的问题,就必须设法使数据中可能出现的控制字符“SOH”和“EOT”在接收端不被解析为控制字符。
解决方法:发送端的数据链路层在数据中出现控制字符”SOH”和”EOT”的前面插入一个转义字符”ESC”(其十六进制编码是1B)。而在接收端的数据链路层在将数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充(byte stuffing)或字符填充(character stuffing)。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。

3. 差错检测

传输差错:可分为两大类,一类就是最基本的比特差错,另一类就是收到的帧并没有出现比特错误,但却出现了帧丢失、帧重复或帧失序

  • 比特差错:就是比特在传输过程中可能会产生差错,即1可能会变成0,0可能会变成1。比特差错是传输差错中的一种。
  • 三个帧差错:[#1]-[#2]-[#3],假定在接收端收到的却有可能出现的情况:
    (1)帧丢失:收到[#1]-[#3](丢失了[#2])。
    (2)帧重复:收到[#1]-[#2]-[#2]-[#3](收到两个[#2])。
    (3)帧失序:收到[#1]-[#3]-[#2](后面发的帧反而先到达了接收端,这与一般的数据链路层传输概念不一样)。

误码率BER(Bit Error Rate):就是在一段时间内,传输错误的比特占所传输比特总数的比率。例如,误码率为10 ^ (-10)时,表示平均每传送10^10个比特就会出现一个比特的差错。误码率与信噪比有很大的关系,如果提高信噪比,就可以使误码率减小

问题:实际的通信链路并非理想的,它不可能使误码率下降到零。
问题分析:为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种检测措施。
解决方法:目前在数据链路层广泛使用了循环冗余检验CRC(Cyclic Redundancy Check)的检测技术。

检错码:分组仅包含足以使接收端发现差错的冗余信息,接收端能发现出错,但不能确定哪一比特是错的,并且自己不能纠正传输差错
检错码分为两种,奇偶校检码和循环冗余编码,而循环冗余编码是广泛使用的检错码方法,它检错能力强,实现容易。

注:在数据链路层使用CRC检验,能够实现无比特差错的传输,但这还不是可靠传输。

补充:
OSI的观点是必须把数据链路层做成是可靠传输的。因此在CRC检测基础上,增加了帧编号、确认和重传机制。收到正确的帧就要向发送端发送确认。发送端在一定的期限内若没有收到对方的确认,就认为出现了差错,因而就进行重传,直到收到对方的确认为止。
这种方法在历史上曾经起到很好的作用。但现在的通信线路的质量已经大大提高了,由通信链路质量不好引起差错的概率已经大大降低。

因特网现在广泛使用的数据链路层协议都不适用确认和重传机制,即不要求数据链路层向上层提供可靠传输的服务(因为这要付出的代价太高,不合算)。如果在数据链路层传输数据时出了差错并且需要进行改正,那么改正差错的任务就由上层协议(如,运输层TCP协议)来完成。实验证明,这样可以提高通信效率。

MAC寻址

局域网将数据链路层划分为两个子层:LLC子层(逻辑链路控制)和MAC子层(介质访问控制)

(1) LLC作为数据链路层的一个子层,使用MAC子层为其提供的服务,通过与对等实体LLC子层的交互为它的上层网络层提供服务。
(2) MAC子层是用来实现介质访问控制的网络实体。MAC子层主要功能包括数据帧的封装/拆封、帧的寻址与识别、帧的接收与发送、链路的管理、帧的差错控制及MAC协议的维护和寻址等。

MAC寻址这是数据链路层中的MAC子层主要功能。这里所说的“寻址”与“IP地址寻址”是完全不一样的,因为此处所寻找地址是计算机网卡的MAC地址,也称“物理地址”、“硬件地址”,而不是IP地址。在以太网中,采用媒体访问控制(Media Access Control, MAC)地址进行寻址,MAC地址被烧入每个以太网网卡中。这在多点连接的情况下非常必需,因为在这种多点连接的网络通信中,必须保证每一帧都能准确地送到正确的地址,接收方也应当知道发送方是哪一个站。

参考:
数据链路层的主要功能
OSI参考模型——数据链路层详解

数据链路层的数据传输相关推荐

  1. 网络协议笔记-数据链路层

    [数据链路层的基本概念] 数据链路层中数据传输的单位是帧(frame) 链路是一条无源的点到点的物理线路段. 数据链路除了物理线路外,还必须有通信协议来控制这些数据的传输,若把实现这些协议的硬件和软件 ...

  2. 数据链路层的基本功能简单总结

    因为遇到了这样一道题,所以想借此机会记录一下数据链路层的基本功能. 题目如下: (多选)下列属于数据链路层基本功能的有 ( ) A.流量控制 B.介质访问控制 C.成帧 D.差错控制 答案:ABCD ...

  3. TCP/IP模型第二层--数据链路层

    数据链路层 一.交换机 switch 1.二层交换机:工作在数据链路层 2.三层交换机:工作在数据链路层和网络层,具有路由功能,可以充当一个无线路由器 二.以太网和以太坊 1.以太网 Ethernet ...

  4. 一篇文章带你搞懂数据链路层

    数据链路层,简称链路层.两个主机之间的数据传输,总是在一段一段的链路上面传送的,也就是说,在两个相邻结点之间(主机与路由器之间 或者 两个路由器之间)传送数据是直接传送的(点对点).这时,就需要使用专 ...

  5. 计算机网络(考研、期末)复习指导(概述、物理层、数据链路层)

    第一章 计算机网络体系结构 1.1 计算机网络概述 1.1.1 计算机网络的概念 1.计算机网络的定义 1)计算机网络是一个将分散的.具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的 ...

  6. 网络攻城狮怎么看待TCP/IP协议与UDP协议?

    在互联网中,存在着各种不同层次的协议,它们分别的功能也是不同的.但做为网络攻城狮,对这些协议的使用以及区分是工作的必备技能.那今天以网络攻城狮的角度来告诉大家攻城狮是怎么看待TCP/IP协议与UDP协 ...

  7. 网络技术温故知新(一)

    因为要参加25号的H3C的网络技术大赛的预赛,但是网络的知识又忘记的差不多了,打算这几天尽量补补. 平时一直用的都是一般的5层结构,OSI 的结构很少接触,今晚看了一下,这里总结一下自己感觉重要的,先 ...

  8. 最容易理解的计算机网络 基础知识概论(下)

    文章目录 1.计算机网络的分类 1.1按照传输介质分类 1.2按照网络的使用者进行分类 1.3按照网络的规模和作用范围进行分类. 2.计算机网络的性能指标 2.1 带宽 2.2 时延 2.2.1网络时 ...

  9. 计算机网络在线测试第二章,进行测验:-第2章-网络体系结构与网络协议测试.doc...

    进行测验:-第2章-网络体系结构与网络协议测试.doc 142计算机网络 142-301214-J01062-1 作业 进行测验 第2章 网络体系结构与网络协议测试进行测验 第2章 网络体系结构与网络 ...

最新文章

  1. 2019最新版本的PanDownload纯净版,网盘满速下载和搜索神器,追剧和动漫新番必不可少的下载工具【亲测有效】
  2. 学习python的日常6
  3. 电赛经历--记难忘的四天三夜
  4. 动态规划(浅层基础)
  5. 翻牌游戏如何打乱牌面java_剑仙登上虎牙封面C位,成为新的牌面,虎牙造星能力真的强...
  6. Spring Boot整合@CacheEvict注解使用
  7. [html] HTML为什么要语义化?语义化有什么好处?
  8. 用lsof恢复已删除的文件
  9. 谷歌黑科技:gVisor轻量级容器运行时沙箱
  10. 《球球大作战》源码解析:服务器与客户端架构
  11. 趣谈网络协议笔记 - 通信协议综述
  12. 家庭影院的Dolby音效如何设置
  13. Visio画出的图,裁剪成固定大小再添加马赛克的方法
  14. shell一站式攻略——history历史命令
  15. 猿创征文|Python基础——Visual Studio版本——第五章 文件I/O
  16. 《智慧彼岸之定心经》
  17. 【单片机毕业设计】【mcuclub-306】万年历电子时钟 | 数字时钟 | 多功能时钟 | 智能闹钟
  18. 个人Javaweb项目介绍
  19. IDC FutureScape:全球政府行业2019年预测——中国启示
  20. ask信号调制matlab,基于Matlab的ASK数字调制系统仿真

热门文章

  1. xtrabackup出现‘FLUSH NO_WRITE_TO_BINLOG TABLES‘: 1205 (HY000) Lock wait timeout exceeded;
  2. 不会python怎么办,这样大数据数据分析,小白也能上手
  3. DRF中ModelSerializer的使用
  4. 2020圣诞年终总结 | 普元数字中台文章合集
  5. 本体技术视点 | SocialFi 如何解决 Web3 社交中的声誉问题?
  6. 个人与组织在声誉风险管理上的关系是双向统一的
  7. php dw导航源码,【dw设计导航】- 虎课网
  8. 信息检索的PR曲线(Precision-Recall Curve)作图
  9. jar文件无法启动,闪退。虚拟机环境DirBuster解压安装后点击DirBuster.jar无法启动界面
  10. php 浮点数和整数相乘,科学网—具体计算一下就更清楚啦(附: 整数相乘及数据拟合) - 尤明庆的博文...