技术分享
首页
  • JavaScript

    • 构造函数和原型
    • Cookie和Session
    • Object.create(null)和{}
    • TypeScript配置
    • typescript入门到进阶
  • 框架

    • Vue-Router
    • React基础入门
  • 其它

    • Http协议
    • 跨域问题总结
  • 分析Promise实现
  • Axios源码分析
  • Webpack原理
  • vueRouter源码分析
  • Vue

    • Vite快速搭建Vue3+TypeScript项目
    • Cordova打包Vue项目的问题
    • Vue将汉字转为拼音,取出首字母
  • JavaScript

    • new Function
  • 后端

    • Node.js中使用Crypto生成Token
    • Body-Parser处理多层对象的问题
  • 其它

    • 项目Demo汇总
    • Vuepress+Vercel搭建个人站点
    • 项目中能用到的
    • husky规范代码提交
  • Mongoose基础
  • Multer文件上传中间件的使用
  • JavaScript

    • 浅谈两数全等
    • JavaScript进制转换
    • 手写bind,apply,call和new
  • 算法

    • 数组去重和排序
    • 数组扁平化
    • 斐波那契数列
  • JavaScript 数据结构
  • 其它

    • webpack面试题
    • vite面试题
    • svg和canvas的优缺点
    • TypeScript面试题
    • Vue常见面试题
  • 计算机网络

    • 数据链路层
    • 网络层
  • Git的使用
  • Nginx的使用
  • CentOS7安装Nginx
  • 正则表达式
  • SEO搜索引擎优化
  • Serverless介绍
友链
GitHub (opens new window)

鑫生活

总有人要赢,为什么不能是我
首页
  • JavaScript

    • 构造函数和原型
    • Cookie和Session
    • Object.create(null)和{}
    • TypeScript配置
    • typescript入门到进阶
  • 框架

    • Vue-Router
    • React基础入门
  • 其它

    • Http协议
    • 跨域问题总结
  • 分析Promise实现
  • Axios源码分析
  • Webpack原理
  • vueRouter源码分析
  • Vue

    • Vite快速搭建Vue3+TypeScript项目
    • Cordova打包Vue项目的问题
    • Vue将汉字转为拼音,取出首字母
  • JavaScript

    • new Function
  • 后端

    • Node.js中使用Crypto生成Token
    • Body-Parser处理多层对象的问题
  • 其它

    • 项目Demo汇总
    • Vuepress+Vercel搭建个人站点
    • 项目中能用到的
    • husky规范代码提交
  • Mongoose基础
  • Multer文件上传中间件的使用
  • JavaScript

    • 浅谈两数全等
    • JavaScript进制转换
    • 手写bind,apply,call和new
  • 算法

    • 数组去重和排序
    • 数组扁平化
    • 斐波那契数列
  • JavaScript 数据结构
  • 其它

    • webpack面试题
    • vite面试题
    • svg和canvas的优缺点
    • TypeScript面试题
    • Vue常见面试题
  • 计算机网络

    • 数据链路层
    • 网络层
  • Git的使用
  • Nginx的使用
  • CentOS7安装Nginx
  • 正则表达式
  • SEO搜索引擎优化
  • Serverless介绍
友链
GitHub (opens new window)
  • 数据链路层
    • 数据链路层基本概念及基本问题
      • 基本概念
      • 三个基本问题
      • 两种情况下的数据链路层
    • 以太局域网(以太网)
      • 概述
      • 集线器的一些特点
      • 信道利用率
      • MAC 层
    • 扩展以太网
      • 在数据链路层考虑
    • 高速以太网
  • 网络层
  • 计算机
coderly
2019-11-05

数据链路层

# 数据链路层

数据链路(data link):除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

# 数据链路层基本概念及基本问题

# 基本概念

# 数据链路层信道类型

  1. 点到点信道。
  2. 广播信道。

# 链路与数据链路

  1. 链路(link):是一条点到点的物理线路段,中间没有任何其它的交换节点。
    • 一条链路只是一条通路的一个组成部分
  2. 数据链路(data link):除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
    • 现最常用的方法就是使用适配器(即网卡)来实现这些协议的硬件和软件。
    • 一般的适配器都包括了数据链路层和物理层这两层的功能。

# 数据链路层传输的是帧

常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。

  1. 将网络层的数据,加上帧头、帧尾、物理层地址、校验值

# 三个基本问题

# 封装成帧

【概念】:

  1. 封装成帧就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
  2. 首部和尾部的一个重要作用就是进行帧定界。
图片

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

  • 试想:帧还未发送完,发送端出来问题,只能重发该帧。接收端却收到了前面的“半截子帧”,它会抛弃吗?为什么?
图片

【解答查看透明传输和查错控制】

# 透明传输

【上面的举例】
若传输的数据是 ASCII 码中“可打印字符(共 95 个)”集时,一切正常。
若传输的数据不是仅由“可打印字符”组成时,就会出现问题,如下图:

图片

【解决方法】:

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

【概念】:

  1. 传输过程中可能会发送比特查错:1 可能会变成 0 而 0 也可能变成 1。
  2. 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。
  3. 误码率与信噪比有很大的关系。
  4. 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种查错检测措施。
# 【帧检验】:
  • 循坏冗余检验(CRC)的计算过程
图片

【分析】
在该图中,要传输的数据为红色部分(101001),因为除数为(1101)四位,所以在被除数(101001)后面补三个 0,如果除数是五位,则需要在被除数后面补四个 0。余数为001

  • 最后传送的数据为101001+001,接收端收到数据后,通过同样的方法,将101001001与除数1101计算,最后余数结果如果为 0,则说明数据传输无错,如果不为 0 就说明数据传输出错。
# 帧检验序列 FCS
  • 在数据后面添加上的冗余码称为帧检验序列 FCS
  • 循环冗余检验 CRC和帧检验序列 FCS并不等同。
  1. CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。
  2. FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。
# 接收端对收到的每一帧进行 CRC 检验

【检验】:

  1. 若得出的余数 R=0,则判定这个帧每一查错,就接受。
  2. 若余数 R≠0,则判定这个帧有差错,就丢弃。
    【特点】:
  3. 但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了查错。
  4. 只要经过严格的挑选,并使用位数足够多的除数 p,那么出现检测不到的查错的概率就很小很小。

# 小结

  • 仅用循坏冗余检验 CRC 查错检测技术只能做到无差错接受。
    1. “无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生查错“。也就是说:“凡是接收端数据链路层接受的帧都没有传输查错”(有查错的帧就丢弃而不接受)。
  • 要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。
    1. 考虑:帧重复、帧丢失、帧乱序的情况。
  • 可以说:“CRC 是一种无比特查错,而不是无传输查错的检测机制“
    1. OSI/RM 模型的观点:数据链路层要做成无传输查错的!但这种理念目前不被接受!

# 两种情况下的数据链路层

# 使用点对点信道的数据链路层(广域网)

这种信道使用一对一的点对点通信方式

# PPP 协议

现在全世界使用得最多的数据链路层协议是点对点协议 PPP(Point-to-Point Protocol),用户使用拨号电话线接入因特网时,一般都是使用 PPP 协议。
【PPP 协议应该满足的要求】:

  • 简单 --- 这是首要的要求
  • 封装成帧
  • 透明性
  • 多种网络层协议
  • 多种类型链路
  • 差错检测
  • 检测连接状态
  • 最大传送单元
  • 网络层地址协商
  • 数据压缩协商
    【PPP 协议不需要满足的要求】:
  • 纠错
  • 流量控制
  • 序号
  • 多点线路
  • 半双工或单工链路

【PPP 协议的组成】:

  1. 数据链路层协议可以用于异步串行或同步串行介质。
  2. 它使用 LCP(链路控制协议)建立并维护数据链路连接。
  3. 网络控制协议(NCP)允许在点到点连接上使用多种网络层协议。如图所示:
图片

【字节填充】:
问题:信息字段中出现了标志字段的值,可能会 被误认为是“标志”,怎么办?

  • 将信息字段中出现的每个0X7E字节转变成为 2 字节序列(0X7D,0X5E)
  • 若信息字段中出现一个0X7D的字节,则将其转变成为 2 字节序列(0X7D,0X5D).
  1. 若信息字段中出现 ASCII 码的控制字符(即数值小于0X20的字符),则在该字符前面要加入一个 0X7D 字节,同时将该字符的编码加以改变。

# 使用广播信道的数据链路层(局域网)

这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送

# 共享通信媒体

【静态划分信道】:

  • 频分复用
  • 时分复用
  • 波分复用
  • 码分复用
    【动态媒体接入控制(多点接入)】:
  • 随机接入(主要被以太网采用)
  • 受控接入,如多点线路探询,或轮询。(目前已不被采用)
# CSMA/CD 协议

# 局域网的特点与优点:

【特点】:

  1. 网络为一个单位所拥有,且地理范围和站点数目有限。

【优点】:

  1. 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
  2. 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
  3. 提高了系统的可靠性、可用性和生存性。

# 以太局域网(以太网)

# 概述

# 以太网与数据链路层的两个子层

为了使数据链路层能更好地适应多种局域网标准。802 委员会就将局域网的数据链路层拆 成两个子层:

  1. 逻辑链路控制 LLC 子层
  2. 媒体接入控制 MAC 子层
    与接入到传输媒体有关的内容都放在 MAC 子层,而 LLC 子层与传输媒体无关,不管采用何种协议的局域网对 LLC 子层来说都是透明的。

# 集线器的一些特点

集线器是使用电子器件来模拟实际电缆线的工作,因此整个系统仍然像一个传统的以太网那样运行。集线器使用了大规模集成电路芯片,因此这样的硬件设备的可靠性已大大提高了。
使用集线器的以太网在逻辑上仍是一个总线网,个工作站使用的还是 CSMA/CD 洗衣,并共享逻辑上的总线。
集线器很像一个多接口的转发器,工作在物理层。

# 信道利用率

以太网的信道被占用的情况:

  1. 争用期长度为 2π,即端到端传播时延的两倍。检测到碰撞后不发送干扰信号。
  2. 帧长为 L(bit),数据发送速率为 C(b/s),因此帧的发送时间为 L/C = T。(s)。

# MAC 层

# MAC 层的硬件地址(MAC 地址)

在局域网中,硬件地址又称为物理地址,或MAC 地址。
802 标准所说的“地址”严格地讲应当是每一个站的“名字”或“标识符”。
但鉴于大家早已习惯了将这种 48 位的“名字”称为“地址”,所以本书也采用这种习惯用法,尽管这种说法并不太严格。

  • IEEE 的注册管理机构RA 负责向厂家分配地址字段的前三个字节(即高位 24 位)
  • 地址字段中的后三个字节(即低位 24 位)由厂家自行指派,称为扩展标识符,必须保证生产出的适配器没有重复地址。
  • 一个地址块可以生产 2^24 个不同的地址。这种 48 位地址称为 MAC-48,它的通用名称是 EUI-48.
  • “MAC 地址”实际上就是适配器地址或适配器标识符 EUI-48。 #####适配器检查 MAC 地址
    适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址
  1. 如果是发往本站的帧则收下,然后再进行其他的处理。
  2. 否则就将此帧丢弃,不再进行其他的处理。
    “发往本站的帧”包括以下三种帧:
  3. 单播帧(一对一)
  4. 广播帧(一对全体)
  5. 多播帧(一对多)

# 扩展以太网

# 在数据链路层考虑

在数据链路层扩展局域网是使用网桥。
网桥工作咋数据链路层,它根据 MAC 帧的目的地址对收到的帧进行转发。
网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的转口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口。

# 高速以太网

#计算机
上次更新: 2021/09/13, 15:11:59
网络层

网络层→

最近更新
01
css
09-13
02
html
09-13
03
README
09-13
更多文章>
Theme by Vdoing | Copyright © 2021-2021 coderly | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式