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

数据链路和帧

  • 链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换节点。

    • 一条链路只是一条通路的一个组成部分。
  • 数据链路(data link)除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
    1. 现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。
    2. 一般的适配器都包括了数据链路层和物理层者两层的功能。
  • 也有人采用另外的术语。这就是把链路分为物理链路和逻辑链路。
  • 物理链路就是上面所说的链路。
  • 逻辑链路就是上面的数据链路,是物理链路加上必要的通信协议。
  • 早期的数据通信协议曾叫做通信规程(procedure)。因此在数据链路层,规程和协议同义语。

数据链路层传送的是帧

数据链路层像个数字管道

  • 常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。
  • 数据链路层不必考虑物理层如何实现比特传输的细节。甚至还可以更简单地设想好像是沿着两个数据链路层之间的水平方向把帧直接发送给对方。

三个基本问题

  • 数据链路层协议有许多种,但有单个基本问题则是共同的。这三个基本问题是:

    1. 封装成帧
    2. 透明传输
    3. 差错控制

1.封装成帧

  • 封装成帧就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。

  • 首部和位补的一个重要作用就是进行帧定界

    用控制字符进行帧定界的方法举例

    当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符

    控制字符SOH(start of header)放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT(end of transmission)表示帧的结束。

2.透明传输

  • 如果数据中的某个字符的二进制代码恰好和SOH或EOT一样,数据链路层就会错误地“找到帧的边界”。

    解决透明传输问题

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

    透明

    • 指某一个实际存在的事物看起来却好像不存在一样。

    用“字节填充”法解决透明传输的问题

3.差错检测

在传输过程中可能会产生比特差错:1 可能会变成0,而0也可能变成1。

  • 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(bit error rate)。

  • 误码率与信噪比有很大的关系。

  • 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。

  • 在数据链路层传送的帧中,广泛使用了循环冗余检测CRC的检错技术。

    循环冗余检测的原理

    • 在发送端,先把数据划分为组。假定每组k个比特。
    • 在每组M后面再添加供差错检测用的n位冗余码,然后一起发送出去。

    冗余码的计算

    • 用二进制的模2运算进行2^n乘M的运算,这相当于在M后面添加n个0。

    • 得到的(k+n)位的数除以事先选定好的长度为(n+1)位的除数P,得出是Q而余数是R,余数R比除数P少1位,即R是n位。

    • 将余数R作为冗余码拼接在数据M后面,一起发送出去。

    接收端对收到的每一帧进行CRC检验

    • (1)若得出的余数R=0,则判定这个帧没有差错,就接受(accept)。
    • (2)若余数R ≠0,则判定这个帧没有差错,就丢弃
    • 但这种检验方法并不能确定究竟是哪一个或哪几个比特出现了差错。
    • 只要经过严格的挑选,并使用位数足够多的除数P,那么出现检测不到的差错改就很小很小。

    冗余码的计算举例

    • 现在k = 6,M = 101001。

    • 设n=3,除数P = 1101,

    • 被除数是2^n*M = 101001000。

    • 模2运算的结果是:Q = 110101,除数R = 001。

    • 把余数R作为冗余码添加在数据M的后面发送出去。发送的数据是:

      2^n*M + R,即101001001,共(k+n)位。

    循环冗余检验的原理说明

    帧检验序列FCS

    • 在数据后面添加上的冗余码称为帧检验序列FCS(frame check sequence)。
    • 循环冗余检验CRC和帧检验序列FCS并不等同
      1. CRC是一种常用的检错方法,而FCS是添加在数据后面的冗余码。
      2. FCS可利用CRC这种方法得出,但CRC并非用来获得FCS的唯一方法。可以有其它检测技术用于获得FCS。

    应当注意

    • 仅用循环冗余检验CRC差错检测技术只能做到无差别接受(accept)。
    • “无差别接受”是指:凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于1的概率认为i这些帧在传输国政中没有产生差错。
    • 也就是说:凡是接收端数据链路层接受的帧都没有传输差错(有差错的帧就丢弃而不接受)。
    • 单纯使用CRC差错检测技术不能实现“无差别传输”或“可靠传输”。
    • 应当明确,“无比特差错”与“无传输差错”是不同的概念。
    • 在数据链路层使用CRC检验,能够实现无比特差错的传输,但这还不是可靠传输
    • 要做到“无差错传输”(即发送什么就收到什么)就必须要加上确认和重传机制。
    • 以上叙述的数据链路层协议都不是可靠的传输协议。

计算机网络数据链路层之使用点对点信道相关推荐

  1. 计算机网络 数据链路层(一)点对点协议与广播信道

    计算机网络(五) 学习计算机网络过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流. -- 数据链路层 -- 文章目录 计算机网络(五) -- 数据链路层 -- 1. 使用点对 ...

  2. 数据链路层——点对点信道

    文章目录 帧 封装成帧 透明传输 差错检测 传输差错 链路:从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其它的交换结点. 数据链路:把实现通信协议的软件和硬件加到链路上,就构成了数 ...

  3. 计算机网络-数据链路层

    title: 计算机网络-数据链路层 date: 2018-04-12 15:55:15 tags: 每天都感觉时间很紧迫,进步不大,浪费的时间太多了,能做的就是每天进步一点点 --stackfing ...

  4. 王道计算机网络 数据链路层整理 超详细版

    数据链路层的基本概念 结点:主机.路由器 链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线.光纤和微波.分为有线链路.无线链路. 数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传 ...

  5. 用计算机心如止水,计算机网络数据链路层

    1.数据链路层使用的信道类型: 点对点信道(1对1) 广播信道(1对多),如:集线器.交换机 2.链路与数据链路: 链路:点对点的物理线路段,中间无任何其他交换结点 数据链路:通信协议 + 软件 + ...

  6. 计算机网络-数据链路层 1

    数据链路层 习题自测 问题 1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?"电路接通了"与"数据链路接通了"的区别何在? 2.数据链路层中的链路控制包 ...

  7. 计算机网络——数据链路层介质访问控制

    文章目录 前言 一.介质访问控制概述 二.信道划分介质访问控制 1.频分多路复用(FDM) 2.时分多路复用(TDM) 3.波分多路复用(WDM) 4.码分多路复用(CDM) 三.随机访问介质访问控制 ...

  8. 计算机网络-数据链路层(超级无敌详细)

    目录 1.数据链路层概述 概述 数据链路层使用的信道 三个重要问题 2.封装成帧 前导码 透明传输 解决透明传输问题 3.差错检测 奇偶校验 循环冗余校验CRC 4.可靠传输 三种可靠协议 停止-等待 ...

  9. 计算机网络--数据链路层[微课堂]

    数据链路层的主要内容: 点对点信道和广播信道的特点,这两种信道所使用得协议(PPP协议以及CSMA/CD协议)的特点. 数据链路层的三个基本问题:封装成帧.透明传输.差错检测. 以太网的 MAC 层的 ...

  10. 一文详细理解计算机网络 - 数据链路层(考试和面试必备)

    1. 数据链路层概述 数据链路层(Data Link Layer)是计算机体系结构中的其中一层,在数据链路层中使用的信道可以分为两种: (1)点对点信道:一对一的通信方式 (2)广播信道:一对多的通信 ...

最新文章

  1. 与15级新加入团队同学的约定
  2. keras构建前馈神经网络(feedforward neural network)进行回归模型构建和学习
  3. Oracle11gR2 数据库客户端PL/SQL中文乱码的问题
  4. mysql特别点_Mysql 特别注意点!
  5. svg圆弧进度条demo
  6. SAP HANA数据库的搜索执行原理
  7. SELECT的学习以及在socket中的应用
  8. ubuntu20.10(Linux)在wine下用pyinstaller打包python程序在window系统运行 交叉编译
  9. PPT(十)-动画基础知识学习
  10. python卸载错误_卸载python后导致yum无法使用的解决办法 - Python - 服务器之家
  11. 从MDK4到MDK5之“盘古开天辟地”
  12. c 自动打印的服务器,clodop云打印服务器(c_lodop打印机不打印)
  13. [RK3566] 通过GM8775 点LVDS屏调试记录
  14. WES2009创建开发
  15. 大曝光!武汉最牛的互联网公司全在这了
  16. design pattern Builder 生成器设计模式
  17. [译] 揭开 ARIA 的神秘面纱
  18. CentOS 安装指南
  19. 在表格中展示订单的倒计时定时器,用一个定时器显示多个倒计时
  20. FT232芯片的国产化替代

热门文章

  1. 哈工大刘挺教授:中文信息处理前沿技术进展
  2. 数据挖掘实战—基于水色图像的水质评价
  3. 数据科学包10-pandas高级内容之时间序列
  4. 不会Netty,你也永远不会熟悉Java
  5. 《linux核心应用命令速查》连载三:sa:报告、清理并维护进程统计文件
  6. 博客也是网络赚钱的有利工具
  7. Windows驱动开发技术详解——经典书评
  8. 「02」《机器学习经·天工开物篇》
  9. python中计算DataFrame,Series的数据频率
  10. 用户id oracle设置,Oracle中的架构,用户和功能ID