数据链路层-湖科大计网

数据链路层基本概念

数据链路简的通信，可能采用不同的协议

链路

是指从一个节点到相邻节点的一段物理线路（有线或无线），而中间没有任何其他的交换节点。

数据链路

在链路上传输数据时 (物理性质上的)，除需要的链路本身，还需要一些必要的通信协议来控制数据的传输，实现这些协议的硬件和软件加到链路上 (物理实体的实现)，就构成了数据链路

比如网卡，网络适配器，和其相关的软件驱动程序就实现了这些协议。一般的网络适配器都包含了，数据链路层和物理层这两层功能

Copy 网卡(数据链路)={数据链路层物理层网卡(数据链路)= \left\{ \begin{align} &数据链路层 \\ &物理层 \end{align} \right.网卡(数据链路)={​数据链路层物理层​​

帧

数据链路层的对等实体之间在水平方向进行逻辑通信的协议数据单元 PDU

广域网局域网

WAN 广域网采用点到点链路（PPP、HDLC）

带宽大、距离远（延迟大）带宽延迟大

LAN 局域网采用多点连接（以太网，无线局域网，VLAN）

连接节点非常方便

接到共享型介质上（或网络交换机），就可以连接所有其他节点

多点接入协调各节点对共享性介质的访问和使用，考虑冲突之后的协调

数据链路层提供的服务

三个其中需要解决的问题：帧定界、透明传输、差错检测

流量控制：相邻的发送和接收方节点的速度匹配

错误检测：差错由信号衰减和噪声引起，接收方需要检测到错误，通知发出端进行重传或者丢弃帧

封装成帧和透明传输、差错检测、可靠传输

封装成帧

数据链路层向上层交付的东西，协议数据单元 PDU，给它添加一个帧头和帧尾使之成为帧

帧头和帧尾中包含有重要的控制信息。

帧头和帧尾的作用之一就是帧定界。（并 == 不是每一种数据链路层协议的帧都包含有帧定界标志 ==，如 MAC 地址适用帧间间隔方式界定帧）

== 为了提高数据链路层传输帧的效率，应当使帧的数据载荷的长度尽可能地大于首部和尾部的长度。==

考虑到对缓存空间的需求以及差错控制等诸多因素，每一种数据链路层协议都规定了帧的数据载荷的长度上限，即最大传送单元（Maximum Transfer Unit，MTU）。例如，以太网的 MTU 为 1500 个字节

封装成帧与 MAC 地址

FCS 字段
帧开始定界符
前同步码

PPP 帧

识别帧，校验帧

01m38s
前导码之间的帧间间隔：96 比特

透明传输

帧定界出错：如果在帧的数据载荷字段出现了同帧首部或尾部相同的字段，在不采取其他措施情况下，接收方的链路层会出现帧定界的错误。

透明传输是指数据链路层对上层交付的协议数据单元 PDU 没有任何限制，就好像数据链路层不存在一样

实现透明传输的方式

05m36s

字节填充 - 利用转义字符 - 面向字节的物理链路

发出方在物理层交付的比特流中，先进行扫描
把帧交付给物理层之前，对帧的数据载荷进行扫描，每出现一个帧定界符，就在其前面插入一个转义字符。接收方遇到第一个帧定界符知道是帧的开始，遇到转义字符知道其后面 1 字节内容是数据（虽然与帧定界符相同），剔除转义字符后，将其后面的内容作为数据继续提取。当再次遇到帧定界符时，为数据接收。

当帧中本身有转义字符时，在转义字符前再加一个转义字符。

转义字符是一种特殊的控制字符，长度为 1 字节，十进制值为 27，不是 ESC 这三个字符

比特填充 - 面相比特的物理链路

连续 5 个 1 后面添加 0

0 比特填充习题

差错检测

接收方如何知道出现了误码

比特差错：实际通信链路中不是理想的，比特的上传输会产生差错，1 可能会变成 0，而 0 也可能变成 1。（受到噪声干扰、传输媒体质量等因素影响）

误码率 BER（Bit Error Rate）：在一段时间内，传输错误的比特占所传输比特总数的比率称为误码率

提高链路的信噪比，可以降低误码率。但在实际的通信链路上，不可能使误码率下降为零。

差错检测检测比特差错

接收和发送方都使用相同的检错技术,，通过检错码检错

帧尾部用来存放检错码的字段，称之为帧检验序列（FCS：Frame Check Sequence）

检错码只能检测出帧在传输过程中出现了差错，但并不能定位错误，因此无法纠正错误，== 只是知道错了，不知道哪里错了 ==

要更进一步地 == 纠错 ==，可以使用冗余信息更多的纠错码（如海明码）进行前向纠错。但纠错码的开销比较大，在计算机网络中较少使用

可以适用纠错重传方式来纠正传输中的差错，或仅仅丢弃检测到差错的帧

重传，称之为可靠传输服务

丢弃，不可靠传输服务

奇偶校验

02m18s

奇校验是在待发送的数据后面添加 1 个校验位，使得添加该校验位后的整个数据中比特 1 的个数为奇数。
偶校验是在待发送的数据后面添加 1 个校验位，使得添加该校验位后的整个数据中比特 1 的个数为偶数

在所传输的数据中，如果有奇数个位发生误码，则所包含比特 1 的数量的奇偶性会发生改变，可以检测出误码。

在所传输的数据中，如果有偶数个位发生误码，则所包含比特 1 的数量的奇偶性不会发生改变，无法检测出误码（漏检）。

在实际使用时，奇偶校验又可分为垂直奇偶校验、水平奇偶校验以及水平垂直奇偶校验

循环冗余校验

05m43s
数据链路层广泛使用漏检率极低的循环冗余校验（Cyclic Redundancy Check，CRC）检错技术，非常容易用硬件实现，所以广泛运用于数据链路层。

收发双方约定好一个生成多项式 G(X)。

发送方基于待发送的数据和生成多项式 G (X)，计算出差错检测码（冗余码），将冗余码添加到待发送数据的后面一起传输。

接收方收到数据和冗余码后，通过生成多项式 G (X) 来计算收到的数据和冗余码是否产生了误码。

生成多项式

关于余数

能凑出和除数相同的位数时，称之为够除，此时上面标记为 1
不能凑出来时，称之为不够除，此时上面标记为 0
10m03s

可靠传输

有线链路与无线链路提供的服务不同

有线链路：误码率低，不要求链路层提供可靠传输，由上层进行误码处理。

一般情况下，有线链路的误码率比较低。为了减小开销，并不要求数据链路层向其上层提供可靠传输服务。即使出现了误码，可靠传输的问题由其上层处理。

在低差错链路（链路本身很可靠）上很少使用 （光纤，一些双绞线）：以太网

无线链路：误码率高，链路层必须提供可靠传输

易受干扰，误码率比较高，因此要求数据链路层必须向其上层提供可靠传输服务。

在高差错链路上需要进行可靠的数据传送：无线局域网

ARQ 协议

自动重传协议
是 OSI 模型中数据链路层和传输层的错误纠正协议之一

分类

停止等待 ARQ 协议：停止等待协议

连续 ARQ 协议（结合了窗口机制）：回退 N 步协议和选择重传协议

ARQ 到底运行在哪一层？

==ARQ 是一种可以在不可靠的数据通道上可靠地传输数据的方案 ==，所以其实链路层和传输层都用了 ARQ，并不专属某一层。

并不是一条连接只要有一层用了 ARQ，它的上层的通信就是可靠的。因为 ARQ 只保证使用它的点到点是可靠的，比如数据链路层只保证你和你的路由器通信可靠，你的路由器到小区的路由器通信也可靠，但是路由器本身会故障，会拥塞丢包，也就是点本身会产生问题。

所以需要在传输层或者应用层再加一层 ARQ 保障整条数据通道的可靠性。比如你自己写程序要在应用层通信，但传输层不用 tcp 想用 udp，也可以在你程序里用 ARQ 协来实现可靠性。

传输差错的类别

各层次传输是否可靠

可靠传输服务并不仅局限于数据链路层，其他各层均可选择实现可靠传输。
可靠传输的实现比较复杂，开销比较大，是否使用可靠传输取决于应用需求

可靠传输的机制（三类）

停止 - 等待协议 （Stop-and-Wait） SW---ARQ 的一种

01m08s

机制：确认与否认、重传、超时重传、给数据分组编号、给确认分组编号

发送方给接收方发送一个数据分组，接收方收到后对其进行差错检测，若没有检测出误码，则接受该数据分组并给发送方发送确认分组。简记为 ACK。发送方收到对所发送数据分组的确认分组号，才能发送下一个数据分组。假设这个数据分组在传输过程中出现了误码，接收方收到后对其进行差错检测，出了物码则丢弃该数据分组，并给发送方发送否认分组，简记为 NAK。
发送方收到对所发送数据分组的否认分组后，就知道了自己之前所发送的数据分组出现了物码而被接收方丢弃，于是立刻重传该数据分组。接收方收到后对其进行差错检测，若没有检测出误码，则接受该数据分组，并给发送方发送确认分组，== 因此发送方每发送来一个数据分组后，并不能立刻将该数据分组从发送缓存中删除，因为之后有可能需要重传该数据分组。== 只有在收到针对该数据分组的确认分组后，才能将其从发送缓存中删除。

更复杂的 SW

04m48s
发送方发出时出现了丢失
点对点的数据链路层里其实不太能出现丢失的情况
但是复杂的拓扑互联网络里，路由之间可能是会的

发送方可在每发送完一个数据分组时，就启动一个超时计时器。若到了超时计时器所设置的超时重传时间 RTO，但发送方仍未收到接收方的确认分组或否认分组，就重传之前已发送过的数据分组。如图所示，== 这段时间是收发双方之间的平均往返时间 RTT==，一般可将超时重传时间 RTO 设置为略大于收发双方的平均往返时间 RTT。当发送方的超时计时器出现超时，就立刻重传之前已发送的数据分组。接收方若正确接收到重传的数据分组，就给发送方发送相应的确认分组，发送方收到后就可以发送下一个数据分组了。接收方若正确接收到该数据分组，就给发送方发送相应的确认分组。至此，我们再确认、否认和重传这两种机制的基础上，又给停止等待协议添加了超时重传机制。

==确认分组丢失==
确认分组在传输过程中丢失了，这必然会造成 == 发送方的超时重传 ==，这样 == 接收方就会收到两个相同的数据分组 ==。如果接收方不能 == 识别出所接收的数据分组与前一次接收的数据分组是重复的 ==，则会 == 导致分组重复这种传输差错 ==。为了 == 避免分组重复这种传输错误 ==，必须给 == 每个分组带上序号 ==。如图所示，对于停止等待协议，由于 ==每发送完一个数据分组就进行停止等待==，只要保证 == 每发送一个新的数据分组，其序号与上次发送的数据分组的序号不同 == 就可以了。因此，用一个比特来编号就够了，携带序号 0 或 1，这两个接收方连续收到序号相同的数据分组时，就可识别出分组重复这种传输差错。这时，接收方应当丢弃重复的数据分组，并且还必须向发送方再发送一个确认分组。发送方收到后，可以给接收方发送下一个数据分组，其序号与上一个数据分组的序号是不同的，接收方若正确接收到该数据分组，就给发送方发送相应的确认分组。至此，我们在确认、否认和重传、超时重传这三种机制的基础上，又给停止等待协议添加了给数据分组编号的机制

每个分组编号，携带标识，保证只会收到一次，不会因为重传收到两次

==确认分组的编号问题==
发送方发送 0 号数据分组，接收方正确接收后，给发送方发送确认分组，由于某种原因，该确认分组迟到了，这必然会导致发送方对 0 号数据分组的超时重传。在 0 号数据分组的重传过程中，发送方收到了迟到的确认分组，于是给接收方发送 1 号数据分组，接收方收到重传的 0 号数据分组，根据序号可知这是重复的数据分组将其丢弃，并针对 0 号数据分组再发送一个确认分组，这样发送方就会收到两个针对 0 号数据分组的确认。然而，发送方会将第二个针对 0 号数据分组的确认误认为是针对 1 号数据分组的确认。如果给确认分组也编上序号，发送方就可以知道这是对 0 号数据分组的重复确认，忽略即可。接收方正确收到 1 号数据分组后，给发送方发送针对 1 号数据分组的确认，分组确认号为 1，发送方收到后给接收方发送下一个数据分组，序号为 0。请同学们注意，这个 0 号数据分组与之前的 0 号数据分组不是同一个数据分组，接收方正确接收号，给发送方发送相应的确认分组确认号为 0。

注意事项，总结：

SW 的信道利用率

11m33s

横坐标为时间。为了简单起见，假设收发双方之间是一条直通的信道，发送方发送完一个数据分组后就停止发送，并等待接收方对该数据分组的确认。当收到确认分组后，可以发送下一个数据分组，如此反复进行。这一段时间是发送方发送数据分组所耗费的发送时延，即为 TD。这一段时间是信号在收发双方之间往返传播所耗费的时间，记为 RTT。
这一段儿时间是接收方发送确认分组所耗费的发送时延，记为 TA，这是使用停止等待协议的发送方从发送一个数据分组开始到可以发送下一个数据分组为止所经历的总时间。由于仅仅是在时间 TD 内才用来传送有用的数据，也就是数据分组，因此信道利用率优，可用下式来计算， TA 一般都远小于 TD，这是因为确认分组的长度一般都远小于数据分组的长度，因此 TA 可以忽略。
当信号在收发双方之间往返传播所耗费的时间 RTT 远大于数据分组的发送时间。 TD 时，例如地球同步卫星链路的 RTT 就很大。如果我们使用这样的链路而要发送的数据分组又很小且发送速率很大时，信道利用率就会很低。当 RTT 远小于数据分组的发送时间 TD 时，例如无线局域网的 RTT 一般远小于 TD，此时的信道利用率还是比较高的。需要说明的是，上述推导未考虑出现超时重传的情况，若出现超时重传，对于传送有用的数据信息来说，信道利用率还要降低。
综上所述，== 在往返时间 RTT 相对较大的情况下，为了提高信道利用率，收发双方不适合采用停止等待协议 ==，而可以选择使用回退 n 真协议或选择重传协议。

例题
14m13s

总结

回退 N 帧协议 GBN

00m37s
sw 协议中，我们发送一次就要等待接收一次，每次的操作都是 1 对 1 的，这样是低效的，GBN 的想要一次发送多个分组，这多个分组被统一确认，就不用一趟一趟的跑了

在使用流水线传输方式时，发送方不能无限制地连续发送数据分组，否则可能会导致网络中的路由器或接收方来不及处理这些数据分组，进而导致数据分组的丢失，这实际上是对网络资源的浪费。(限制发送数量）

回退 N 帧协议采用流水线传输方式，并且利用发送窗口来限制发送方连续发送数据分组的数量，这属于连续 ARQ 协议。

采用 n 个比特给分组编序号，范围是 0- 2^n-1。本例假设采用 3 个比特给分组编序号，则序号范围是 0- 7。当序号增加到 7 时，下一个序号又从 0 开始

发送方的发送窗口和接收方的接收窗口按上述规则不断向前滑动，因此这类协议又称为滑动窗口协议

无传输差错

06m03s

传输出错，回退 n 帧
07m33s
接收到的就变绿，哪里丢失哪里停，收到几个，蓝色窗口移动几格

一旦出错，就要退回去重传已发送过的 N 个数据分组

12m17s 举例说明

发送窗口与接收窗口

当发送窗口 Wt 超过取值范围时

例题
18m04s

选择重传协议 SR

和前两种对比

为了使发送方仅重传出现差错的数据分组，接收方 ==不再采用累积确认==，而需要对每一个正确接收的数据分组进行逐一确认

Wr 不再等于 1，以便 == 接收方先收下失序到达但无误码且序号落在接收窗口内的那些数据分组 ==，等到所缺分组收齐后，再一并送交上层。

举例说明
03m47s
逻辑的关键在于，这个方式，会刻意等一下，只单独发送没收到的那个确认一遍，牺牲了一点偶发的错误里的问题，保证了整体上的稳定性

例题：
09m48s
哪个没收到就返回哪个没收到

点对点协议 PPP

点对点协议（Point-to-Point Protocol，PPP）是目前使用 ==最广泛== 的点对点 == 数据链路层协议 ==

应用现状

个人用户计算机，通过 PPP 连接到某个 ISP，进而进入因特网，个人用户与 ISP 的通信，在数据链路层，一般就是 PPP（PPPoE 是可在以太网上工作的协议，使得 ISP 可以通过数字用户路线调制解调器及以太网等宽带接入技术，以以太网接口的形式，为用户提供接口服务）

广域路由器之间的专用线路

PPP 的构成

对各种协议数据报的封装方法（封装成帧）

链路控制协议 LCP

用于建立、配置以及测试数据链路的连接

一套网络控制协议 NCPs

其中的 == 每一个协议支持不同的网络层协议 ==

PPP 帧的格式

PPP 解决透明传输问题，数据部分出现了帧的标识

面向字节的异步链路（字节是基本信息单位）

使用字节填充法，插入转义字符

面向比特的同步链路（比特是基本信息单位）

比特填充法，插入 0

面向字节的异步链路透明传输

面向比特的同步链路

比特填充，插入 0，之前的也是这么做的

PPP 帧的差错检测

尾部的 FCS 字段进行帧检验
使用循环冗余校验

接收方每收到一个 PPP 帧，就进行 CRC 检验。

若 CRC 检验正确，就收下这个帧；否则，就丢弃这个帧。

使用 PPP 的数据链路层，向上提供的是不可靠数据传输服务。

以拨号接入为例的 PPP

10:15
开始和结束都是静止状态

以太网

数据通信的三种方式

[[单播]]：一对一通信

[[广播]]：一对所有通信，发出的信息要送达所有人

== 局域网主要采用共享信道 == 的方式来进行通信，主要采取的方式是广播

以太网、无线局域网

[[组播]]：一对一个组的通信，一个信息发送给一个特定的组的用户

局域网与广域网中链路层不同

介质访问控制：解决数据在信道传输过程中的冲突问题

局域网中，所有节点共享信道

广域网中，点对点没有信道共享，没有冲突，不需要介质访问控制

点对点数据链路 (广域网) 控制（拨号链路）

无需介质访问控制

无需明确的 MAC 寻址

常见协议：HDLC、PPP

分配信道的两种方式

信道静态分配

按照某种方式，预先分配给各用户，不同用户使用情况不同

如：频分复用、时分复用

只要一个用户得到了自己的，就不会和别人冲突了

信道动态分配

多个用户共用一条线路，信道按照需求动态的分配给用户（采用多路访问协议 Multiple access protocol）信道不需要提前分配，信道是开放的

随机访问

特点：站点或用户来争用信道，可能会出现冲突

典型随机访问协议：ALOHA 协议、CSMA 协议、CSMA/CD 协议 (共享式以太网采用)

（有序的）受控访问协议 —— 依次访问

特点：站点被明确地分配，不会出现冲突

如 Token (令牌）方式

特殊情况下细分链路层处理信道

广播多路访问链路（局域网）：由于可能存在介质争用
还可能被细分为

介质访问控制子层

介质访问控制（MAC）子层专职处理介质访问的争用与冲突问题

逻辑链路控制子层

数据链路层的主要协议

点对点协议（Point-to-Point Protocol）

以太网（Ethernet）

高级数据链路协议（High-Level Data Link Protocol）HDLC 协议

帧中继（Frame Relay）

异步传输模式（Asynchronous Transfer Mode）

局域网的常用标准（以太网是有限局域网）

IEEE 802.1 是一组协议的集合：

IEEE 802.1q 定义 VLAN 标记协议；IEEE 802.1s 定义多生成树协议；

802.2LLC：基本不用

DIX EThernet V2 以太网：不需要 LLC 子层。因为其实现的是无连接的数据包传输服务

802.3 局域网：简称为以太网 (采用 CSMA/CD 访问控制方式)

802.5 令牌环网

802.4 令牌总线网等

802.11 无线局域网：工作方式采用 DCF（分布控制）和 PCF（中心控制）

以太网

以太网的 MAC 层中没有流控，ARQ 和纠错码功能的。(这样能非常容易和高效地实现以太网硬件，大幅降低成本。也正是因为便宜够用，以太网才会如此流行。)

这样设计合理的关键前提是 Wired，以及 LAN，这样的物理环境决定了误码率非常低。单跳传输很少出错，如果出错，以太网会直接把包吞掉，由上层自己探测丢包和重传。

当然，上层重传的开销是远大于链路层重传的。例如，让 TCP 做重传，低效的地方在于，一是端到端的重传明显消耗更多的网络容量，因为会走很多跳；二是 TCP 检测的时机不如链路层及时，导致重传的触发往往是滞后的，影响了传输性能。

如果把目光移到 WAN 和无线网络上，数据链路层就复杂得多。这个时候，长距离通信、无线信道都会导致误码率蹭蹭上升，如果数据链路层不做可靠传输，靠上层太过低效。例如 802.11 就有流控。如果是 3 G、4 G 这样的移动通信，会更复杂。

共享式以太网

以太网最初采用无源电缆（不包含电源线）作为共享总线来传输帧，属于基带总线局域网，传输速率为 2.94Mb/s。（有使用共享总线的共享式以太网和使用集线器的共享式以太网）

以太网目前已经从传统的共享式以太网发展到交换式以太网，传输速率已经从 10Mb/s 提高到 100Mb/s、1Gb/s 甚至 10Gb/s。

以太网是目前应用最普遍的局域网技术，取代了其他局域网技术如令牌环、FDDI 和 ARCNET。（以太网只是局域网技术的一种）

网络适配器

网卡与 CPU 之间的通信，走的是主板上的 I/O 总线，以并行传输方式进行

网卡与外部以太网（局域网）之间的通信，一般 == 通过传输媒体 ==（同轴电缆、双绞电缆、光纤）== 以串行方式进行 ==

除了实现物理层和数据链路层的功能之外，还要进行

并行传输和串行传输的转换

由于网络的传输速率和计算机内部总线上的传输速率并不相同，因此在网卡的核心芯片中都会包含用于缓存数据的存储器

网卡驱动程序 == 负责驱动网卡发送和接收帧 ==

MAC 地址

当多个主机连接在同一个广播信道上，要想实现两个主机之间的通信，则 == 每个主机都必须有一个唯一的标识，即一个数据链路层地址 ==。（让计算机的网卡能够判别数据帧是否发送给自己）

在每个主机发送的帧的首部中，都携带有发送主机（源主机）和接收主机（目的主机）的数据链路层地址。由于这类地址是用于媒体接入控制（Medium Access Control，MAC）的，因此被称为 MAC 地址

MAC 地址一般被固化在网卡的电可擦可编程只读存储器 EEPROM 中，因此 MAC 地址也被称为硬件地址。

MAC 地址有时也被称为物理地址。（使用 ipconfig/ip 命令查看 TCP/IP 配置信息 )

不要被物理地址中的 “物理” 二字误导，误认为物理地址属于网络体系结构中物理层的范畴。(物理地址属于数据链路层范畴。)

==MAC 地址是针对接口的唯一标识==

MAC 地址的格式

蓝牙也占用 mac 地址

IEEE 802 局域网的 MAC 地址发送顺序

单播广播 MAC 地址实例

17:31
注意接收和接受的区别

网卡从网络上每收到一个帧，就检查帧首部中的目的 MAC 地址，按以下情况处理：
（1）如果目的 MAC 地址是广播地址（FF-FF-FF-FF-FF-FF），则接受该帧。
（2）如果目的 MAC 地址与网卡上固化的全球单播 MAC 地址相同，则接受该帧。

全球单播 MAC 地址就如同身份证上的身份证号码，具有唯一性，它往往与用户个人信息绑定在一起。因此，用户应尽量确保自己拥有的全球单播 MAC 地址不被泄露。

为了避免用户设备连接 Wi-Fi 热点时 MAC 地址泄露的安全问题，目前大多数移动设备都已经采用了随机 MAC 地址技术。

（3）如果目的 MAC 地址是网卡支持的多播地址，则接受该帧。

（4）除上述（1）、（2）和（3）情况外，丢弃该帧。

CSMA/CD 协议的基本原理

目的在于，总线上要是有很多信息同时流通，所有人走在一起就容易遇到碰撞上的问题

共享总线以太网具有天然的 == 广播特性 ==，即使总线上 == 某个站点给另一个站点发送单播帧 ==，表示帧的 == 信号也会沿着总线传播到总线上的其他 == 各站点。

当某个站点在总线上发送帧时，== 总线资源会被该站点独占 ==。此时，如果总线上的 == 其他站点也要在总线发送帧 ==，就会产生信号 == 碰撞 ==。

当两个或多个站点同时使用总线发送帧时，就会产生信号碰撞。

为了解决各站点争用总线的问题，共享总线以太网使用了一种专用协议 **CSMA/CD，它是载波监听多址接入 / 碰撞检测（Carrier Sense Multiple Access Collision Detection）的英文缩写词。

载波监听检测到总线空闲，但总线并不一定空闲。

使用 CSMA/CD 协议的共享总线以太网上的各站点，只是尽量避免碰撞并在出现碰撞时做出退避后重发的处理，但不能完全避免碰撞。

在使用 CSMA/CD 协议时，由于正在发送帧的站点必须 “边发送帧边检测碰撞”，因此 == 站点不可能同时进行发送和接收 ==，也就是不可能进行全双工通信，而只能进行半双工通信（双向交替通信）

CDMA（Code Division Multiplex Access）是码分多址的英文缩写词。 CDMA 的每个用户可以在相同的时间使用相同的频带进行通信

TDMA（Time Division Multiplex Access）是时分多址的英文缩写词。

时分复用的所有用户在不同的时间占用相同的频带。

FDMA（Frequency Division Multiplex Access）是频分多址的英文缩写词。频分复用的所有用户同时占用不同的频带资源

CSMA 属于争用型的媒体接入控制协议，连接在同一媒体上的多个站点使用该协议以竞争方式发送数据帧，可能出现冲突（也称为碰撞）。

TDMA、FDMA、CDMA 是常见的物理层信道复用技术，属于静态划分信道，用于多用户共享信道，不会发生冲突。

共享式以太网的征用期

使用 CSMA/CD 协议的共享总线以太网上的任意站点在发送帧的过程中都可能会遭遇碰撞。某个站点从发送帧开始，最长要经过多长时间，才能检测出自己发送的帧与其他站点发送的帧产生了碰撞？

A：应当考虑位于共享总线以太网两端的两个站点发送的帧产生碰撞的情况

例题：

共享式以太网的最小帧长和最大帧长

最小帧长：64 B

最小帧长 = 总线传播时延 * 数据传输速率 * 2（最短帧长为 64 B，未到则填充）

最大帧长：1518 B

帧太长会让总线一直忙，且对接收方主机的缓冲区大小有要求

例题：

共享式以太网的退避算法

https://www.bilibili.com/video/BV1rd4y1P7Zh?t=3.6
在使用 CSMA/CD 协议的共享总线以太网中，正在发送帧的站点一边发送帧一边检测碰撞，当检测到碰撞时就立即停止发送，退避一段随机时间后再重新发送。

共享总线以太网中的各站点采用截断二进制指数退避（Truncated Binary Exponential Backoff）算法来选择退避的随机时间。

如果连续多次发送碰撞，就表明可能有较多的站点参与竞争信道。但使用上述退避算法可使重传需要推迟的平均时间随重传次数而增大（即动态退避），因而减小产生碰撞的概率。

当重传达 16 次仍不能成功时，就表明同时打算发送帧的站点太多，以至于连续产生碰撞，此时应放弃重传并向高层报告。

A. 当重传次数 k <= 10 时，选择 k 和 10 的最小值；当 k ＞ 10 时，选择 k = 10

B. 从 0，1，2，3... 2^k - 1 中随机选择一个数 n，重传时间为 n 倍的基本退避时间，即 2τn

C. 重传到 16 次时，抛弃该帧，并向高层报错

共享式以太网的信道利用率

使用集线器的共享式以太网

以太网发展出来了一种使用大规模集成电路来替代总线、并且可靠性非常高的设备，叫作集线器（Hub）。

站点连接到集线器的传输媒体也转而使用更便宜、更灵活的双绞线电缆

共享总线型以太网和星型拓扑以太网

物理拓扑结构不同，但是本质上是一样的，工作逻辑相同，使用 CSMA/CD 协议共享（争用）网络资源

10BASE-T 星型以太网

物理层拓展以太网

扩展站点与集线器之间的距离

同轴电缆的共享总线以太网，为了扩大距离用的是转发器

双绞线的集线器共享以太网：每个站点到集线器的距离小于 100m，使用光纤调制解调器扩展距离

扩展共享式以太网的覆盖范围和站点数量

如果不同的碰撞域使用不同的数据率，则不同通过集线器将它们连接起来

数据链路层扩展以太网（408 不考）

使用网桥

网桥（bridge）工作在数据链路层（包含其下的物理层），因此网桥具备属于数据链路层范畴的相关能力。
网桥可以识别帧的结构。
网桥可以根据帧首部中的目的 MAC 地址和网桥自身的帧转发表来转发或丢弃所收到的帧。
可连接不同物理层、不同 MAC 子层和不同速率的局域网
使用存储转发，增加了时延
具有不同 MAC 字子段的网桥段连接在一起时延更大
在 MAC 子层没有流量控制的功能
只适合用户数不多、通信量不大的局域网，否则会因为传播信息过多而发生网络拥塞

网桥的主要结构和基本工作原理

03m20s

举例：

转发广播帧

透明网桥的自学习和转发帧的流程

透明网桥（Transparent Bridge）通过自学习算法建立转发表。

透明网桥中的 “透明”，是指以太网中的各站点并不知道自己所发送的帧将会经过哪些网桥的转发，最终到达目的站点。也就是说，以太网中的各网桥对于各站点而言是看不见的。

透明网桥的标准是 IEEE 802.1 D，它通过一种自学习算法基于以太网中各站点间的相互通信逐步建立起自己的转发表。

丢弃：当转发表中的接口就是该帧进入网桥的接口，则丢弃该帧

透明网桥的生成树协议

环状的结构中，广播帧或者没有目的地址的单播帧会在环路中永久兜圈的问题

交换式以太网（全双工）

网桥的接口数量很少，通常只有 2~4 个，一般只用来连接不同的网段

== 以太网交换机 == 解决这个问题，== 实质上是具有多个接口的网桥 ==，也称之为交换式集线器 (Switching Hub)，或者叫二层交换机

二层是指，以太网交换机工作在数据链路层（包括物理层）这二层

与网桥相同，交换机内部的转发表也是通过自学习算法，基于网络中各主机间的通信，自动地逐步建立起来的

另外，交换机也使用生成树协议 STP，来产生能够连通全网但不产生环路的通信路径

仅使用交换机（而不使用集线器）的以太网就是交换式以太网。

02m13s
网桥可以隔离碰撞域

以太网交换机

交换机的每个接口可以连接计算机，也可以连接集线器或另一个交换机。 （三种连接方式）

当交换机的接口与计算机或交换机连接时，可以工作在全双工方式，并能在自身内部同时连通多对接口，使每一对相互通信的计算机都能像独占传输媒体那样，无碰撞地传输数据，这样就不需要使用 CSMA/CD 协议了。

当交换机的接口连接的是集线器时，该接口就只能使用 CSMA/CD 协议并只能工作在半双工方式。

现在的交换机和计算机中的网卡都能自动识别上述两种情况，并自动切换到相应的工作方式。

交换机一般都具有多种速率的接口，例如 10 Mb/s、100 Mb/s、1 Gb/s 甚至 10 Gb/s 的接口，大部分接口支持多速率自适应。

交换机自学习和转发帧

03m06s

交换机中没有目的地址就盲目的广播发送，由目的地址就找对应端口发送

以太网交换机是一种即插即用设备，刚上电启动时其内部的帧交换表是空的。随着网络中各主机间的通信，以太网交换机通过自学习算法自动逐渐建立起帧交换表。

例题：

交换机的存储转发与直通交换方式

一般的交换机都采用 “存储转发” 方式，为了减小交换机的转发时延，某些交换机采用了直通（CutThrough）交换方式。

采用直通交换方式的交换机，在接收帧的同时就立即按帧的目的 MAC 地址决定该帧的转发接口，然后通过其内部基于硬件的交叉矩阵进行转发，而不必把整个帧先缓存后再进行处理。

直通交换的时延非常小。

直通交换不检查差错就直接将帧转发出去，有可能会将一些无效帧转发给其他主机。

共享式以太网与交换式以太网的对比（集线器与交换机的区别）

00m31s

区别 1：工作层次

集线器工作在物理层，属于 1 层设备，每发送一个数据，所有的端口均可以收到，采用了广播的方式，因此网络性能受到很大的限制。

交换机工作在数据链路层，属于 2 层设备，通过学习之后，每个端口形成一张 MAC 地址转发表，** 根据数据包的 MAC 地址转发数据，而不是广播形式。

区别 2：转发方式

集线器的工作原理是广播形式，无论哪个端口收到数据之后，都要广播到所有的端口，当接入设备比较多时，网络性能会受到很大的影响。（是同一个广播域)）

交换机根据 MAC 地址转发数据，收到数据包之后，检查报文的目的 MAC 地址，找到对应的端口进行转发，而不是广播到所有的端口。(当目的地址使用 FF-FF-FF-FF-FF-FF 的广播地址时，是广播帧，是同一个广播域)

区别 3：传输模式

集线器内部采用了总线型拓扑，各个节点共用一条总线进行通信，数据包的发送和接收采用了 CSMA/CD 协议，在同一时间内必须是单向的，只能维持在半双工模式下。两个端口不能同时收发数据，并且当两个端口通信时，其他端口不同工作。（会产生碰撞）

当交换机上的两个端口通信时，它们之间的通道是相互独立的，可以实现全双工通信。两个端口同时收发数据。（不会产生碰撞）

区别 4：带宽影响

集线器无论有多少个端口，所有的端口共享一条宽带，同一时刻只能有两个端口传输数据，并且只能工作在半双工模式下。

区别 5：使用集线器和交换机连接两个独立的共享式以太网

交换式以太网的网络性能远高于共享式以太网，集线器早已被交换机取代。

广播域与冲突域

广播域：广播域是一个逻辑上的计算机组，该组内所有成员都会收到同样的广播信息。

冲突域： 在同一个网络内，如果任意两台计算机在同时通信是会发生冲突， 那么它们所组成的网络就是一个冲突域。

所有直接连接在一起的，而且经过以太网总线的节点都可以认为是处在同一个冲突域中。

例如 hub 下，所有的终端都是共用一条链路的，所以同一时间甚至能某一个设备发送的数据包来占用这条链路，这就叫冲突域。

两者联系

冲突域是基于第一层（物理层），而广播域是基于第二层（数据链路层） 。

广播域就是说，如果站点发出一个广播信号后能接收到这个信号的范围，就是一个广播域。冲突域是一个站点向另一个站点发出信号，除目的站点外，有多少站点能收到这个信号，这些站点就构成一个冲突域。

HUB 所有端口都在同一个广播域，冲突域内。

Switch（二层交换机）所有端口都在同一个广播域内，而每一个端口就是一个冲突域。

二层交换可以隔离冲突域（当然路由器也能），路由器可以隔离广播域（划分 vlan 也可以），还可以隔离二层广播风暴。

以太网的 MAC 帧格式（没有重传机制）

00m05s

物理层添加 8 个字节的前导码 (可以实现时钟同步)

接收方可能收到的无效 MAC 帧包括以下几种：

MAC 帧的长度不是整数个字节

通过 MAC 帧的 FCS 字段的值检测出帧有误码

MAC 帧的长度不在 64~1518 字节之间

接收方收到无效的 MAC 帧时，就简单将其丢弃，** 以太网的数据链路层没有重传机制。

虚拟局域网 VLAN

连接而成的巨大广播域会带来的问题：

广播风暴：广播风暴会浪费网络资源和各主机的 CPU 资源

难以管理和维护，带来潜在的安全问题

TCP/IP 协议栈中的很多协议都会使用广播：

地址解析协议 ARP

路由信息协议 RIPv1

动态主机配置协议 DHCP

NetBEUI：Windows 下使用的广播型协议（广播）

IPX/SPX：Novell 网络的协议栈（广播）

Apple Talk：Apple 公司的网络协议栈（广播）

想要隔离广播域

分割广播域的方法：

使用路由器可以隔离广播域（成本较高）

虚拟局域网技术应运而生

** 虚拟局域网（Virtual Local Area Network，VLAN）：是一种将局域网内的站点划分成与物理位置无关的逻辑组的技术，一个逻辑组就是一个 VLAN，VLAN 中的各站点具有某些共同的应用需求。

属于同一 VLAN 的站点之间可以直接进行通信，而不同 VLAN 中的站点之间不能直接通信。

网络管理员可对局域网中的各交换机进行配置来建立多个逻辑上独立的 VLAN。

连接在同一交换机上的多个站点可以属于不同的 VLAN，而属于同一 VLAN 的多个站点可以连接在不同的交换机上

虚拟局域网 VLAN 并不是一种新型网络，它只是局域网能够提供给用户的一种服务

VLAN 的实现机制

基于以太网交换机的接口来实现，以太网的接口必须得满足这样的条件：

能够处理带有 VLAN 标记的帧，也就是 IEEE 802.1Q 帧。

交换机的各接口可以支持不同的接口类型，不同接口类型的接口对帧的处理方式有所不同。

IEEE 802.1 Q 帧

从 MAC 帧上扩展而来
== 在源地址字段和类型字段之间插入了 4 字节的 VLAN 标签（tag）字段 ==

802.1Q 帧一般不由用户主机处理，而是由以太网交换机来处理：

当交换机收到普通的以太网 MAC 帧时，会给其插入 4 字节的 VLAN 标签使之成为 802.1Q 帧，该处理简称为 “打标签”。

当交换机转发 802.1 Q 帧时，可能会删除其 4 字节的 VLAN 标签使之成为普通的以太网 MAC 帧，该处理简称为 “去标签”。交换机转发 802.1 Q 帧时也有可能不进行 “去标签” 处理，是否进行 “去标签” 处理取决于交换机的接口类型。

以太网交换机的接口类型

根据接口在接收帧和发送帧时对帧的处理方式的不同，以及接口连接对象的不同，以太网交换机的接口类型一般分为 Access 和 Trunk 两种。

Access 和 Trunk 区别：

Access 口只接收无 VID 的数据包。

比如说，一台 PC 通过线缆和这个交换机的端口相连，然后发送数据来到端口处，此时，端口收到的就是一个没有 VID 的数据包，再根据自己的 PVID，给这个帧打标签上同属于自己的标记

access 口发送数据包时对所有数据包去除 VID，而 trunk 口只对与自己端口的 PVID 相等的数据包去除 VID，其它则直接转发

收到了带了标签的（PVID）的帧，access 口先把这个帧里 VID 的值拿出来看一眼，去标签转发

07m26s

Trunk 端口

一般是交换机和交换机之间连接的端口，A 口是 PC 连交换机的口

例题 14m35s

例题

以太网

100 BASE-T 以太网

千兆以太网

万兆网和 40/100 吉比特

08m15s

802.11 无线局域网（WIFI）的组成

有固定基础设施的

关联服务：

移动站和 AP 建立关联，AP 是整个核心，移动站和 AP 建立关联有两种方法

被动扫描：移动站被动等待接收信标帧（Beacon Frame）

主动扫描：移动站主动发出探测请求帧，AP 发出探测响应帧

重建关联（Reassociation）服务和分离（Dissociation）服务（== 也就是折腾路由器里非常经典的漫游 mesh 功能 ==）

如果一个移动站要把与某个接入点 AP 的关联转移到另一个 AP，就可以使用重建关联服务；若要终止关联服务，就应使用分离服务

无固定基础设施的 —— 自组织网络（ad hoc Network）

802.11 无线局域网的 ad hoc 模式允许网络中的各站点在其通信范围内直接通信，也就是支持站点间的单跳通信，而标准中并没有包括多跳路由功能。因此，802.11 无线局域网的 ad hoc 模式应用较少

802.11 无线局域网的物理层

近年来推出的标准
802.11 ax 也就是 wifi 6

802.11 无线局域网使用 CSMA/CA 协议的原因

802.11 无线局域网采用了 ==CSMA/CA 的协议 ==，也就是载波监听多址接入 / 碰撞避免（Carrier Sense Multiple Access/Collision Avoidance，CSMA/CA）

以 “先听后说” 的方式来减少碰撞的发生，但是将 “碰撞检测 CD” 改为了 “碰撞避免 CA”（但并不能避免所有的碰撞，而是尽量减少碰撞发生的概率）

CSMA/CA 协议的基本原理

发送方发送的时候先侦查，信道的空闲持续时间有 DIFS 这么长，DIFS 这么都是空闲的，那么就发送帧

DCF 分布式协调功能

这个功能的核心就是等待 DIFS 这一段

DCF 帧间间隔 ==DIFS 的长度为 128us==，在 DCF 方式中，DIFS 用来发送数据帧和管理帧。

在 DCF 方式下， 没有中心控制站点，每个站点使用 CSMA/CA 协议通过争用信道来获取发送权。DCF 方式是 802.11 定义的默认方式（必须实现）。

源站等待 DIFS 间隔是考虑到可能有其他的站有高优先级的帧要发送。

== 设置 DIFS 间隔的目的↑==

短帧间间隔

这个间隔的目的是给发送端，切换成，接收确认信号用的
长度为 28us，它是最短的帧间间隔，用来分隔开属于一次对话的各帧。一个站点应当能够在这段时间内从发送方式切换到接收方式。使用 SIFS 的帧类型有 ACK 帧、CTS 帧等

CSMA/CA 协议 - 使用停止 - 等待协议

由于无线信道的误码率较高，CSMA/CA 协议还需要使用停止 - 等待的确认机制来实现可靠传输，这与使用 CSMA/CD 协议的共享式以太网不同

具体实现就是：设置了随机退避算法，给了一段随机退避时间

CSMA/CA 协议的退避算法

当某个站要发送数据帧时，仅在这种情况下才不使用退避算法：检测到信道空闲，并且该数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧。除此之外的以下情况，都必须使用退避算法：

在发送帧之前检测到信道处于忙态

在每一次重传一个帧时

在每一次成功发送帧后要连续发送下一个帧时

源站对信道进行预约

RTS（Request To Send）帧是短的控制帧，它包括源地址、目的地址和本次通信（包括目的站发回确认帧所需的时间）所需的持续时间。

(若 RTS 帧发生碰撞，源站就不可能收到 CTS 帧，源站会执行退避算法重传 RTS 帧。)

RTS（Request To Send）帧是短的控制帧，它包括源地址、目的地址和本次通信（包括目的站发回确认帧所需的时间）所需的持续时间。

除源站和目的站的其他各站，在收到 CTS 帧或数据帧后就推迟访问信道。这样就确保了源站和目的站之间的通信不会受到其他站的干扰。

由于 RTS 帧和 CTS 帧都会携带通信需要持续的时间，这与之前介绍过的数据帧可以携带通信所需持续时间的虚拟载波监听机制是一样的，因此使用 RTS 帧和 CTS 帧进行信道预约，也属于虚拟载波监听机制。

利用虚拟载波监听机制，站点只要监听到数据帧、RTS 帧或 CTS 帧中的任何一个，就能知道信道将被占用的持续时间，而不需要真正监听到信道上的信号，因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题。

例题：

802.11 无线局域网的 MAC 帧

数据帧

控制帧

CTS RTS ACK 都是控制帧

管理帧

地址一是中转站

地址二是出发站

地址三是最终目的站

access 与 trunk 详细解析 + 区别参考