文章目录

  • 一、数据链路层 功能
  • 二、封装成帧 ★
  • 三、流量控制 和 可靠传输 ★★
    • 1、停止等待协议 ★
    • 2、后退 N 帧 ( GBN ) 协议 ★
    • 3、选择重传 ( SR ) 协议 ★
  • 四、差错控制 ( 检错 | 纠错 ) ★
  • 五、介质访问控制 ★★
    • 1、介质访问控制 ★
    • 2、静态划分信道 ★
    • 3、动态划分信道 ( 轮询访问 ) ★
    • 4、动态划分信道 ( 随机访问 ) ★
    • 5、CSMA/CD 相关计算 ★
  • 六、局域网
  • 七、广域网
  • 八、数据链路层设备

一、数据链路层 功能


"数据链路层" 功能 :

① 可靠性服务 : “数据链路层” 在 物理层 提供的服务的基础上 , 提供可靠性服务 ;

② 服务内容 : 将 网络层 下发的数据 , 可靠地 传输给 相邻节点的 网络层 ;

③ 逻辑上无差错链路 : “数据链路层” 加强了 物理层 传输 比特流 的能力 , 物理层传输可能出错 , 数据链路层可以将 物理连接 改造成 逻辑上无差错 的数据链路 ;

"数据链路层" 功能 列举 :

① 为网络层 提供服务

  • 无确认无连接服务
  • 有确认无连接服务
  • 有确认有连接服务

② 链路管理 , 面向连接的服务中 , 建立连接 , 维持连接 , 释放连接 ;

③ 将 数据报 组成 数据帧

④ 流量控制 , 主要是 限制 发送方的数据率 ;

⑤ 差错控制 , 帧错误处理 ( 重发 ) , 位错误处理 ( 纠正 ) ;

参考博客 : 【计算机网络】数据链路层 : 概述 ( 基本概念 | 功能 | 为 “网络层“ 提供的服务 )

二、封装成帧 ★


1 . 数据帧透明传输需求 :

① 数据帧封装 : 数据帧 添加 帧首部 , 和 帧尾部 ; 帧首部 和 帧尾部 之间的部分就是实际的数据 ;

② 传输 文本文件 : 数据帧 的数据 是 文本文件组成时 , 数据都是 ASCII 码 , 键盘上传输的任何字符 , 都 可以透明传输 ;

③ 传输 非文本文件 : 如果传输的文件是 非 文本文件 , 如 图像 , 音频 , 视频 等 , 此时 文件中的数据可能是任意值 , 就有可能与 帧尾部 或 帧首部 相同 , 此时就需要 采用 字符填充法实现 透明传输 ;

2 . 字符填充法 :

① 数据的随机性 : 原始数据中 , 存在 与 帧首部 , 帧尾部 相同的数据 ;

② 发送端填充转义字符 : 在这些 数据中的 帧首部 / 帧尾部 相同的数据前 , 填充一个转义字符 , 告诉接收端 , 转义字符后的后续数据作为帧数据 , 不当做 帧首部 / 帧尾部 使用 ;

③ 接收端接收数据 : 接收端 接收到的数据中有 转义字符 + 帧首部 / 尾部 样式的信息时 , 将转义字符后的数据当做帧数据 ; 当接收到 单独的 帧首部 / 尾部 时 ( 没有转义字符 ) , 才将其当做数据帧的首部 / 尾部 ;

3 . 零比特填充法 :

① “数据帧” 首部尾部设定 : 数据帧首部尾部 都设定成 011111100111111001111110 , 解决 数据中出现 011111100111111001111110 数据的情况 , 实现透明传输 ;

② 发送端 : 扫描发送数据 , 发现有连续的 555 个 111 , 就在后面加上一个 000 ; 这样 帧数据 永远不会出现 666 个 111 的数据 ;

③ 接收端 : 扫描接收数据 , 发现有连续的 555 个 111 , 就将后面的 000 删除 ; 对应 发送端的操作 ;

这样在比特流中可以传输任意比特组合 , 不会引起 数据帧 边界判定错误的问题 , 实现了透明传输 ;

参考博客 : 【计算机网络】数据链路层 : 封装数据帧 ( 附加信息 | 帧长度 | 透明传输 | 字符计数法 | 字符填充法 | 零比特填充法 | 违规编码法 )

三、流量控制 和 可靠传输 ★★


1、停止等待协议 ★


1 . 停止等待协议

停止-等待 协议 解决的问题 :

  • 可靠传输 : 解决 由于 物理线路 , 设备故障 , 路由错误 等各种问题导致的 丢包问题 ;
  • 流量控制 : 实现 发送端 与 接收端 的 流量控制 ;

停止-等待 协议 讨论场景 : 只考虑 一方为发送方 , 一方为接收方 ; 相当于 单工通信场景 ;

停止-等待 协议内容 : 发送方 每 发送完一个 数据帧 ( 分组 / 数据报 ) , 就停止发送 , 等待接收端确认 , 接收到 接收端 确认信息后 , 再发送下一个分组数据 ;

停止-等待 协议 应用场景 :

  • 无差错情况
  • 有差错情况

2 . 信道利用率 :

"停止-等待协议" 性能分析 :

优点 : 简单

缺点 : 信道利用率 低 ;

信道利用率 :

U=TDTD+RTT+TAU = \cfrac{T_D}{T_D + RTT + T_A}U=TD​+RTT+TA​TD​​

UUU 是信道利用率 ;

TDT_DTD​ 是发送方发送延迟 , 即发送方用了多长时间将数据帧发送完毕 ;

RTTRTTRTT 是往返时延 ;

TAT_ATA​ 是接收方 发送 ACKACKACK 确认帧 的时延 ;

"停止-等待协议" 信道利用率很低 , 大部分事件都在 传输的延迟上 , 用于发送接收的时间很少 ;

3 . 停止等待协议 信道利用率 计算示例 :

信道传输速率 4000b/s , 单向传播时延 30ms , 使 “停止-等待” 协议 信道利用率达到 80% , 数据帧长度至少是多少 ???

信道利用率公式为 :

U=TDTD+RTT+TAU = \cfrac{T_D}{T_D + RTT + T_A}U=TD​+RTT+TA​TD​​

先把数据单位收拾下 , 传输速率 4000 比特 / 秒 , 单向传播时延 0.03 秒 , RTT 是 0.06 秒 ; 设 数据帧长度是 LLL 比特 ; 这里没有给出 ACK 发送延迟 , 当做 000 ;

L4000L4000+0.06+0=0.8\cfrac{\dfrac{L}{4000}}{\dfrac{L}{4000} + 0.06 + 0} = 0.84000L​+0.06+04000L​​=0.8

分子分母都乘以 400040004000 ;

LL+240=0.8\cfrac{L}{L+ 240} = 0.8L+240L​=0.8

L=0.8L+192L= 0.8 L + 192L=0.8L+192

0.2L=1920.2L= 1920.2L=192

L=960L= 960L=960 单位是 比特 ;

数据帧的长度至少是 960960960 比特 ;

参考博客 : 【计算机网络】数据链路层 : 停止-等待协议 ( 无差错情况 | 有差错情况 | 帧丢失 | 帧出错 | ACK 确认帧丢失 | ACK 确认帧延迟 | 信道利用率公式 | 信道利用率计算 )★

2、后退 N 帧 ( GBN ) 协议 ★


"停止-等待" 协议 弊端 : 信道利用率低 , 发送完一帧后等待 , 这个时候信道完全是空闲的 ;

为了提高信道利用率 , 发送端 发送完一帧后 , 不用等待 接收端的 ACK 确认帧 , 立刻发送 第二帧 , 第三帧 , 这样信道的利用率就提高了 ;

相应协议也要做一些更改 :

① 增加 发送方 的 帧 序号范围 ;

② 发送方 缓存 多个 帧分组 ; 连续发送 NNN 帧 , 其中某一帧 可能需要重传 , 但不知道哪一帧需要重传 , 这里 需要将这 NNN 帧全部缓存下来 ;

这里有引出了两个在 “停止-等待” 协议基础上 , 改进的两个协议 :

  • 后退 NNN 帧协议 ( GBN )
  • 选择重传协议 ( SR )

2 . 后退 N 帧协议 重点

发送方 累计确认 机制 : 收到 ACK NNN , 就表示 NNN 号帧及之前的帧 , 全部正确 ;

接收方 按序接收 : 接收方 只能 按照顺序接收 , 人如果中间有帧丢失 , 那么后续帧全部丢弃 ;

接收方 确认帧 : 接收方 如果 收到错误帧 , 失序帧 , 那么查找最近成功接收的正确的帧的最大的 , 按序到达的帧 序号是多少 , 发送该帧对应的 ACK 确认帧 ;

发送窗口 : nnn 是帧序号编码长度 , 发送窗口大小 最大是 2n−12^n - 12n−1 , 最小 111 ;

3 . 后退 N 帧协议 计算示例 :

数据链路层 采用 后退 NNN 帧协议 , 发送方 发送了 0,1,2,3,4,5,6,70,1,2,3,4,5,6,70,1,2,3,4,5,6,7 编号的数据帧 , 当计时器超时时 , 只接收到了 0,2,30 , 2, 30,2,3 帧的确认帧 , 发送方需要重发的帧数时 4,5,6,74,5,6,74,5,6,7 帧 ;

计时器超时 , 发送方 发送 已发送 , 但是没有被 确认 的帧 ;

确认机制 是 累计确认 的 , 发送方 接收到了 333 确认帧 , 说明 333 之前的帧已经成功接收了 , 虽然没有收到 111 确认帧 , 但是该帧已经默认接收成功 ;

重发 没有被确认的帧 , 即 4,5,6,74,5,6,74,5,6,7 帧 ;

参考博客 : 【计算机网络】数据链路层 : 后退 N 帧协议 GBN ( 滑动窗口 | 发送窗口长度 | “发送方“ 累计确认、超时机制 | “接收方“ 按序接收、确认帧发送机制 | 计算示例 )★

3、选择重传 ( SR ) 协议 ★


1 . 选择重传协议 SR 重点 :

① 数据帧 逐一确认 , 接收方收到一个帧 , 就会单独发送该帧的确认帧 ;

② 重传 出错 的 单个帧 ;

③ 接收方 有缓存 ;

④ 滑动窗口大小 : WT=WR=2n−1W_T = W_R = 2^{n - 1}WT​=WR​=2n−1 ;

发送窗口 与 接收窗口 大小相等 , 便于流量控制 ;

使用 nnn 比特 对 帧进行编号 , 发送窗口的尺寸 WTW_TWT​ 和 接收窗口尺寸 WRW_RWR​满足如下公式要求 :

WT=WR=2n−1W_T = W_R = 2^{n - 1}WT​=WR​=2n−1

2 . 选择重传协议 计算示例

数据链路层 使用 选择重传协议 SR , 发送方发送了 0,1,2,30 , 1, 2,30,1,2,3 帧 , 当前时刻 , 收到了 111 号确认帧 , 0,20, 20,2 号帧出现超时 , 则需要重发哪些帧 ???

SR 协议是收到一帧 , 确认一帧 ;

111 号帧 已经确认 , 不用重发 ;

0,20 , 20,2 帧 超时 , 必须重发 ;

333 号帧 等待确认 , 当前时刻不用管 , 如果超时 , 就需要重发 , 当前没有超时 , 等待即可 ;

因此最终只需要重发 0,20 , 20,2 数据帧 ;

参考博客 : 【计算机网络】数据链路层 : 选择重传协议 SR ( 帧分类 | “发送方“ 确认帧、超时事件 | “接受方“ 接收帧机制 | 滑动窗口长度 | 计算示例 )★

四、差错控制 ( 检错 | 纠错 ) ★


生成多项式 最高次幂 = FCS 帧检验序列个数

上述数值 加上 111 等于 生成多项式二进制 个数

1 . 奇偶校验码 组成 :

① 信息元 : n−1n-1n−1 位 ; 要发送的有效数据 ;

② 校验元 : 111 位 ; 冗余码 ;

③ 奇校验码 : 111 的个数为 奇数 ; 冗余位 111 ;

④ 偶校验码 : 111 的个数为偶数 ; 冗余位 000 ;

2 . CRC 循环冗余码

发送数据 11010110111101 0110 111101011011 , 使用 CRC 循环冗余码 , 生成多项式是 100111001110011 , 求最终的发送数据 ???

最终发送的数据组成 : 原始数据 11010110111101 0110 111101011011 + 帧检验序列 FCS ;

计算 帧检验序列 FCS :

① 数据加 冗余码 位数个 000 : 首先确定 冗余码 位数 , 冗余码的位数是 生成多项式的 阶 , 即 生成多项式 100111001110011 的 总位数 减去 111 , 相当于 离散数学 中的生成函数的 最高位次幂 ; FCS 的位数是 444 位 ;

生成多项式 是 NNN 位 , 那么阶 就是 N−1N-1N−1 位 , FCS 帧检验序列就是 N−1N-1N−1 位 ;

数据加 444 个 000 后为 110101101100001101 0110 11 000011010110110000

② 模 222 除法 : 数据 加上 000 后 , 除以 生成多项式 , 余数就是 FCS 帧检验序列 ;

二进制除法 , 与十进制除法不同的是 , 每个除法相除的计算是 异或操作 ;

异或运算 : 同 000 , 异 111 ;


模 222 除法计算过程分析 :

  • 110101101011010 异或 100111001110011 计算得到 100110011001 , 然后下一位 111 落下来 , 得到 100111001110011 ;
  • 100111001110011 异或 100111001110011 计算得到 000000000000000 , 然后下面 555 位 落下来 , 得到 101101011010110 ;
  • 101101011010110 异或 100111001110011 计算得到 101101101 , 然后下 222 位落下来 , 得到 101001010010100 ;
  • 101001010010100 异或 100111001110011 计算得到 111011101110

最终计算出来的 帧检验序列 是 111011101110 ;

最终发送的数据是 : 11010110111101 0110 111101011011 111011101110

接收端接收数据并校验 :

① 检验过程 : 接收端接收 上述 11010110111101 0110 111101011011 111011101110 数据 , 将上述数据 与 生成多项式 100111001110011 相除 , 如果余数为 000 说明该数据帧没有差错 ;

② 结果判定 : 如果余数不为 000 , 说明数据帧错误 , 而且不知道哪里出现错误 , 丢弃该数据帧 , 重新发送 ;

3 . 生成多项式 : G(x)=x3+x2+1G(x) = x^3 + x^2 + 1G(x)=x3+x2+1

相当于 : G(x)=x3+x2+0x1+x0G(x) = x^3 + x^2 + 0x^1 + x^0G(x)=x3+x2+0x1+x0

对应的模二运算的除数 : 110111011101 ;

  • xxx 的 000 次幂系数为 111 , 对应第 000 位 为 111 ;
  • xxx 的 111 次幂系数为 000 , 对应第 111 位 为 000 ;
  • xxx 的 222 次幂系数为 111 , 对应第 222 位 为 111 ;
  • xxx 的 333 次幂系数为 111 , 对应第 333 位 为 111 ;

生成多项式对应的 二进制数 , 总位数是最高次幂加一 , 每一位是对应位前的系数 000 或 111 ;

参考博客 : 【计算机网络】数据链路层 : 差错控制 ( 检错编码 | 奇偶校验码 | CRC 循环冗余码 )★

4 . 纠错编码 海明码

参考博客 : 【计算机网络】数据链路层 : 差错控制 ( 纠错编码 | 海明码 | “海明码“ 原理 | “海明码“ 工作流程 | 确定校验啊位数 | 确定校验码和数据位置 | 求校验码值 | 检错纠错 )★

五、介质访问控制 ★★


1、介质访问控制 ★


介质访问控制 : 使 广播网络 中 , 两个节点之间的通信不会发生干扰的措施 ; 可以划分为以下两种类型 :

  • 静态划分信道
  • 动态划分信道

静态划分信道 : 信道划分 介质访问控制 ;

① 频分多路复用 FDM ( Frequency )

② 时分多路复用 TDM ( Time )

③ 波分多路复用 WDM ( Wave )

④ 码分多路复用 CDM ( Code )

动态分配信道 :

① 轮询访问 介质访问控制 : 令牌环传递协议 ;

② 随机访问 介质访问控制 :

  • ALOHA 协议
  • CSMA 协议
  • CSMA / CD 协议
  • CSMA / CA 协议

参考博客 : 【计算机网络】数据链路层 : 信道划分 介质访问控制 ( 数据链路 | 介质访问控制分类 | 频分多路复用 FDM | 时分多路复用 TDM | 波分复用 WDM | 码分多路复用 CDM 计算 )★

2、静态划分信道 ★


1 . 频分多路复用 FDM :

① 一直持有频带 : 用户 分配到 频带 后 , 通信过程中 一直占用该 频带 ;

② 频率带宽资源 ( Hz ) : 频分复用 所有用户 , 同样式样 占用 不同的 频率带宽 资源 , 频率带宽是 赫兹 单位 ;

频分多路复用 FDM 优点 :

① 效率高 : 充分利用 介质 带宽 , 传输 效率 较高 ;

② 实现简单 : 该技术比较成熟 , 实现简单 ;

2 . 时分多路复用 TDM :

① 划分等长帧 : 将 时间 划分为 若干 等长 的 时分复用帧 ( TDM 帧 ) ;

② TDM 帧 : 是在 物理层 传送的 比特流 所划分的帧 , 标志一个周期 ;

③ 固定时隙 : 每个 时分复用 用户 , 在每个 TDM 帧 中 , 占用 固定序号的时隙 ;

④ 轮流使用 : 所有用户 轮流 占用信道 ;

整个信道的速率是 8000 比特 / 秒 , 如果将信道划分为 444 个 TDM 帧 , 那么每个用户的速率最高是 2000 比特 / 秒 ;

3 . 波分复用 WDM :

① 本质 : 光的 频分多路复用 ;

② 不同波长光 : 在光纤中 , 传输 多种 不同 波长的 光信号 , 波长不同 , 各路光信号互不干扰 ;

③ 分离信号 : 使用 波长分解复用器 将 各路播放分解出来 ;

4 . 码分多路复用 CDM :

码分多址 ( CDMA ) 是 码分多路复用 CDM 的一种重要形式 ;

111 个 比特 分为 多个 码片 ( 芯片 ) , 每个站点被指定一个唯一的 mmm 位 芯片序列 ;

发送 111 时 , 站点发送 芯片序列 , 发送 000 时 , 站点发送 芯片序列 反码 ;

A,BA , BA,B 两个主机 , 发送数据到 CCC 主机 ;

主机 AAA 发送 000 数据 , 主机 BBB 发送 111 数据 , 其发送的每个 比特 , 都对应一个 mmm 位的 芯片序列 , 一般情况下 芯片序列的长度是 646464 或 128128128 位 , 这里为了方便演示 , 设置芯片序列 长度为 888 位 ;

数据不冲突 前提 ( 芯片序列正交 ) : 多个站点 , 同时发出数据时 , 各个站点 , 芯片序列 必须满足 相互正交 的前提 ; 只要芯片正交 , 就不会出现冲突 ;

芯片序列正交 计算 : 芯片序列 对应位 相乘 , 然后相加 , 除以总位数 ;

数据合并 : 将信道中的 芯片序列 按位 线性相加 , 合并后的芯片序列位数相同 ;

数据分离 : 合并的数据 和 源站芯片序列 规格化内积 ;

规格化内积计算 : 合并后的数据 与 源站芯片序列 , 按位相乘 , 再相加 , 最后除以 芯片序列位数 , 如果得到 +1+1+1 说明是数据 111 , 如果得到 −1-1−1 说明是数据 000 ;

芯片序列 与 芯片序列 反码 :

AAA 主机中的 111 数据 , 对应 芯片序列 (+1,−1,−1,+1,+1,+1,+1,−1)( +1 , -1 , -1 , +1 , +1 , +1 , +1 , -1 )(+1,−1,−1,+1,+1,+1,+1,−1) ;
AAA 主机中的 000 数据 , 对应 芯片序列 (−1,+1,+1,−1,−1,−1,−1,+1)( -1 , +1 , +1 , -1 , -1 , -1 , -1 , +1 )(−1,+1,+1,−1,−1,−1,−1,+1) , 000 数据的芯片序列是 111 数据芯片序列的反码 ;

BBB 主机中的 111 数据 , 对应 芯片序列 (−1,+1,−1,+1,−1,+1,+1,+1)( -1 , +1 , -1 , +1 , -1 , +1 , +1 , +1 )(−1,+1,−1,+1,−1,+1,+1,+1) ;
BBB 主机中的 000 数据 , 对应 芯片序列 (+1,−1,+1,−1,+1,−1,−1,−1)( +1 , -1 , +1 , -1 , +1 , -1 , -1 , -1 )(+1,−1,+1,−1,+1,−1,−1,−1) , 000 数据的芯片序列是 111 数据芯片序列的反码 ;

芯片序列正交 验证 计算 : 如果 A,BA,BA,B 两台主机之间的芯片序列可以正交 , 那么其发送数据就不会冲突 ;

主机 AAA 的 111 数据 芯片序列 (+1,−1,−1,+1,+1,+1,+1,−1)( +1 , -1 , -1 , +1 , +1 , +1 , +1 , -1 )(+1,−1,−1,+1,+1,+1,+1,−1) , 与
主机 BBB 中 111 数据 芯片序列 (−1,+1,−1,+1,−1,+1,+1,+1)( -1 , +1 , -1 , +1 , -1 , +1 , +1 , +1 )(−1,+1,−1,+1,−1,+1,+1,+1) 正交 ;

正交计算 : 每个对应位 按位相乘 , 然后相加 , 除以位数 ; 如果为 000 , 说明两个芯片序列正交 ;

(+1×−1)+(−1×+1)+(−1×−1)+(+1×+1)+(+1×−1)+(+1×+1)+(+1×+1)+(−1×+1)8=−1+(−1)+1+1+(−1)+1+1+(−1)8=0\begin{array}{lcl} \\\\ \cfrac{( +1 \times -1 ) + ( -1 \times +1 ) + ( -1 \times -1 ) + ( +1 \times +1 ) + ( +1 \times -1 ) + ( +1 \times +1 ) + ( +1 \times +1 ) + ( -1 \times +1 ) }{8} \\\\ =\cfrac{-1 + (-1) + 1 + 1 + (-1) + 1 + 1 + (-1)}{8} \\\\ = 0 \end{array}8(+1×−1)+(−1×+1)+(−1×−1)+(+1×+1)+(+1×−1)+(+1×+1)+(+1×+1)+(−1×+1)​=8−1+(−1)+1+1+(−1)+1+1+(−1)​=0​

数据合并 : 将 芯片数据 线性相加即可 ;

AAA 主机发送 000 数据 , BBB 主机发送 111 数据 , 那么对应的合并的数据是 :

AAA 主机 000 数据对应芯片序列 (−1,+1,+1,−1,−1,−1,−1,+1)( -1 , +1 , +1 , -1 , -1 , -1 , -1 , +1 )(−1,+1,+1,−1,−1,−1,−1,+1)
BBB 主机 111 数据对应芯片序列 (−1,+1,−1,+1,−1,+1,+1,+1)( -1 , +1 , -1 , +1 , -1 , +1 , +1 , +1 )(−1,+1,−1,+1,−1,+1,+1,+1)

(−1−1,+1+1,+1−1,−1+1,−1−1,−1+1,−1+1,+1+1)=(−2,+2,0,0,−2,0,0,+2)\begin{array}{lcl} \\\\ ( -1 -1 , +1 + 1, +1 - 1 , -1 + 1, -1 - 1, -1 + 1, -1 + 1 , +1 + 1) \\\\ =( -2 , +2 , 0, 0 , -2, 0 , 0 , +2) \end{array}(−1−1,+1+1,+1−1,−1+1,−1−1,−1+1,−1+1,+1+1)=(−2,+2,0,0,−2,0,0,+2)​

数据分离 :

CCC 设备收到 (−2,+2,0,0,−2,0,0,+2)( -2 , +2 , 0, 0 , -2, 0 , 0 , +2)(−2,+2,0,0,−2,0,0,+2) 芯片序列 , 将该序列与 AAA 主机 芯片序列 进行 规格化内积 ;

规格化内积 : 对应位相乘 , 求总和 , 然后除以 芯片序列 总的位数 888 ;

规格化内积 计算过程 : 对应位相乘 , 然后将 888 个相乘结果相加 , 最后除以 888 ;

主机 AAA 芯片序列是 (+1,−1,−1,+1,+1,+1,+1,−1)( +1 , -1 , -1 , +1 , +1 , +1 , +1 , -1 )(+1,−1,−1,+1,+1,+1,+1,−1) ;

规格化内积=(−2,+2,0,0,−2,0,0,+2)∙(+1,−1,−1,+1,+1,+1,+1,−1)=(−2×+1)+(+2×−1)+(0×−1)+(0×+1)+(−2×+1)+(0×+1)+(0×+1)+(+2×−1)8=−2−2+0+0−2+0+0+−28=−1\begin{array}{lcl} \\\\ 规格化内积 = ( -2 , +2 , 0, 0 , -2, 0 , 0 , +2) \bullet ( +1 , -1 , -1 , +1 , +1 , +1 , +1 , -1 ) \\\\ = \cfrac{ ( -2 \times +1) + ( +2 \times -1) + ( 0 \times -1) + ( 0 \times +1) + ( -2 \times +1) + ( 0 \times +1) + ( 0 \times +1) + ( +2 \times -1) }{8} \\\\ = \cfrac{ -2 - 2 + 0+0 - 2 +0 + 0+ - 2 }{8} \\\\ = -1 \end{array}规格化内积=(−2,+2,0,0,−2,0,0,+2)∙(+1,−1,−1,+1,+1,+1,+1,−1)=8(−2×+1)+(+2×−1)+(0×−1)+(0×+1)+(−2×+1)+(0×+1)+(0×+1)+(+2×−1)​=8−2−2+0+0−2+0+0+−2​=−1​

计算结果是 −1-1−1 , 说明 主机 AAA 发送的数据是 000 ;

参考博客 : 【计算机网络】数据链路层 : 信道划分 介质访问控制 ( 数据链路 | 介质访问控制分类 | 频分多路复用 FDM | 时分多路复用 TDM | 波分复用 WDM | 码分多路复用 CDM 计算 )★

3、动态划分信道 ( 轮询访问 ) ★


令牌传递协议 :

① 令牌帧 : 特殊格式的 MAC 控制帧 , 没有任何信息 ;

② 令牌 作用 : 控制信道使用 , 确保 同一时刻 , 只有一个站点 独占信道 ;

③ 发送数据前提 : 每个节点 都可以在 令牌持有时间内 , 获得发送数据的权利 , 该时间并不是无限持有的 , 有时间限制 ;

令牌传递协议 特点 :

① 优点 : 令牌环网 没有 数据碰撞冲突 ;

② 缺点 :

  • 令牌开销
  • 等待延迟
  • 单点故障

令牌传递协议 应用场景 : 令牌传递协议 应用于 令牌环网 ;

  • 物理上是 星型拓扑 结构
  • 逻辑上是 环形拓扑 结构

令牌传递协议 , 常用于负载较重 , 通信量较大的网络 ;

参考博客 : 【计算机网络】数据链路层 : 轮询访问 介质访问控制 ( 轮询协议 | 令牌传递协议 )

4、动态划分信道 ( 随机访问 ) ★


1 . ALOHA 协议

( 1 ) 纯 ALOHA 协议 :

  • 不 监听 信道 ;

  • 随机发送 : 不按照 时间槽 发送 , 也就是随机发送 ;

  • 想发就发 ;

冲突检测、处理 :

① 出现冲突 : 如果发送时 , 出现了冲突 , 数据被丢弃 , 或部分出错 , 发送失败 ;

② 接收方处理 : 接收方没有收到数据 , 或 收到错误数据 , 那么向发送方 发送 错误信息 , 或者 干脆 不回送 确认信息 ;

③ 发送方处理 : 如果 发送方在 超时时间 内 没有收到 接收方的 确认信息 , 那么就重传之前的数据 ;

( 2 ) 时隙 ALOHA 协议 :

① 时间片分割 : 将 时间 分成 若干 相同的时间片 ;

② 接入信道 : 所有 用户 在 每个时间片开始时 , 同步接入网络信道 ;

③ 冲突机制 : 如果 接入信道时 某 用户 与 其它用户 发生冲突 , 那么 等到下一个时间片再开始发送 ;

参考博客 : 【计算机网络】数据链路层 : ALOHA 协议 ( 纯 ALOHA 协议 | 时隙 ALOHA 协议 )

2 . CSMA 协议 ( 载波监听多路访问协议 )

CSMA 协议 :

① 全称 : Carrier Sense Multiple Access , 载波监听多路访问协议 ;

② CS : Carrier Sense , 载波监听 , 每个站点 发送数据前 , 先检测总线上是否有其它 站点 在发送数据 ;

③ MA : 多点接入 , 多个 主机 连接在同一条 总线 上 ;

ALOHA 协议 与 CSMA 协议 对比 :

  • ALOHA 协议 , 不听就说 ;

  • CSMA 协议 , 先听再说 ;

参考博客 : 【计算机网络】数据链路层 : CSMA 协议 ( 载波监听多路访问协议 | 监听 | 1-坚持 CSMA | 非坚持 CSMA | p-坚持 CSMA )

3 . CSMA/CD 协议

CSMA/CD 协议 :

① 全称 : Carrier Sense Multiple Access With Collision Detection , 载波监听多点接入 / 碰撞检测 协议 ;

② CS : Carrier Sense , 载波监听 , 每个站点 发送数据前 , 和 发送数据过程中 , 先检测总线上是否有其它 站点 在发送数据 ;

③ MA : Multiple Access , 多点接入 , 多个 主机 连接在同一条 总线 上 ; 该协议 应用于 总线型网络 中 ;

④ CD : Collision Detection , 碰撞检测 , 适配器 一边发送 , 一边监听 , 检测信道上电压变化 用于 判断本站点发送数据 时 , 其它站点是否也在发送你数据 ; 由此可以看出 , 该协议用于 半双工网络 中 ;

电磁波传输时间导致冲突 : 先监听了信道 , 但是还是会发生冲突 , 电磁波在信道上是以有限速度传播的 , 如果电磁波没有到本站点 , 当时检测肯定是没有信号 , 但是等到本站点向外发出数据时 , 突然检测到有信号 , 这里电磁波传输的时间差 , 就造成了这种误差 ;

ALOHA 协议 与 CSMA 协议 对比 :

  • ALOHA 协议 , 不听就说 ;

  • CSMA 协议 , 先听再说 ;

  • CSMA/CD 协议 , 先听再说 , 边听边说 ;

参考博客 : 【计算机网络】数据链路层 : CSMA/CD 协议 ( 载波监听多点接入 / 碰撞检测 协议 | 单程端到端传播时延 | 截断二进制指数规避算法 | 计算示例 | 最小帧长问题 )★

4 . CSMA/CA 协议 : ( 仅作了解 )

① 全称 : Carrier Sense Multiple Access With Collision Avoidance , 载波监听多点接入 / 碰撞避免 协议 ;

② CS : Carrier Sense , 载波监听 , 每个站点 发送数据前 , 和 发送数据过程中 , 先检测总线上是否有其它 站点 在发送数据 ;

③ MA : Multiple Access , 多点接入 , 多个 主机 连接在同一条 总线 上 ; 该协议 应用于 总线型网络 中 ;

④ CA : Collision Avoidance , 碰撞避免 ;

随机访问 介质访问控制 协议 对比 :

  • ALOHA 协议 , 不听就说 ;

  • CSMA 协议 , 先听再说 ;

  • CSMA/CD 协议 , 先听再说 , 边听边说 ;

  • CSMA/CA 协议 , 先听再说 , 边听边说 ;

参考博客 : 【计算机网络】数据链路层 : CSMA/CA 协议 ( 载波监听多点接入 / 碰撞避免 协议 | CSMA/CA 协议工作原理 | CSMA/CD 协议 与 CSMA/CA 协议对比 )

5、CSMA/CD 相关计算 ★


1 . 引入一组概念 :

① 单程端到端传播时延 : 记作 τ\tauτ ;

② 碰撞检测最长时间 : 站点发出数据后 , 最多 两倍的 单程端到端时延 2τ2\tau2τ 后就可以得知出现了碰撞 ;

③ 2τ2\tau2τ 概念 : 又称为 , 总线端到端往返传播时延 , 争用期 , 冲突窗口 , 碰撞窗口 ;

只要经过 2τ2\tau2τ 没有检测到碰撞 , 本次发送 , 一定没有碰撞 ;

2 . 截断二进制指数规避算法 :

① 争用期 : 确定基本退避时间 , 也就是争用期 , 两倍的 单程端到端传播时延 2τ2\tau2τ ;

② 重传次数 : 定义参数 kkk , 一定程度上相当于重传次数 ;

  • kkk 公式 : kkk 取值不超过 101010 , 公式为 k=min(重传次数,10)k=min( 重传次数 , 10 )k=min(重传次数,10) ;
  • 当重传次数 不超过 101010 时 : k=重传次数k = 重传次数k=重传次数
  • 当重传次数 大于 101010 时 : k=10k=10k=10 ;

③ 取随机数 : 从整数集合 [0,2k−1][0, 2^k - 1][0,2k−1] 中 , 取出随机数 rrr , 重传时间就是 r×2τr \times 2\taur×2τ ;

④ 重传次数限制 : 当重传 161616 次都失败时 , 说明网络拥塞严重 , 直接丢弃该帧 , 向上层报告出错 ;

示例 :

① 第 111 次重传 , k=1k=1k=1 , 从

[0,1][0, 1][0,1] 区间中 , 即 {0,1}\{ 0 , 1\}{0,1}

中随机取一个值 , rrr ;

  • 如果 r=0r = 0r=0 , 重传时间是 000 ;
  • 如果 r=1r = 1r=1 , 重传时间是 2τ2\tau2τ ;

② 第 111 次重传 , k=2k=2k=2 , 从

[0,3][0, 3][0,3] 区间中 , 即 {0,1,2,3}\{ 0 , 1 , 2 ,3\}{0,1,2,3}

中随机取一个值 , rrr ;

  • 如果 r=0r = 0r=0 , 重传时间是 000 ;
  • 如果 r=1r = 1r=1 , 重传时间是 2τ2\tau2τ ;
  • 如果 r=2r = 2r=2 , 重传时间是 4τ4\tau4τ ;
  • 如果 r=3r = 3r=3 , 重传时间是 6τ6\tau6τ ;

③ 第 333 次重传 , k=3k=3k=3 , 从

[0,7][0, 7][0,7] 区间中 , 即 {0,1,2,3,4,5,6,7}\{ 0 , 1 , 2 ,3 , 4, 5, 6, 7\}{0,1,2,3,4,5,6,7}

中随机取一个值 , rrr ;

  • 如果 r=0r = 0r=0 , 重传时间是 000 ;
  • 如果 r=1r = 1r=1 , 重传时间是 2τ2\tau2τ ;
  • 如果 r=2r = 2r=2 , 重传时间是 4τ4\tau4τ ;
  • 如果 r=3r = 3r=3 , 重传时间是 6τ6\tau6τ ;
  • 如果 r=4r = 4r=4 , 重传时间是 8τ8\tau8τ ;
  • 如果 r=5r = 5r=5 , 重传时间是 10τ10\tau10τ ;
  • 如果 r=6r = 6r=6 , 重传时间是 12τ12\tau12τ ;
  • 如果 r=7r = 7r=7 , 重传时间是 14τ14\tau14τ ;

3 . 截断二进制指数规避算法 计算示例 :

在 以太网 二进制回退算法中 , 碰撞 111111 次后 , 随机数 rrr 的选择范围是多少 ???

随机数 rrr 是根据 参数 kkk 确定的 , 参数 kkk 是重传次数 和 101010 中较小的值 , 重传次数 小于等于 101010 次时 , k=重传次数k = 重传次数k=重传次数 , 重传次数大于等于 111111 次时 , k=10k = 10k=10 ;

随机数 rrr 的取值范围是 [0,2k−1][0, 2^k - 1][0,2k−1] , 代入 k=10k=10k=10 ;

取值范围是 [0,210−1][0 , 2^{10} - 1][0,210−1] , 随机数 rrr 的 范围 是 [0,1023][0 , 1023][0,1023] 之间的值 ;

4 . 最小帧长问题

检测到碰撞时 , 需要暂停帧的发送 , 如果帧太短 , 就会导致一次性发送完毕 , 无法暂停 , 这里需要在检测到碰撞时 , 帧还没有发送结束 ;

帧的传输时延 至少要 大于 2τ2\tau2τ ;

帧的传输时延=帧长度(比特)数据传输速率帧的传输时延 = \cfrac{帧长度 ( 比特 )}{ 数据传输速率 }帧的传输时延=数据传输速率帧长度(比特)​

帧长度(比特)数据传输速率≥2τ\cfrac{帧长度 ( 比特 )}{ 数据传输速率 } \geq 2\tau数据传输速率帧长度(比特)​≥2τ

帧长度(比特)≥2τ×数据传输速率帧长度 ( 比特 )\geq 2\tau \times 数据传输速率帧长度(比特)≥2τ×数据传输速率

最小帧长度是 2τ×数据传输速率2\tau \times 数据传输速率2τ×数据传输速率 比特 ;

以太网 规定 最短帧长度是 64 字节 , 小于 64 字节的帧都是由于冲突终止的无效帧 ;

六、局域网


参考博客 :

  • 【计算机网络】数据链路层 : 局域网基本概念 ( 局域网分类 | 拓扑结构 | 局域网特点 | 局域网传输介质 | 介质访问控制方法 | IEEE 802 | 链路层 LLC、MAC 控制子层 )
  • 【计算机网络】数据链路层 : 以太网 ( 无连接、不可靠服务 | 以太网发展 | 10BASE-T 以太网 | MAC 地址 | 以太网 MAC 帧 | 高速以太网 )
  • 【计算机网络】数据链路层 : IEEE 802.11 无线局域网 ( 802.11 MAC 帧头格式 | 无线局域网分类 )

七、广域网


参考博客 :

  • 【计算机网络】数据链路层 : 广域网 ( 广域网概念 | PPP 协议 | PPP 协议功能 | PPP 协议组成 | PPP 协议帧格式 )
  • 【计算机网络】数据链路层 : 广域网 ( HDLC 协议 | HDLC 站 | HDLC 帧格式 | HDLC 帧类型 | PPP 协议 与 HDLC 协议 对比 )

八、数据链路层设备


冲突域 : 同一个 冲突域 中 , 每个节点都能收到被发送的 数据帧 ; 同一时间 只能有一台设备 发送信息 的范围 ;

广播域 : 网络中能收到任何一台设备发出的广播帧的 设备的集合 ; 某站点发出一个广播信号 , 所有能接受这个信号的设备范围 , 称为广播域 ;

物理层设备 : 中继器 , 集线器 ;

  • 不能隔离冲突域
  • 不能隔离广播域

数据链路层设备 : 网桥 , 交换机 ;

  • 能隔离冲突域
  • 不能隔离广播域

网络层设备 : 路由器 ;

  • 能隔离冲突域
  • 能隔离广播域

参考博客 : 【计算机网络】数据链路层 : 数据链路层设备 ( 物理层扩展以太网 | 网桥 | 透明网桥 | 源路由网桥 | 交换机 | 以太网交换机 | 冲突域 | 广播域 | 各层设备隔离冲突域广播域情况 )★

【计算机网络】数据链路层 : 总结 ( 封装成帧 | 流量控制与可靠传输 | 差错控制 | 介质访问控制 | 局域网 | 广域网 | 数据链路层设备 ) ★★★相关推荐

  1. 【计算机网络笔记】数据链路层(封装成帧,差错检测,可靠传输)

    链路:从一个结点到相邻结点的一段物理线路,中间没有任何其他的交换结点. 数据链路:把实现通信协议的硬件和软件加到链路上 数据链路层以帧为单位传输和处理数据. 三个过程:封装成帧,差错检测,可靠传输 封 ...

  2. 计算机网络——数据链路层之封装成帧和透明传输

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

  3. 计算机网络学习:封装成帧、差错检测和可靠传输

    目录 一.数据链路层 二.封装成帧 三.差错检测 四.可靠传输 1.停止等待协议 2.滑动窗口协议 3.选择重传协议 五.总结 一.数据链路层 这一篇记录一下五层协议体系结构中的数据链路层.这一层属于 ...

  4. 数据链路层 功能 封装成帧 透明传输 字符计数法 字符填充法 零比特填充法 违规编码法 传输中的差错 差错控制 冗余编码 奇偶校验码 CRC循环冗余码 检错过程 细解 图解 通俗易懂

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

  5. 数据链路层:封装成帧、透明传输、差错检测

    从整个互联网来看,局域网仍属于数据链路层的范围. 链路 VS 数据链路 链路:从一个结点到相邻结点的一段物理链路. 数据链路:物理线路+实现通信协议的硬件和软件.(早期通信协议也称通信规程) 另一种分 ...

  6. 【计算机网络复习 数据链路层】3.4.1 流量控制与可靠传输机制

    流量控制与可靠传输机制 一.数据链路层的流量控制 二.流量控制的方法 三.可靠传输.滑动窗口.流量控制 一.数据链路层的流量控制 较高的发送速度和较低的接收能力不匹配,会造成传输出错,因此流量控制也是 ...

  7. 【计算机网络复习 数据链路层】3.2 封装成帧和透明传输

    封装成帧和透明传输 一.封装成帧 二.透明传输 一.封装成帧 封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧.接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比 ...

  8. 3.1数据链路层 3.2封装成帧和透明传输

    目录 一.数据链路层功能概述 二.封装成帧 三.透明传输 总结 一.数据链路层功能概述 功能一:为网络层提供服务.无确认无连接服务,有确认无连接服务,有确认面向连接服务.有连接一定有确认!!! 功能二 ...

  9. 王道考研 计算机网络11 数据链路层 封装成帧 透明传输 流量控制 停止-等待协议 后退N帧协议GBN 选择重传协议SR

    第三章知识 数据链路层的基本概念 数据链路层功能概述 封装成帧 透明传输 什么数据都能传输 数据链路层的流量控制 流量控制方法 滑动窗口协议: 每一个小格标识一个帧 发送窗口:发送端正在处理的发送的数 ...

最新文章

  1. python九:元祖(tuple)
  2. 自己动手搭建Git服务器-SCM-Manager
  3. 句子录音打分代码参考
  4. Linux常用命令—文件处理命令—链接命令
  5. 独立站需要ERP系统吗?
  6. svn主干开辟分支、分支合并到主干
  7. python中texttable库显示实时数据_python显示数据库数据
  8. Sitemesh3使用及配置
  9. oracle创建视图多表关联,Oracle创建两表关联查询的视图
  10. 苹果wifi网速慢怎么办_无线WiFi满格网速却很慢怎么办 如何提升网速【详解】
  11. 前端接收java后端返回base64二进制流下载mp4
  12. 2021.11.8-11.14 AI行业周刊(第71期):AI行业经验
  13. Ubuntu16.04下安装MATLAB 2016b!完美运行
  14. MPLAB程序中如何设置配置字
  15. 关于以太坊公开的4个测试网络的区别:
  16. PHP LOL接口,电竞英雄联盟数据API接口 - 【赛事列表】API调用示例代码
  17. 专业术语:UV、PV
  18. Linux mem 1.3 分页寻址(Paging)机制详解
  19. 使用reCAPTCHA实现验证码
  20. Teamcenter RAC 调用查询

热门文章

  1. Linux 命令行下的好东西
  2. 驱动精灵的修复服务器,求大神帮助,使用驱动精灵修复驱动,没想到变成了这,开不了机了,求助啊,急...
  3. 如何制作中间实线 两头细线
  4. 2200p如何连接wifi打印_2200p如何连接wifi打印_惠普无线打印机如何使用 惠普无线打印机如何连接手机【详解】......
  5. ajax success 不能返回值解决方案 async:false
  6. 珠海公共自行车系统分析系列 - 前言
  7. 4位格雷码的顺序编码_一种基于格雷码的方形QAM星座图编码方法和系统与流程...
  8. MT8167处理器型号对比,MT8167芯片资料介绍
  9. 运筹学笔记 运输问题
  10. C++倒计时制作教程