# 数据链路层使用的信道类型

# 点对点信道

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

# 广播通信

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

# 数据链路和帧

  • 是一条点到点的物理线路段,中间没有任何其他的交换节点
  • 一条链路只是一条信道的一个组成部分

除了物理线路外,还必须有通信协议来控制这些数据的传输,若把实现这些协议的硬件和软件加到链路上,就构成了数据链路现最常用的方法是使用适配器(网卡)来实现这些协议的硬件和软件,一般的适配器都包括了数据链路层和物理层两层的功能

# 帧(协议数据单元)

数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并且上给网络层,在互联网中,网络层协议数据单元就是 IP 数据报(简称数据报,分组或者包)

# 三个基本问题

# 封装成帧

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

image-20230721154709632

# 透明传输(与黑盒测试原理相同)

# 问题产生

若传输的数据式 ASCLL 码中 可打印字符集 时 ,一切正常,若传输数据不是仅由 可打印字符组成 ,就会出现问题

image-20230721154758383

# 用字节填充法解决透明传输问题

  • 发送端的数据链路层在数据中出现的控制字符 SOH 或者 EOT 的前面插入一个转义字符 ESC
  • 字节填充或者字符填充 —— 接收端的数据链路层在将数据送往网络层之前,要删除插入的转义符
  • 如果转义符也出现在数据中,那么应在转义符前面输入一个转义字符,当接收端收到连续的两个转义字符时,就删除前面的一个

image-20230721154903309

# 差错控制

# 错误的产生

  • 传输过程中可能会产生比特差错:1 可能变成 0,0 也可能变成 1,在一段时间内,传输错误的比特占所有传输比特总数的比率为误码率 BER (Bit Error Rate)
  • 误码率和信噪比有很大的关系
  • 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检验措施

# CRC(循环冗余校验)

# 产生背景

纠错码

在每一个发送的数据块中包含足够的冗余信息,以便接收方可以判断除被发送的数据中肯定有哪些内容

检错码

包含一些冗余信息,但是这些信息只能让接收方推断出发生了错误,但推断不出发生了哪个错误,然后接收方可以请求重传

# 多项式编码

特点

  • 检错能力极强
  • 开销很小
  • 易于实现

在性能和开销上考虑

均远远优于奇偶校验及算数校验等方式,因而,在数据上存数和通信领域,CRC 无处不在,例如 WinRAR,通用图象格式 GIF 等都用 CRC 检错手段

# CRC 原理

  1. 收方和发方:规定一个相同的生成多项式
  2. 发方:数据后添加冗余位(0),生成多项式的最高次幂位,二进制位串 n-1 位
  3. 计算余数,模 2 运算,够位商 1,不够商 0,各位相加不进位
  4. 余数加数据串后,(1)替换冗余位(2)添加冗余位后的数据串与余数做或运算
  5. 收方:做相同的运算,如果余数位 0 则接收数据,如果不为 0,丢掉该数据

# 计算方法

  1. 添加冗余位:在数据之后添加生成多项式的最高次幂位
  2. 将添加冗余位的数据传(除 = 模 2 运算)生成多项式
  3. 模 2 运算:(1) 添加冗余位 (2)够位就商 1 (3)各位相加不进位

# 举例

image-20230721155400244

# 帧检验序列 FCS

概念

在数据后添加上的冗余码称为帧检验序列 FCS(Frame Check Sequence)

CRC 与 FCS 区别

  • CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码
  • FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法

# CRC 差错检验技术小结

  • 无差错接收:凡是接收的帧,我们都以非常接近为 1 的概率认为这些帧在传输过程中没有出现差错,也就是说,范式接受端数据链路层接受的帧都没有差错(有差错的就丢掉不接收)
  • CRC 是一种无比特差错,而不是无传输差错的检测机制
  • OSI/RM 模型的观点:数据链路层要做成无差错的,这种观念不被接受
  • 已接近为 1 的概率实现无差错检验 —— 算法的性能
  • 以接近为 1 的概率实现无差错的接收 —— 检验能力强,准确的验出错误
  • 但是不是可靠地传输:数据链路层只针对数据链路层负责,帧,一帧数据的正确性,实现了无比特的数据接收
  • 面向对象的问题:用户

# PPP 协议特点

# PPP 协议使用场景

image-20230721155807217

# PPP 协议满足的要求

  1. 简单 —— 首要原因
  2. 封装成帧
  3. 支持多种网络协议
  4. 支持多种类型链路
  5. 差错检测
  6. 检测连接状态
  7. 最大传送单元 MTU(1500 字节,64 字节)
  8. 网络协地址协商
  9. 数据压缩协商

# PPP 协议不满足的要求

  1. 纠错
  2. 流量控制
  3. 序号
  4. 多点线路
  5. 半双工或者全双工链路

# PPP 协议组成

1992 年制订了 PPP 协议,经过 1993 年和 1994 年的修订,现在的 PPP 协议已成为因特网的正式标准【RFC 1661】

三部分组成

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

image-20230721160104280

# PPP 协议帧格式

# 图解(不超过 1508 字节)

image-20230721160137084

# 字段含义

  • 标志字段 F = 0x7E (符号 0x 表示后面的字符是十六进制表示,十六进制的 7E 二进制表示为 01111110 )
  • 地址字段 A 置于 0xFF,地址字段实际并不起作用
  • 控制字段 C 通常置为 0x03
  • PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节

# 字节填充

问题:信息字段出现了标志字段的值,可以会误认为标志

  • 将信息字段出现的每个 0x7E 字节转变成为 2 字节序列(0x7D 0x5E)
  • 若信息字段中出现一个 0x7D 的字节,则将其转变成 2 字节序列(0x7D 0x5D)
  • 若信息字段中出现 ASCll 码的控制字符(即数值小于 0x20 的字符),则在该字符前面加入一个 0x7D 字节,同时将该字符的编码加以改变

# 零比特填充法

PPP 协议用在 SONET/SDH 链路时,是使用同步传输(一连串的比特持续传送),这是 PPP 协议采用零比特填充方法来实现透明传输

在发送端,只要发现有五个连续的 1,则立即填入一个 0,接收端对帧中的比特流进行扫描,每当发现 5 个连续的 1 时,就把这五个连续的 1 后的一个 0 删除

image-20230721160334818

# PPP 协议工作状态

  • 当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接
  • PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)
  • 这些分组及其响应一些 PPP 参数,和进行网络层配置,NCP 给新接入的 PC 机分配一个临时的 IP 地址,使 PC 机称为因特网上的一个主机
  • 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址,接着,LCP 释放数据链路层连接,最后释放的物理层的连接

# 局域网的数据链路层

# 局域网的拓扑

image-20230721160507928

# 局域网的特点与优点

局域网主要特点是:网络是一个单位所拥有,且地理范围和站点数目有限

# 局域网的主要优点

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

# 认识以太网

最初的以太网是将许多计算机连接到一根总线上,当初认为这样的连接方式既简单又可靠,因为总线上没有源器件

image-20230721160651829

# 共享通信媒介

# 静态划分信道

  • 频分复用
  • 时分复用
  • 波分复用
  • 码分复用

# 动态媒介接入控制(多点接入)

随机接入(主要被以太网采用)

# CSMA/CD 协议

CSMA/CD 表示 Carrier Multiple Access with Collisio Detection

# 多点接入

表示计算机以多点接入的方式连接在一根总线上

# 载波监听

指每一个站点在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞

载波监听 就是用电子技术检测总线上有没有其他计算机发送的数据信号

# 碰撞检测

碰撞检测就是计算机边发数据边检测信道上的信号电压太小

  1. 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大
  2. 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞
  3. 所谓碰撞就是发生冲突,因此碰撞检测也称为冲突检测

检测到碰撞后

  1. 在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来
  2. 每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段时间后再次发送

# 传播时延对载波监听的影响

image-20230721161115558

image-20230721161120371

# 电磁波在总线上的有限传播速率的影响

当某个站监听到总线是空闲时,也可能总线并非真正是空闲的

A 向 B 发出的信息,要经过一定的事件后才能传送到 B

B 若在 A 发送的信息到达 B 之前发送自己的帧(因为这是 B 的载波监听检测不到 A 所发送的信息),则必然要在某个事件和 A 发送的帧发生碰撞

碰撞的结果是两个帧都变得无用

# 争用期

最先发送数据帧的站,在发送数据帧后至多经过时间为 2τ(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞

经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞

# 以太网的争用期

  1. 以太网的端到端往返时延 2τ 称为争用期,通常,取 52.1μs 为争用期的长度
  2. 对于 10Mb/s 以太网,在争用期内可发送 512bit,即 64 字节
  3. 以太网在发送数据时,若前 64 字节未发生冲突,则后续的数据就不会发生冲突

# 最短有效帧长

  1. 如果发生冲突,就一定是在发送的前 64 字节之内
  2. 由于一检测到冲突就立即终止发送,这是已经发送出去的数据一定小于 64 字节
  3. 以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常终止的无效帧

# 二进制指数类型退避算法

发生碰撞的站在停止发送数据,要推迟(退避)一个随机时间才能再发送数据

  1. 确定基本退避时间,一般是取为争用期 2τ
  2. 确定参数 k k = Min [重传次数,10]
  3. 从整数集合 [0,1,...,(2 的 k 次方 - 1)] 中随机抽泣一个数记为 r,重传所需的时延就是 r 倍的基本退避时间
  4. 当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告

# 强化碰撞

就是当发送数据的站一旦发生了碰撞,除了立即停止发送数据外,还要再继续发送 32 比特或者 48 比特的人为干扰信号,以便让所有用户都知道现在已经发生了碰撞

# 帧间最小间隔

9.6μs,相当于 96 比特时间,这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备

# CSMA/CD 协议要点

# 准备发送

适配器从网络层获取一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中,但在发送之前,必须先检测信道

# 检测信道

若检测到信道很忙,则应不停检测,一致等待信道转为空闲,若检测到信道空闲,并在 96 比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧

# 在发送时仍不停检测信道

网络适配器要边发送边监听

# 发送成功

在争用期内一直未检测到碰撞,这个帧肯定能够发送成功,发送完毕后,其他什么也不做,然后回到 2.10.1

# 发送失败

在争用期内检测到碰撞,这时立即停止发送数据,并按规定发送的人为干扰信号,适配器接着执行指数退避算法,等待 r 格 512 比特时间后,返回到步骤 2.10.2,继续检测信道,但若 16 次仍然不能成功,则停止重传向上报错

# 以太网的两个标准

  1. DIX Ethernet V2 是世界上第一个局域网产品(以太网)规定的
  2. IEEE 的 802.3 标准

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

  1. 为了使数据链路层更好地应用多种局域网标准,802 委员会就将局域网的数据链路层拆成两个子层
    1. 逻辑链路控制 LLC(Logical Link Control)子层
    2. 媒体接入控制 MAC(Medium Access Control)子层
  2. 与接入到传输层媒体有关的内容都放在 MAC 子层,而 LLC 子层则与传输媒体无关,不管采用何种协议的局域网对 LLC 子层来说是透明的
  3. 由于 TCP/IP 体系经常使用的局域网是 DIX Ethernet V2 而不是 802.3 标准中的几种局域网,因此现在 802 委员会指定的逻辑链路控制子层 LLC 的作用已经不大了
  4. 很多厂商生产适配器上就仅装了 MAC 协议,而没有 LLC 协议

# 使用集线器的星型拓扑

# 集线器的特点

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

image-20230721161856444

# 10Base-T

  1. 10BASE-T 的通信距离稍短,每个站到集线器的距离不超过 100m,这种 10Mb/s 速率的无屏蔽双绞线星型网的出现,既降低了成本,又提高了可靠性
  2. 10BASE-T 双绞线以太网的出现,是局域网发展史上的一个非常重要的里程碑,因为它为以太网的局域网中的统治地位奠定了牢固的基础

# 以太网的 MAC 层

# MAC 层的硬件地址 MAC 地址

在局域网中,硬件地址又称为物理地址,或 MAC 地址

802 标准所说的 "地址" 严格地讲应当是每一个站的 “名字” 或标识符

但鉴于大家早已习惯了将这种 48 位的 “名字” 和 "地址",所以本书也采用这种习惯用法,尽管这种说法并不太严格

  1. IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位 24 位)
  2. 地址字段中后三个字节(即低位 24 位)由厂家自行指派,称为扩展标识符,必须保证生产的适配器没有重复地址
  3. 一个地址块可以生成 2 的 24 次方个不同的地址,这种 48 位地址称为 MAC-48,它的通用名称是 EUI-48
  4. MAC 地址 实际上就是适配器地址或适配器标识符 EUI-48

# 适配器检查 MAC 地址

适配器从网络中每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址

  1. 如果是发往本站的帧则收下,然后再进行其他的处理
  2. 否则就将此帧丢弃,不再进行其他处理

发往本站的帧,包括一下三种帧

  1. 单播(unicast)帧(一对一)
  2. 广播(broadcast)帧 (一对全体)
  3. 多播(multicast)帧(一对多)

# MAC 帧格式

image-20230721162120123

# 无效帧

  1. 帧的长度不是整数个字节
  2. 用收到的帧检验序列 FCS 查出有差错
  3. 数据字段的长度不再 46~1500 字节之间
  4. 有效的 MAC 帧长度位 64~1518 字节之间
  5. 对于检查出的无效 MAC 帧就简单的丢弃,以太网不负责重传丢失的帧

# 帧最小间隔

帧间最小间隔为 9.6μs,相当于 96bit 的发送时间

一个站再检测到总线空闲后,还要等待 9.6μs 才能再次发送数据,这样做是为了使刚刚收到的数据帧的站的接收缓存来得及清理,做好接受下一帧的准备